FIX ALL POSSIBLE SONAR ISSUES IN HOLMES
[holmes/engine-management.git] / engine-d / src / main / java / org / onap / holmes / engine / manager / DroolsEngine.java
index 3740f18..bb3795d 100644 (file)
@@ -63,8 +63,12 @@ import org.onap.holmes.engine.wrapper.RuleMgtWrapper;
 @Service\r
 public class DroolsEngine {\r
 \r
-    private final static int ENABLE = 1;\r
+    private static final int ENABLE = 1;\r
+    public static final String UTF_8 = "UTF-8";\r
+    public static final String K_BASE = "KBase";\r
+    private static final String RULES_FILE_NAME = "src/main/resources/rules/rule.drl";\r
     private final Set<String> packageNames = new HashSet<String>();\r
+\r
     @Inject\r
     private RuleMgtWrapper ruleMgtWrapper;\r
 \r
@@ -139,8 +143,8 @@ public class DroolsEngine {
     private void deployRuleFromDB(String ruleContent) throws CorrelationException {\r
         avoidDeployBug();\r
         StringReader reader = new StringReader(ruleContent);\r
-        kfs.write("src/main/resources/rules/rule.drl",\r
-                this.resources.newReaderResource(reader,"UTF-8").setResourceType(ResourceType.DRL));\r
+        kfs.write(RULES_FILE_NAME,\r
+                this.resources.newReaderResource(reader, UTF_8).setResourceType(ResourceType.DRL));\r
         kieBuilder = ks.newKieBuilder(kfs).buildAll();\r
         try {\r
             InternalKieModule internalKieModule = (InternalKieModule)kieBuilder.getKieModule();\r
@@ -155,14 +159,14 @@ public class DroolsEngine {
         throws CorrelationException {\r
         avoidDeployBug();\r
         StringReader reader = new StringReader(rule.getContent());\r
-        kfs.write("src/main/resources/rules/rule.drl",\r
-                this.resources.newReaderResource(reader,"UTF-8").setResourceType(ResourceType.DRL));\r
+        kfs.write(RULES_FILE_NAME,\r
+                this.resources.newReaderResource(reader, UTF_8).setResourceType(ResourceType.DRL));\r
         kieBuilder = ks.newKieBuilder(kfs).buildAll();\r
 \r
         judgeRuleContent(locale, kieBuilder, true);\r
 \r
         InternalKieModule internalKieModule = (InternalKieModule)kieBuilder.getKieModule();;\r
-        String packageName = internalKieModule.getKnowledgePackagesForKieBase("KBase").iterator().next().getName();\r
+        String packageName = internalKieModule.getKnowledgePackagesForKieBase(K_BASE).iterator().next().getName();\r
         try {\r
             kieContainer.updateToVersion(internalKieModule.getReleaseId());\r
         } catch (Exception e) {\r
@@ -191,8 +195,8 @@ public class DroolsEngine {
         throws CorrelationException {\r
         StringReader reader = new StringReader(content);\r
 \r
-        kfs.write("src/main/resources/rules/rule.drl",\r
-                this.resources.newReaderResource(reader,"UTF-8").setResourceType(ResourceType.DRL));\r
+        kfs.write(RULES_FILE_NAME,\r
+                this.resources.newReaderResource(reader, UTF_8).setResourceType(ResourceType.DRL));\r
 \r
         kieBuilder = ks.newKieBuilder(kfs).buildAll();\r
 \r
@@ -216,23 +220,29 @@ public class DroolsEngine {
         if (internalKieModule == null) {\r
             throw new CorrelationException("There are errors in the rule!");\r
         }\r
-        String packageName = internalKieModule.getKnowledgePackagesForKieBase("KBase").iterator().next().getName();\r
+        String packageName = internalKieModule.getKnowledgePackagesForKieBase(K_BASE).iterator().next().getName();\r
 \r
         if (queryAllPackage().contains(packageName) && judgePackageName) {\r
             throw new CorrelationException("The rule " + packageName + " already exists in the drools engine.");\r
         }\r
     }\r
 \r
-    public void putRaisedIntoStream(VesAlarm raiseAlarm) {\r
-        FactHandle factHandle = this.kieSession.getFactHandle(raiseAlarm);\r
+    public void putRaisedIntoStream(VesAlarm alarm) {\r
+        FactHandle factHandle = this.kieSession.getFactHandle(alarm);\r
         if (factHandle != null) {\r
             Object obj = this.kieSession.getObject(factHandle);\r
             if (obj != null && obj instanceof VesAlarm) {\r
-                raiseAlarm.setRootFlag(((VesAlarm) obj).getRootFlag());\r
+                alarm.setRootFlag(((VesAlarm) obj).getRootFlag());\r
             }\r
             this.kieSession.delete(factHandle);\r
+            \r
+            if (alarm.getAlarmIsCleared() == 1) {\r
+                alarmInfoDao.deleteClearedAlarm(convertVesAlarm2AlarmInfo(alarm));\r
+            }\r
+        } else {\r
+            this.kieSession.insert(alarm);\r
         }\r
-        this.kieSession.insert(raiseAlarm);\r
+\r
         this.kieSession.fireAllRules();\r
 \r
     }\r
@@ -248,7 +258,7 @@ public class DroolsEngine {
 \r
     private KieFileSystem createKieFileSystemWithKProject(KieServices ks) {\r
         KieModuleModel kieModuleModel = ks.newKieModuleModel();\r
-        KieBaseModel kieBaseModel = kieModuleModel.newKieBaseModel("KBase")\r
+        KieBaseModel kieBaseModel = kieModuleModel.newKieBaseModel(K_BASE)\r
                 .addPackage("rules")\r
                 .setDefault(true)\r
                 .setEqualsBehavior(EqualityBehaviorOption.EQUALITY)\r
@@ -265,10 +275,10 @@ public class DroolsEngine {
     private void avoidDeployBug() {\r
         String tmp = Math.random() + "";\r
         String rule = "package justInOrderToAvoidDeployBug" + tmp.substring(2);\r
-        kfs.write("src/main/resources/rules/rule.drl", rule);\r
+        kfs.write(RULES_FILE_NAME, rule);\r
         kieBuilder = ks.newKieBuilder(kfs).buildAll();\r
         InternalKieModule internalKieModule = (InternalKieModule)kieBuilder.getKieModule();\r
-        String packageName = internalKieModule.getKnowledgePackagesForKieBase("KBase").iterator().next().getName();\r
+        String packageName = internalKieModule.getKnowledgePackagesForKieBase(K_BASE).iterator().next().getName();\r
         kieRepository.addKieModule(internalKieModule);\r
         kieContainer.updateToVersion(internalKieModule.getReleaseId());\r
 \r
@@ -294,4 +304,18 @@ public class DroolsEngine {
         return vesAlarm;\r
     }\r
 \r
+    private AlarmInfo convertVesAlarm2AlarmInfo(VesAlarm vesAlarm){\r
+        AlarmInfo alarmInfo = new AlarmInfo();\r
+        alarmInfo.setEventId(vesAlarm.getEventId());\r
+        alarmInfo.setEventName(vesAlarm.getEventName());\r
+        alarmInfo.setStartEpochMicroSec(vesAlarm.getStartEpochMicrosec());\r
+        alarmInfo.setLastEpochMicroSec(vesAlarm.getLastEpochMicrosec());\r
+        alarmInfo.setSourceId(vesAlarm.getSourceId());\r
+        alarmInfo.setSourceName(vesAlarm.getSourceName());\r
+        alarmInfo.setAlarmIsCleared(vesAlarm.getAlarmIsCleared());\r
+        alarmInfo.setRootFlag(vesAlarm.getRootFlag());\r
+\r
+        return alarmInfo;\r
+    }\r
+\r
 }\r