1 package org.onap.vid.job.impl;
4 import com.fasterxml.jackson.annotation.JsonIgnore;
5 import com.fasterxml.jackson.core.JsonProcessingException;
6 import com.fasterxml.jackson.core.type.TypeReference;
7 import com.fasterxml.jackson.databind.ObjectMapper;
8 import com.google.common.base.MoreObjects;
9 import org.hibernate.annotations.Type;
10 import org.onap.vid.exceptions.GenericUncheckedException;
11 import org.onap.vid.job.Job;
12 import org.onap.vid.job.JobType;
13 import org.onap.vid.model.VidBaseEntity;
15 import javax.persistence.*;
16 import java.io.IOException;
20 @Table(name = "vid_job")
21 public class JobDaoImpl extends VidBaseEntity implements Job {
23 private static ObjectMapper objectMapper = new ObjectMapper();
24 private Job.JobStatus status;
26 private Map<JobType, Map<String, Object>> data = new TreeMap<>();
27 private UUID templateId;
29 private String takenBy;
30 private String userId;
31 private Integer age = 0;
32 private Integer indexInBulk = 0;
33 private Date deletedAt;
36 @Column(name = "JOB_ID", columnDefinition = "CHAR(36)")
37 @Type(type="org.hibernate.type.UUIDCharType")
38 public UUID getUuid() {
42 public void setUuid(UUID uuid) {
46 //we use uuid instead id. So making id Transient
51 return this.getUuid().getLeastSignificantBits();
54 @Column(name = "JOB_STATUS")
55 @Enumerated(EnumType.STRING)
56 public Job.JobStatus getStatus() {
60 public void setStatus(Job.JobStatus status) {
64 @Enumerated(EnumType.STRING)
65 @Column(name = "JOB_TYPE")
66 public JobType getType() {
70 public void setType(JobType type) {
74 //the columnDefinition is relevant only for UT
75 @Column(name = "JOB_DATA", columnDefinition = "VARCHAR(30000)")
76 public String getDataRaw() {
78 return objectMapper.writeValueAsString(data);
79 } catch (JsonProcessingException e) {
80 throw new GenericUncheckedException(e);
84 public void setDataRaw(String data) {
86 this.data = objectMapper.readValue(data, new TypeReference<Map<JobType, Map<String, Object>>>() {
88 } catch (IOException e) {
89 throw new GenericUncheckedException(e);
94 public Map<String, Object> getData() {
95 return data.get(getType());
99 public void setTypeAndData(JobType jobType, Map<String, Object> data) {
100 // *add* the data to map,
101 // then change state to given type
103 this.data.put(jobType, data);
106 @Column(name = "TAKEN_BY")
107 public String getTakenBy() {
111 public void setTakenBy(String takenBy) {
112 this.takenBy = takenBy;
115 @Type(type="org.hibernate.type.UUIDCharType")
116 @Column(name = "TEMPLATE_ID", columnDefinition = "CHAR(36)")
117 public UUID getTemplateId() {
122 public void setTemplateId(UUID templateId) {
123 this.templateId = templateId;
126 @Column(name="INDEX_IN_BULK")
127 public Integer getIndexInBulk() {
132 public void setIndexInBulk(Integer indexInBulk) {
133 this.indexInBulk = indexInBulk;
136 @Column(name="USER_ID")
137 public String getUserId() {
141 public void setUserId(String userId) {
142 this.userId = userId;
146 public Integer getAge() {
150 public void setAge(Integer age) {
154 @Column(name="DELETED_AT")
155 public Date getDeletedAt() {
159 public void setDeletedAt(Date deletedAt) {
160 this.deletedAt = deletedAt;
164 public boolean equals(Object o) {
165 if (this == o) return true;
166 if (!(o instanceof JobDaoImpl)) return false;
167 JobDaoImpl daoJob = (JobDaoImpl) o;
168 return Objects.equals(getUuid(), daoJob.getUuid());
172 public int hashCode() {
173 return Objects.hash(getUuid());
177 public String toString() {
178 return MoreObjects.toStringHelper(this)
179 .add("status", status)
181 .add("templateId", templateId)
183 .add("takenBy", takenBy)
184 .add("userId", userId)
186 .add("created", created)
187 .add("modified", modified)
188 .add("deletedAt", deletedAt)