diff options
Diffstat (limited to 'vid-app-common/src/main/java/org/onap/vid/model/JobAuditStatus.java')
-rw-r--r-- | vid-app-common/src/main/java/org/onap/vid/model/JobAuditStatus.java | 75 |
1 files changed, 71 insertions, 4 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/model/JobAuditStatus.java b/vid-app-common/src/main/java/org/onap/vid/model/JobAuditStatus.java index 614267990..3da41a419 100644 --- a/vid-app-common/src/main/java/org/onap/vid/model/JobAuditStatus.java +++ b/vid-app-common/src/main/java/org/onap/vid/model/JobAuditStatus.java @@ -1,20 +1,36 @@ package org.onap.vid.model; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; +import org.hibernate.annotations.DynamicUpdate; +import org.hibernate.annotations.SelectBeforeUpdate; import org.hibernate.annotations.Type; -import org.onap.vid.job.Job.JobStatus; import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.onap.vid.job.Job.JobStatus; import javax.persistence.*; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.Date; +import java.util.TimeZone; import java.util.UUID; +/* + The following 2 annotations let hibernate to update only fields that actually have been changed. + DynamicUpdate tell hibernate to update only dirty fields. + SelectBeforeUpdate is needed since during update the entity is detached (get and update are in different sessions) + */ +@DynamicUpdate() +@SelectBeforeUpdate() @Entity @Table(name = "vid_job_audit_status") public class JobAuditStatus extends VidBaseEntity { + public static final int MAX_ADDITIONAL_INFO_LENGTH = 2000; static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(JobAuditStatus.class); + private static final String defaultFormat = "E, dd MMM yyyy HH:mm:ss z"; public JobAuditStatus(){} @@ -32,7 +48,7 @@ public class JobAuditStatus extends VidBaseEntity { public JobAuditStatus(UUID jobId, String jobStatus, SourceStatus source, UUID requestId, String additionalInfo) { this(jobId, jobStatus, source); this.requestId = requestId; - this.additionalInfo = additionalInfo; + setAdditionalInfo(additionalInfo); } public JobAuditStatus(UUID jobId, String jobStatus, SourceStatus source, UUID requestId, String additionalInfo, Date date){ @@ -40,6 +56,37 @@ public class JobAuditStatus extends VidBaseEntity { this.created = date; } + public JobAuditStatus(String instanceName, String jobStatus, UUID requestId, String additionalInfo) { + this.instanceName = instanceName; + this.jobStatus = jobStatus; + this.requestId = requestId; + this.additionalInfo = additionalInfo; + + } + + public JobAuditStatus(String instanceName, String jobStatus, UUID requestId, String additionalInfo, String date, String instanceType) { + this(instanceName, jobStatus, requestId, additionalInfo); + this.created = dateStringToDate(date); + this.instanceType = instanceType; + } + + + private Date dateStringToDate(String dateAsString){ + if (StringUtils.isEmpty(dateAsString)) { + return null; + } + + DateFormat format = new SimpleDateFormat(defaultFormat); + format.setTimeZone(TimeZone.getTimeZone("GMT")); + Date date = null ; + try { + date = format.parse(dateAsString); + } catch (ParseException e) { + logger.error("There was an error to parse the string "+ dateAsString +" to date ", e.getMessage()); + } + return date; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -74,6 +121,8 @@ public class JobAuditStatus extends VidBaseEntity { } private UUID jobId; + private String instanceName; + private String instanceType; private String jobStatus; private SourceStatus source; private UUID requestId; @@ -128,13 +177,31 @@ public class JobAuditStatus extends VidBaseEntity { this.requestId = requestId; } - @Column(name = "ADDITIONAL_INFO") + @Column(name = "ADDITIONAL_INFO", columnDefinition = "VARCHAR(2000)") public String getAdditionalInfo() { return additionalInfo; } public void setAdditionalInfo(String additionalInfo) { - this.additionalInfo = additionalInfo; + this.additionalInfo = StringUtils.substring(additionalInfo, 0, MAX_ADDITIONAL_INFO_LENGTH); + } + + @Transient + public String getInstanceName() { + return instanceName; + } + + public void setInstanceName(String instanceName) { + this.instanceName = instanceName; + } + + @Transient + public String getInstanceType() { + return instanceType; + } + + public void setInstanceType(String instanceType) { + this.instanceType = instanceType; } @Transient |