[jboss-svn-commits] JBL Code SVN: r25673 - labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/debug.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Mar 16 15:15:24 EDT 2009


Author: KrisVerlaenen
Date: 2009-03-16 15:15:24 -0400 (Mon, 16 Mar 2009)
New Revision: 25673

Modified:
   labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/debug/AuditView.java
Log:
JBRULES-1988: Make audit log backwards compatible for Drools4 format
 - The event types where changed in Drools5, need to load the events differently if Drools4 log

Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/debug/AuditView.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/debug/AuditView.java	2009-03-16 19:09:41 UTC (rev 25672)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/debug/AuditView.java	2009-03-16 19:15:24 UTC (rev 25673)
@@ -58,6 +58,7 @@
 	private String logFileName;
 	private IAction deleteAction;
 	private IAction refreshAction;
+	private boolean drools4 = false;
 	
     protected Viewer createViewer(Composite parent) {
 		final TreeViewer variablesViewer = new TreeViewer(parent);
@@ -81,12 +82,13 @@
     
     @SuppressWarnings("unchecked")
 	public void refresh() {
+    	drools4 = false;
     	if (logFileName == null) {
     		getViewer().setInput(null);
     		return;
     	}
         List<LogEvent> eventList = new ArrayList<LogEvent>();
-		try {
+        try {
 			XStream xstream = new XStream();
 			ObjectInputStream in = xstream.createObjectInputStream(
 				new FileReader(logFileName));
@@ -96,6 +98,7 @@
                 	if (object instanceof LogEvent) {
                 		eventList.add((LogEvent) object);
                 	} else if (object instanceof List) {
+                		drools4 = true;
                 		eventList.addAll((List<LogEvent>) object);
                 	} else {
                 		throw new IllegalArgumentException("Unexpected element in log: " + object);
@@ -113,7 +116,11 @@
 		} catch (Throwable t) {
 			DroolsEclipsePlugin.log(t);
 		}
-        getViewer().setInput(createEventList(eventList));
+		if (drools4) {
+			getViewer().setInput(createDrools4EventList(eventList));
+		} else {
+			getViewer().setInput(createEventList(eventList));
+		}
         // TODO: this is necessary because otherwise, the show cause action
         // cannot find the cause event if it hasn't been shown yet
         ((TreeViewer) getViewer()).expandAll();
@@ -327,6 +334,175 @@
 		return events;
     }
     
+    protected List createDrools4EventList(List logEvents) {
+		Iterator iterator = logEvents.iterator();
+		List events = new ArrayList();
+		Event currentBeforeActivationEvent = null;
+		Event currentBeforePackageEvent = null;
+		List newActivations = new ArrayList();
+		Map activationMap = new HashMap();
+		Map objectMap = new HashMap();
+		while (iterator.hasNext()) {
+			LogEvent inEvent = (LogEvent) iterator.next();
+			Event event = new Event(inEvent.getType());
+			switch (inEvent.getType()) {
+				case LogEvent.INSERTED:
+					ObjectLogEvent inObjectEvent = (ObjectLogEvent) inEvent;
+					event.setString("Object inserted (" + inObjectEvent.getFactId() + "): " + inObjectEvent.getObjectToString());
+					if (currentBeforeActivationEvent != null) {
+						currentBeforeActivationEvent.addSubEvent(event);
+					} else {
+						events.add(event);
+					}
+					event.addSubEvents(newActivations);
+					newActivations.clear();
+					objectMap.put(new Long(((ObjectLogEvent) inEvent).getFactId()), event);
+					break;
+				case LogEvent.UPDATED:
+					inObjectEvent = (ObjectLogEvent) inEvent;
+					event.setString("Object updated (" + inObjectEvent.getFactId() + "): " + inObjectEvent.getObjectToString());
+					if (currentBeforeActivationEvent != null) {
+						currentBeforeActivationEvent.addSubEvent(event);
+					} else {
+						events.add(event);
+					}
+					event.addSubEvents(newActivations);
+					newActivations.clear();
+					Event assertEvent = (Event) objectMap.get(new Long(((ObjectLogEvent) inEvent).getFactId()));
+					if (assertEvent != null) {
+						event.setCauseEvent(assertEvent);
+					}
+					break;
+				case LogEvent.RETRACTED:
+					inObjectEvent = (ObjectLogEvent) inEvent;
+					event.setString("Object removed (" + inObjectEvent.getFactId() + "): " + inObjectEvent.getObjectToString());
+					if (currentBeforeActivationEvent != null) {
+						currentBeforeActivationEvent.addSubEvent(event);
+					} else {
+						events.add(event);
+					}
+					event.addSubEvents(newActivations);
+					newActivations.clear();
+					assertEvent = (Event) objectMap.get(new Long(((ObjectLogEvent) inEvent).getFactId()));
+					if (assertEvent != null) {
+						event.setCauseEvent(assertEvent);
+					}
+					break;
+				case LogEvent.ACTIVATION_CREATED:
+					ActivationLogEvent inActivationEvent = (ActivationLogEvent) inEvent;
+					event.setString("Activation created: Rule " + inActivationEvent.getRule() + " " + inActivationEvent.getDeclarations());
+					newActivations.add(event);
+					activationMap.put(((ActivationLogEvent) inEvent).getActivationId(), event);
+					break;
+				case LogEvent.ACTIVATION_CANCELLED:
+					inActivationEvent = (ActivationLogEvent) inEvent;
+					event.setString("Activation cancelled: Rule " + inActivationEvent.getRule() + " " + inActivationEvent.getDeclarations());
+					newActivations.add(event);
+					event.setCauseEvent((Event) activationMap.get(((ActivationLogEvent) inEvent).getActivationId()));
+					break;
+				case LogEvent.BEFORE_ACTIVATION_FIRE:
+					inActivationEvent = (ActivationLogEvent) inEvent;
+					event.setString("Activation executed: Rule " + inActivationEvent.getRule() + " " + inActivationEvent.getDeclarations());
+					events.add(event);
+					currentBeforeActivationEvent = event;
+					event.setCauseEvent((Event) activationMap.get(((ActivationLogEvent) inEvent).getActivationId()));
+					break;
+				case LogEvent.AFTER_ACTIVATION_FIRE:
+					currentBeforeActivationEvent = null;
+					break;
+				case 8:
+					RuleFlowLogEvent inRuleFlowEvent = (RuleFlowLogEvent) inEvent;
+					event.setString("RuleFlow started: " + inRuleFlowEvent.getProcessName() + "[" + inRuleFlowEvent.getProcessId() + "]");
+					if (currentBeforeActivationEvent != null) {
+						currentBeforeActivationEvent.addSubEvent(event);
+					} else {
+						events.add(event);
+					}
+					break;
+				case 9:
+					inRuleFlowEvent = (RuleFlowLogEvent) inEvent;
+					event.setString("RuleFlow completed: " + inRuleFlowEvent.getProcessName() + "[" + inRuleFlowEvent.getProcessId() + "]");
+					if (currentBeforeActivationEvent != null) {
+						currentBeforeActivationEvent.addSubEvent(event);
+					} else {
+						events.add(event);
+					}
+					break;
+				case 10:
+					RuleFlowGroupLogEvent inRuleFlowGroupEvent = (RuleFlowGroupLogEvent) inEvent;
+					event.setString("RuleFlowGroup activated: " + inRuleFlowGroupEvent.getGroupName() + "[size=" + inRuleFlowGroupEvent.getSize() + "]");
+					if (currentBeforeActivationEvent != null) {
+						currentBeforeActivationEvent.addSubEvent(event);
+					} else {
+						events.add(event);
+					}
+					break;
+				case 11:
+					inRuleFlowGroupEvent = (RuleFlowGroupLogEvent) inEvent;
+					event.setString("RuleFlowGroup deactivated: " + inRuleFlowGroupEvent.getGroupName() + "[size=" + inRuleFlowGroupEvent.getSize() + "]");
+					if (currentBeforeActivationEvent != null) {
+						currentBeforeActivationEvent.addSubEvent(event);
+					} else {
+						events.add(event);
+					}
+					break;
+				case 12:
+					RuleBaseLogEvent ruleBaseEvent = (RuleBaseLogEvent) inEvent;
+					event.setString("Package added: " + ruleBaseEvent.getPackageName());
+					if (currentBeforeActivationEvent != null) {
+						currentBeforeActivationEvent.addSubEvent(event);
+					} else {
+						events.add(event);
+					}
+					currentBeforePackageEvent = event;
+					break;
+				case 13:
+					currentBeforePackageEvent = null;
+					break;
+				case 14:
+					ruleBaseEvent = (RuleBaseLogEvent) inEvent;
+					event.setString("Package removed: " + ruleBaseEvent.getPackageName());
+					if (currentBeforeActivationEvent != null) {
+						currentBeforeActivationEvent.addSubEvent(event);
+					} else {
+						events.add(event);
+					}
+					currentBeforePackageEvent = event;
+					break;
+				case 15:
+					currentBeforePackageEvent = null;
+					break;
+				case 17:
+					ruleBaseEvent = (RuleBaseLogEvent) inEvent;
+					event.setString("Rule added: " + ruleBaseEvent.getRuleName());
+					if (currentBeforePackageEvent != null) {
+						currentBeforePackageEvent.addSubEvent(event);
+					} else if (currentBeforeActivationEvent != null) {
+						currentBeforeActivationEvent.addSubEvent(event);
+					} else {
+						events.add(event);
+					}
+					event.addSubEvents(newActivations);
+					newActivations.clear();
+					break;
+				case 19:
+					ruleBaseEvent = (RuleBaseLogEvent) inEvent;
+					event.setString("Rule removed: " + ruleBaseEvent.getRuleName());
+					if (currentBeforePackageEvent != null) {
+						currentBeforePackageEvent.addSubEvent(event);
+					} else if (currentBeforeActivationEvent != null) {
+						currentBeforeActivationEvent.addSubEvent(event);
+					} else {
+						events.add(event);
+					}
+					event.addSubEvents(newActivations);
+					newActivations.clear();
+					break;
+			}
+		}
+		return events;
+    }
+
     public void deleteLog() {
     	if (logFileName != null) {
     		File file = new File(logFileName);
@@ -478,6 +654,25 @@
 	    public Image getImage(Object element) {
 	    	if (element instanceof Event) {
 	    		int type = ((Event) element).getType();
+	    		if (drools4) {
+		    		switch (type) {
+		    			case LogEvent.INSERTED: return DroolsPluginImages.getImage(DroolsPluginImages.INSERT);
+		    			case LogEvent.UPDATED: return DroolsPluginImages.getImage(DroolsPluginImages.UPDATE);
+		    			case LogEvent.RETRACTED: return DroolsPluginImages.getImage(DroolsPluginImages.RETRACT);
+		    			case LogEvent.ACTIVATION_CREATED: return DroolsPluginImages.getImage(DroolsPluginImages.CREATE_ACTIVATION);
+		    			case LogEvent.ACTIVATION_CANCELLED: return DroolsPluginImages.getImage(DroolsPluginImages.CANCEL_ACTIVATION);
+		    			case LogEvent.BEFORE_ACTIVATION_FIRE: return DroolsPluginImages.getImage(DroolsPluginImages.EXECUTE_ACTIVATION);
+		    			case 8: return DroolsPluginImages.getImage(DroolsPluginImages.RULEFLOW);
+		    			case 9: return DroolsPluginImages.getImage(DroolsPluginImages.RULEFLOW);
+		                case LogEvent.BEFORE_RULEFLOW_NODE_TRIGGERED: return DroolsPluginImages.getImage(DroolsPluginImages.RULEFLOW_NODE_TRIGGERED);
+		    			case 10: return DroolsPluginImages.getImage(DroolsPluginImages.RULEFLOW_GROUP);
+		    			case 11: return DroolsPluginImages.getImage(DroolsPluginImages.RULEFLOW_GROUP);
+		    			case 12: return DroolsPluginImages.getImage(DroolsPluginImages.DROOLS);
+		    			case 14: return DroolsPluginImages.getImage(DroolsPluginImages.DROOLS);
+		    			case 17: return DroolsPluginImages.getImage(DroolsPluginImages.DROOLS);
+		    			case 19: return DroolsPluginImages.getImage(DroolsPluginImages.DROOLS);
+		    		}
+	    		}
 	    		switch (type) {
 	    			case LogEvent.INSERTED: return DroolsPluginImages.getImage(DroolsPluginImages.INSERT);
 	    			case LogEvent.UPDATED: return DroolsPluginImages.getImage(DroolsPluginImages.UPDATE);




More information about the jboss-svn-commits mailing list