View Javadoc
1   package de.dlr.shepard.data.timeseries.migration.model;
2   
3   import de.dlr.shepard.common.util.StringListConverter;
4   import jakarta.persistence.Column;
5   import jakarta.persistence.Convert;
6   import jakarta.persistence.Entity;
7   import jakarta.persistence.EnumType;
8   import jakarta.persistence.Enumerated;
9   import jakarta.persistence.GeneratedValue;
10  import jakarta.persistence.GenerationType;
11  import jakarta.persistence.Id;
12  import jakarta.persistence.Table;
13  import java.util.ArrayList;
14  import java.util.Date;
15  import java.util.List;
16  import java.util.regex.Pattern;
17  import lombok.Getter;
18  import lombok.NoArgsConstructor;
19  import lombok.Setter;
20  
21  @Getter
22  @Setter
23  @NoArgsConstructor
24  @Entity
25  @Table(name = "migration_tasks")
26  public class MigrationTaskEntity {
27  
28    public static final String SPLIT_CHAR_REPLACEMENT = "_";
29  
30    @Id
31    @GeneratedValue(strategy = GenerationType.IDENTITY)
32    private int id;
33  
34    @Column(name = "container_id", nullable = false, unique = true)
35    private long containerId;
36  
37    @Enumerated(EnumType.STRING)
38    @Column(nullable = false)
39    private MigrationTaskState state = MigrationTaskState.Planned;
40  
41    @Column(name = "created_at", nullable = false)
42    private Date createdAt = new Date();
43  
44    @Column(name = "started_at")
45    private Date startedAt;
46  
47    @Column(name = "finished_at")
48    private Date finishedAt;
49  
50    @Column(nullable = false, columnDefinition = "TEXT")
51    @Convert(converter = StringListConverter.class)
52    private List<String> errors = new ArrayList<String>();
53  
54    // json representation of a timeseries
55    private String timeseries;
56  
57    // influx database name
58    @Column(name = "database_name")
59    private String databaseName;
60  
61    public MigrationTaskEntity(long containerId) {
62      this.containerId = containerId;
63    }
64  
65    public void addError(String message) {
66      if (message == null || message.isBlank()) {
67        errors.add("UNKNOWN_ERROR");
68        return;
69      }
70      message = message.replaceAll(Pattern.quote(StringListConverter.SPLIT_CHAR), SPLIT_CHAR_REPLACEMENT);
71      errors.add(message);
72    }
73  }