View Javadoc
1   package de.dlr.shepard.common.mongoDB;
2   
3   import com.fasterxml.jackson.annotation.JsonFormat;
4   import com.fasterxml.jackson.annotation.JsonIgnore;
5   import de.dlr.shepard.common.neo4j.entities.HasCreationDate;
6   import de.dlr.shepard.common.util.HasId;
7   import java.util.Date;
8   import lombok.Data;
9   import lombok.NoArgsConstructor;
10  import org.bson.codecs.pojo.annotations.BsonIgnore;
11  import org.eclipse.microprofile.openapi.annotations.media.Schema;
12  import org.neo4j.ogm.annotation.GeneratedValue;
13  import org.neo4j.ogm.annotation.Id;
14  import org.neo4j.ogm.annotation.Index;
15  import org.neo4j.ogm.annotation.typeconversion.DateLong;
16  
17  @Data
18  @NoArgsConstructor
19  public abstract class AbstractMongoObject implements HasId, HasCreationDate {
20  
21    @Id
22    @GeneratedValue
23    @JsonIgnore
24    private Long id;
25  
26    @Index
27    @BsonIgnore
28    @Schema(readOnly = true)
29    private String oid;
30  
31    @Schema(readOnly = true, nullable = true, format = "date-time", example = "2024-08-15T11:18:44.632+00:00")
32    @JsonFormat(shape = JsonFormat.Shape.STRING)
33    @DateLong
34    private Date createdAt;
35  
36    /**
37     * Constructor
38     *
39     * @param oid Object Identifier
40     */
41    protected AbstractMongoObject(String oid) {
42      this.oid = oid;
43    }
44  
45    protected AbstractMongoObject(String oid, Date createdAt) {
46      this.oid = oid;
47      this.createdAt = createdAt;
48    }
49  
50    @BsonIgnore
51    @Override
52    public String getUniqueId() {
53      return oid;
54    }
55  }