Port champ-microservice project restructure
[aai/champ.git] / champ-lib / champ-core / src / main / java / org / onap / aai / champcore / event / ChampEvent.java
  * ============LICENSE_END============================================
  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  */
-package org.onap.aai.champ.event;
+package org.onap.aai.champcore.event;
 
 
 import java.io.IOException;
 
-import org.onap.aai.champ.model.ChampObject;
-import org.onap.aai.champ.model.ChampObjectIndex;
-import org.onap.aai.champ.model.ChampPartition;
-import org.onap.aai.champ.model.ChampRelationship;
-import org.onap.aai.champ.model.ChampRelationshipIndex;
+import org.onap.aai.champcore.model.ChampObject;
+import org.onap.aai.champcore.model.ChampObjectIndex;
+import org.onap.aai.champcore.model.ChampPartition;
+import org.onap.aai.champcore.model.ChampRelationship;
+import org.onap.aai.champcore.model.ChampRelationshipIndex;
 
 import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
@@ -49,11 +50,13 @@ public class ChampEvent {
   
   private ChampOperation         operation;
   private long                   timestamp;
+  private String                 transactionId     = null;
   private ChampObject            vertex            = null;
   private ChampRelationship      relationship      = null;
   private ChampPartition         partition         = null;
   private ChampObjectIndex       objectIndex       = null;
   private ChampRelationshipIndex relationshipIndex = null;
+  private String                 dbTransactionId   = null;
   
   
   public static Builder builder() {
@@ -76,6 +79,15 @@ public class ChampEvent {
     this.timestamp = timestamp;
   }
   
+  @JsonProperty("transaction-id")
+  public String getTransactionId() {
+    return transactionId;
+  }
+  
+  public void setTransactionId(String transactionId) {
+    this.transactionId = transactionId;
+  }
+  
   public ChampObject getVertex() {
     return vertex;
   }
@@ -115,7 +127,15 @@ public class ChampEvent {
   public void setRelationshipIndex(ChampRelationshipIndex relationshipIndex) {
     this.relationshipIndex = relationshipIndex;
   }
-  
+
+  @JsonProperty("database-transaction-id")
+  public String getDbTransactionId () { return dbTransactionId; }
+
+
+  public void setDbTransactionId ( String id ) { this.dbTransactionId = id; }
+
+
+
   public String toJson() {
     
     ObjectMapper mapper = new ObjectMapper();
@@ -135,6 +155,7 @@ public class ChampEvent {
   }
   @Override
   public String toString() {
+
     return toJson();
   }
   
@@ -176,10 +197,16 @@ public class ChampEvent {
       event.relationshipIndex = relationshipIndex;
       return this;
     }
+
    
     public ChampEvent build() {
       
       event.setTimestamp(System.currentTimeMillis());
+      
+      // Set a unique transaction id on this event that can be used by downstream entities
+      // for log correlation.
+      event.setTransactionId(java.util.UUID.randomUUID().toString());
+      
       return event;
     }
   }