Skip to content

Commit d1f88be

Browse files
author
Vali (Vasile Baluta)
committed
more integration
Change-Id: I793749e20dbd337f2e9ad493694fa1c77bbd814a
1 parent 89ae595 commit d1f88be

File tree

23 files changed

+712
-209
lines changed

23 files changed

+712
-209
lines changed

pom.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,13 @@
8484
<artifactId>commons-io</artifactId>
8585
<version>1.3.2</version>
8686
</dependency>
87-
87+
<!--
8888
<dependency>
8989
<groupId>org.slf4j</groupId>
9090
<artifactId>slf4j-log4j12</artifactId>
9191
<version>1.7.25</version>
9292
</dependency>
93+
-->
9394

9495
<!-- https://mvnrepository.com/artifact/org.json/json -->
9596
<dependency>
@@ -104,6 +105,11 @@
104105
<version>3.4.2</version>
105106
</dependency>
106107

108+
<dependency>
109+
<groupId>org.apache.qpid</groupId>
110+
<artifactId>qpid-broker</artifactId>
111+
<version>6.1.3</version>
112+
</dependency>
107113
</dependencies>
108114

109115
<properties>

src/main/java/com/ericsson/ei/handlers/EventHandler.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@ public class EventHandler {
1616
@Autowired
1717
RulesHandler rulesHandler;
1818

19+
@Autowired
20+
IdRulesHandler idRulesHandler;
21+
1922
public void eventReceived(String event) {
2023
RulesObject eventRules = rulesHandler.getRulesForEvent(event);
21-
24+
idRulesHandler.runIdRules(eventRules, event);
2225
}
2326

2427
public void eventReceived(byte[] message) {

src/main/java/com/ericsson/ei/handlers/ExtractionHandler.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,26 +43,26 @@ public void setMergeHandler(MergeHandler mergeHandler) {
4343
// this.historyIdRulesHandler = historyIdRulesHandler;
4444
// }
4545

46-
public void runExtraction(RulesObject rulesObject, String id, String event, String aggregatedObject) {
46+
public void runExtraction(RulesObject rulesObject, String id, String event, String aggregatedDbObject) {
4747
try {
4848
ObjectMapper mapper = new ObjectMapper();
49-
JsonNode aggregatedJsonObject = mapper.readValue(aggregatedObject, JsonNode.class);
49+
JsonNode aggregatedJsonObject = mapper.readValue(aggregatedDbObject, JsonNode.class);
5050
runExtraction(rulesObject, id, event, aggregatedJsonObject);
5151
} catch (Exception e) {
5252
log.info(e.getMessage(),e);
5353
}
5454
}
5555

56-
public void runExtraction(RulesObject rulesObject, String id, String event, JsonNode aggregatedObject) {
56+
public void runExtraction(RulesObject rulesObject, String id, String event, JsonNode aggregatedDbObject) {
5757
JsonNode extractedContent;
5858
extractedContent = extractContent(rulesObject, event);
5959

60-
if(aggregatedObject != null) {
60+
if(aggregatedDbObject != null) {
6161
String mergedContent = mergeHandler.mergeObject(id, rulesObject, event, extractedContent);
6262
//aggregationObject = processRulesHandler.runProcessRules(aggregationObject, rulesObject);
6363
//historyIdRulesHandler.runHistoryIdRules(aggregationObject, rulesObject, event);
6464
} else {
65-
mergeHandler.addNewObject(event, extractedContent);
65+
mergeHandler.addNewObject(event, extractedContent, rulesObject);
6666
}
6767
}
6868

src/main/java/com/ericsson/ei/handlers/IdRulesHandler.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ public class IdRulesHandler {
3030
@Autowired
3131
private WaitListStorageHandler waitListStorageHandler;
3232

33+
@Autowired
34+
private ObjectHandler objectHandler;
35+
3336
public void setJmesPathInterface(JmesPathInterface jmesPathInterface) {
3437
this.jmesPathInterface = jmesPathInterface;
3538
}
@@ -42,8 +45,8 @@ public void runIdRules(RulesObject rulesObject, String event) {
4245
for (final JsonNode idJsonObj : idsJsonObj) {
4346
id = idJsonObj.textValue();
4447
objects = matchIdRulesHandler.fetchObjectsById(rulesObject, id);
45-
for (String aggregatedObject:objects) {
46-
extractionHandler.runExtraction(rulesObject, id, event, aggregatedObject);
48+
for (String object:objects) {
49+
extractionHandler.runExtraction(rulesObject, id, event, object);
4750
}
4851
if (objects.size() == 0){
4952
if (rulesObject.isStartEventRules()) {
@@ -57,7 +60,7 @@ public void runIdRules(RulesObject rulesObject, String event) {
5760
}
5861

5962
public JsonNode getIds(RulesObject rulesObject, String event) {
60-
String idRule = rulesObject.getIdRules();
63+
String idRule = rulesObject.getIdentifyRules();
6164
JsonNode ids = null;
6265
try {
6366
ids = jmesPathInterface.runRuleOnEvent(idRule, event);

src/main/java/com/ericsson/ei/handlers/MatchIdRulesHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class MatchIdRulesHandler {
1616
public ArrayList<String> fetchObjectsById(RulesObject ruleObject, String id) {
1717
String matchIdString = ruleObject.getMatchIdRules();
1818
String fetchQuerry = replaceIdInRules(matchIdString, id);
19-
return objHandler.findObjectsById(fetchQuerry);
19+
return objHandler.findObjectsByCondition(fetchQuerry);
2020
}
2121

2222
public static String replaceIdInRules(String matchIdString, String id) {
Lines changed: 91 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,118 @@
11
package com.ericsson.ei.handlers;
22

3+
import java.io.IOException;
34
import java.util.ArrayList;
45

6+
import org.slf4j.Logger;
7+
import org.slf4j.LoggerFactory;
58
import org.springframework.beans.factory.annotation.Autowired;
69
import org.springframework.beans.factory.annotation.Value;
710
import org.springframework.stereotype.Component;
811

12+
import com.ericsson.ei.jmespath.JmesPathInterface;
913
import com.ericsson.ei.mongodbhandler.MongoDBHandler;
14+
import com.ericsson.ei.rules.RulesObject;
15+
import com.fasterxml.jackson.core.JsonParseException;
16+
import com.fasterxml.jackson.databind.JsonMappingException;
1017
import com.fasterxml.jackson.databind.JsonNode;
18+
import com.fasterxml.jackson.databind.ObjectMapper;
19+
import com.fasterxml.jackson.databind.node.ObjectNode;
1120

1221
@Component
1322
public class ObjectHandler {
23+
24+
static Logger log = (Logger) LoggerFactory.getLogger(ObjectHandler.class);
25+
1426
@Value("${aggregated.collection.name}") private String collectionName;
1527
@Value("${database.name}") private String databaseName;
1628

29+
public void setCollectionName(String collectionName) {
30+
this.collectionName = collectionName;
31+
}
32+
33+
public void setDatabaseName(String databaseName) {
34+
this.databaseName = databaseName;
35+
}
36+
1737
@Autowired
1838
private MongoDBHandler mongoDbHandler;
1939

20-
public boolean insertObject(String aggregatedObject) {
21-
return mongoDbHandler.insertDocument(databaseName, collectionName, aggregatedObject);
40+
public void setMongoDbHandler(MongoDBHandler mongoDbHandler) {
41+
this.mongoDbHandler = mongoDbHandler;
42+
}
43+
44+
@Autowired
45+
private JmesPathInterface jmespathInterface;
46+
47+
public void setJmespathInterface(JmesPathInterface jmespathInterface) {
48+
this.jmespathInterface = jmespathInterface;
49+
}
50+
51+
public boolean insertObject(String aggregatedObject, RulesObject rulesObject, String event, String id) {
52+
if (id == null) {
53+
String idRules = rulesObject.getIdRule();
54+
JsonNode idNode = jmespathInterface.runRuleOnEvent(idRules, event);
55+
id = idNode.textValue();
56+
}
57+
JsonNode document = prepareDocumentForInsertion(id, aggregatedObject);
58+
String documentStr = document.toString();
59+
return mongoDbHandler.insertDocument(databaseName, collectionName, documentStr);
60+
}
61+
62+
public boolean insertObject(JsonNode aggregatedObject, RulesObject rulesObject, String event, String id) {
63+
return insertObject(aggregatedObject.toString(), rulesObject, event, id);
64+
}
65+
66+
public boolean updateObject(String aggregatedObject, RulesObject rulesObject, String event, String id) {
67+
if (id == null) {
68+
String idRules = rulesObject.getIdRule();
69+
JsonNode idNode = jmespathInterface.runRuleOnEvent(idRules, event);
70+
id = idNode.textValue();
71+
}
72+
JsonNode document = prepareDocumentForInsertion(id, aggregatedObject);
73+
String documentStr = document.toString();
74+
return mongoDbHandler.updateDocument(databaseName, collectionName, documentStr, documentStr);
75+
}
76+
77+
public boolean updateObject(JsonNode aggregatedObject, RulesObject rulesObject, String event, String id) {
78+
return updateObject(aggregatedObject.toString(), rulesObject, event, id);
79+
}
80+
81+
public ArrayList<String> findObjectsByCondition(String condition) {
82+
return mongoDbHandler.find(databaseName, collectionName, condition);
2283
}
2384

24-
public void insertObject(JsonNode aggregatedObject) {
25-
insertObject(aggregatedObject.asText());
85+
public String findObjectById(String id) {
86+
String condition = "{\"_id\" : \"" + id + "\"}";
87+
String document = findObjectsByCondition(condition).get(0);
88+
JsonNode result = getAggregatedObject(document);
89+
if (result != null)
90+
return result.asText();
91+
return document;
2692
}
2793

28-
public ArrayList<String> findObjectsById(String condition) {
29-
return mongoDbHandler.getDocumentsOnCondition(databaseName, collectionName, condition);
94+
private JsonNode prepareDocumentForInsertion(String id, String object) {
95+
ObjectMapper mapper = new ObjectMapper();
96+
try {
97+
String docStr = "{\"_id\":\"" + id +"\"}";
98+
JsonNode document = mapper.readValue(docStr, JsonNode.class);
99+
((ObjectNode) document).put("aggregatedObject", object);
100+
return document;
101+
} catch (Exception e) {
102+
log.info(e.getMessage(),e);
103+
}
104+
return null;
30105
}
31106

32-
public String findObjectById(String condition) {
33-
return mongoDbHandler.getDocumentsOnCondition(databaseName, collectionName, condition).get(0);
107+
public JsonNode getAggregatedObject(String dbDocument) {
108+
ObjectMapper mapper = new ObjectMapper();
109+
try {
110+
JsonNode documentJson = mapper.readValue(dbDocument, JsonNode.class);
111+
JsonNode objectDoc = documentJson.get("aggregatedObject");
112+
return objectDoc;
113+
} catch (Exception e) {
114+
log.info(e.getMessage(),e);
115+
}
116+
return null;
34117
}
35118
}

src/main/java/com/ericsson/ei/jsonmerge/MergeHandler.java

Lines changed: 29 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import com.ericsson.ei.rules.RulesObject;
77

88
import com.fasterxml.jackson.databind.JsonNode;
9+
import com.fasterxml.jackson.databind.ObjectMapper;
10+
911
import org.slf4j.Logger;
1012
import org.slf4j.LoggerFactory;
1113
import org.json.*;
@@ -20,7 +22,6 @@ public class MergeHandler {
2022

2123
static Logger log = (Logger) LoggerFactory.getLogger(MergeHandler.class);
2224

23-
2425
@Value("${mergeidmarker}") private String mergeIdMarker;
2526

2627
@Autowired
@@ -67,7 +68,7 @@ public String mergeObject(String id, RulesObject rules, String event, JsonNode o
6768
log.info(e.getMessage(),e);
6869
}
6970

70-
objectHandler.insertObject(mergedObject);
71+
objectHandler.updateObject(mergedObject, rules, event, id);
7172
return mergedObject;
7273
}
7374

@@ -78,48 +79,39 @@ public String replaceIdMarkerInRules(String rule, String id){
7879
}
7980

8081
public String mergeContentToObject(String aggregatedObject, String preparedObject){
82+
JSONObject aggregatedJsonObject = null;
8183
try {
82-
JSONObject agregatedJsonObject = new JSONObject(aggregatedObject);
84+
aggregatedJsonObject = new JSONObject(aggregatedObject);
8385
JSONObject preparedJsonObject = new JSONObject(preparedObject);
84-
Iterator <String> preparedJsonKeys = preparedJsonObject.keys();
85-
while(preparedJsonKeys.hasNext()) {
86-
String preparedJsonKey = (String) preparedJsonKeys.next();
87-
if (agregatedJsonObject.get(preparedJsonKey).getClass().equals(JSONObject.class )){
88-
updateJsonObject((JSONObject) agregatedJsonObject.get(preparedJsonKey),
89-
(JSONObject) preparedJsonObject.get(preparedJsonKey));
90-
}else if(agregatedJsonObject.get(preparedJsonKey).getClass().equals(JSONArray.class )){
91-
updateJsonObject((JSONArray) agregatedJsonObject.get(preparedJsonKey),
92-
(JSONArray) preparedJsonObject.get(preparedJsonKey));
93-
}else{
94-
agregatedJsonObject.put(preparedJsonKey, preparedJsonObject.get(preparedJsonKey));
95-
}
96-
}
97-
return agregatedJsonObject.toString();
86+
updateJsonObject(aggregatedJsonObject, preparedJsonObject);
9887
}catch (Exception e){
9988
log.info(e.getMessage(),e);
10089
}
101-
return null;
102-
90+
return aggregatedJsonObject == null ? null : aggregatedJsonObject.toString();
10391
}
10492

10593
private void updateJsonObject(JSONObject aggregatedJsonObject, JSONObject preparedJsonObject){
106-
Iterator <String> preparedJsonKeys = preparedJsonObject.keys();
107-
while(preparedJsonKeys.hasNext()) {
108-
String preparedJsonKey = preparedJsonKeys.next();
109-
try {
110-
if (preparedJsonObject.get(preparedJsonKey).getClass().equals(JSONObject.class )){
111-
updateJsonObject((JSONObject) aggregatedJsonObject.get(preparedJsonKey),
112-
(JSONObject) preparedJsonObject.get(preparedJsonKey));
113-
}else if(preparedJsonObject.get(preparedJsonKey).getClass().equals(JSONArray.class )){
114-
updateJsonObject((JSONArray) aggregatedJsonObject.get(preparedJsonKey),
115-
(JSONArray) preparedJsonObject.get(preparedJsonKey));
94+
try {
95+
Iterator <String> preparedJsonKeys = preparedJsonObject.keys();
96+
while(preparedJsonKeys.hasNext()) {
97+
String preparedJsonKey = (String) preparedJsonKeys.next();
98+
if (aggregatedJsonObject.has(preparedJsonKey)) {
99+
Class valueClass = aggregatedJsonObject.get(preparedJsonKey).getClass();
100+
if (valueClass.equals(JSONObject.class )){
101+
updateJsonObject((JSONObject) aggregatedJsonObject.get(preparedJsonKey),
102+
(JSONObject) preparedJsonObject.get(preparedJsonKey));
103+
}else if(valueClass.equals(JSONArray.class )){
104+
updateJsonObject((JSONArray) aggregatedJsonObject.get(preparedJsonKey),
105+
(JSONArray) preparedJsonObject.get(preparedJsonKey));
106+
}else{
107+
aggregatedJsonObject.put(preparedJsonKey, preparedJsonObject.get(preparedJsonKey));
108+
}
116109
}else{
117110
aggregatedJsonObject.put(preparedJsonKey, preparedJsonObject.get(preparedJsonKey));
118111
}
119-
} catch (JSONException e) {
120-
// TODO Auto-generated catch block
121-
e.printStackTrace();
122112
}
113+
}catch (Exception e){
114+
log.info(e.getMessage(),e);
123115
}
124116
}
125117

@@ -140,30 +132,26 @@ private void updateJsonObject(JSONArray aggregatedJsonObject, JSONArray prepared
140132
element = preparedJsonObject.get(i);
141133
}
142134
} catch (JSONException e) {
143-
// TODO Auto-generated catch block
144-
e.printStackTrace();
135+
log.info(e.getMessage(),e);
145136
}
146137
}
147138
}
148139

149140
public String getAggregatedObject(String id){
150141
try {
151142
return objectHandler.findObjectById(id);
152-
// Method fetches the aggregated object from database based on given id
153-
// String aggregatedObject = new String("{id:eventId,type:eventType,test_cases:[{event_id:testcaseid1,test_data:testcase1data},{event_id:`testcaseid2`,test_data:testcase2data}]}");
154-
// return aggregatedObject;
155143
}catch (Exception e){
156144
log.info(e.getMessage(),e);
157145
}
158146
return null;
159147
}
160148

161-
public void addNewObject(String event, String newObject) {
162-
objectHandler.insertObject(newObject);
149+
public void addNewObject(String event, String newObject, RulesObject rulesObject) {
150+
objectHandler.insertObject(newObject, rulesObject, event, null);
163151
}
164152

165-
public void addNewObject(String event, JsonNode newObject) {
166-
objectHandler.insertObject(newObject);
153+
public void addNewObject(String event, JsonNode newObject, RulesObject rulesObject) {
154+
objectHandler.insertObject(newObject, rulesObject, event, null);
167155
}
168156

169157
public void updateEventToObjectMapInMemoryDB(String event, String object) {

0 commit comments

Comments
 (0)