refactored to add DSL management support in external files
diff --git a/org.eclipse.soa.mangrove.roots/trunk/org.eclipse.soa.mangrove.monitoring/src/org/eclipse/soa/mangrove/monitoring/BPMSMonitoringHandler.java b/org.eclipse.soa.mangrove.roots/trunk/org.eclipse.soa.mangrove.monitoring/src/org/eclipse/soa/mangrove/monitoring/BPMSMonitoringHandler.java
index 9b304b0..537b3bd 100755
--- a/org.eclipse.soa.mangrove.roots/trunk/org.eclipse.soa.mangrove.monitoring/src/org/eclipse/soa/mangrove/monitoring/BPMSMonitoringHandler.java
+++ b/org.eclipse.soa.mangrove.roots/trunk/org.eclipse.soa.mangrove.monitoring/src/org/eclipse/soa/mangrove/monitoring/BPMSMonitoringHandler.java
@@ -15,23 +15,36 @@
 

 	String activityFileName = "C:\\XRCE_PushMonitoring_FileStore\\monitoring_Activity.info";

 	String processFileName = "C:\\XRCE_PushMonitoring_FileStore\\monitoring_Process.info";

+	String soaFileName = "C:\\XRCE_PushMonitoring_FileStore\\monitoring_Activity_SOA.info";

+	String dslActivityMapFileName = "C:\\XRCE_PushMonitoring_FileStore\\dsl_bpms_activity_map.info";

 	private Path activityFile;

 	private Path processFile;

+	private Path dslActivityFile;

+	private HashMap<String, DSLActivityandServiceMap> conceptsActivitiesAndServiceMap; //maps the concepts in the DSL to the activity names and the webservice that together achieve its functionality

 	private HashMap<String, ActivityMonitoringData> activityExecMap; //maps activity names composed of ProcessName+ActivityName to activity execution details

 	private HashMap<String, Vector<Long>> activityExecHistoryMap; //maps activity names composed of ProcessName+ActivityName to activity execution history 

 	private HashMap<String, ProcessMonitoringData> processExecMap; //maps activity names composed of ProcessName+ActivityName to activity execution details

-	private HashMap<String, Vector<Long>> processExecHistoryMap; //maps activity names composed of ProcessName+ActivityName to activity execution history 

+	private HashMap<String, Vector<Long>> processExecHistoryMap; //maps activity names composed of ProcessName+ActivityName to activity execution history

+	private HashMap<String, Long> serviceLastExecTime = new HashMap<String, Long>()

+				{{put("CRM Update",new Long(8368)); put("Postage Carriers",new Long(10349)); put("Insurance Provider", new Long(9797));}};

 

 	

 	

+	public HashMap<String, Long> getServiceLastExecTime() {

+		return serviceLastExecTime;

+	}

+

 	public BPMSMonitoringHandler() {

 		activityFile = Paths.get(activityFileName);

 		processFile = Paths.get(processFileName);

+		dslActivityFile = Paths.get(dslActivityMapFileName);

 		initializeActivityDataStructures();

 		initializeProcessDataStructures();

+		initializeDSLDataStructures();

 		try {

 			processActivityMonitoringFile();

 			processProcessMonitoringFile();

+			processDSLActivityFile();

 		} catch (IOException e) {

 			System.err.println("Could not process the monitoring file at " + activityFileName);

 		}

@@ -43,6 +56,48 @@
 		

 	}

 	

+	private void processDSLActivityFile() throws IOException {

+		Scanner s = new Scanner(dslActivityFile);

+		while (s.hasNextLine()){

+			DSLActivityandServiceMap data = processMappingLine(s.nextLine());

+			if (null!=data){

+				this.conceptsActivitiesAndServiceMap.put(data.getConceptName(), data);

+			}

+		}

+		s.close();

+		//this.printDataStructures();

+	}

+

+	private DSLActivityandServiceMap processMappingLine(String nextLine) {

+		//System.out.println("Processing Mapping Line: " + nextLine);

+		DSLActivityandServiceMap data = new DSLActivityandServiceMap();

+		Scanner ls = new Scanner(nextLine);

+		ls.useDelimiter("::");

+		try{

+			if (ls.hasNext()){

+				data.setConceptName(ls.next());

+				//System.out.println("Concept Name: " + data.getConceptName());

+

+				if(ls.hasNext()){

+					// add the list of activities

+					Vector<String> activityNames = new Vector<String>();

+					Scanner aNames = new Scanner(ls.next());

+					aNames.useDelimiter(";");

+					while(aNames.hasNext()) activityNames.add(aNames.next());

+					data.setActivityNames(activityNames);

+					aNames.close();

+				}

+				

+				if(ls.hasNext()) data.setServiceName(ls.next());

+			}

+		} catch (Exception e){

+			data = null;

+		}

+

+		ls.close();

+		return data;

+	}

+	

 	private void processProcessMonitoringFile() throws IOException {

 		Scanner s = new Scanner(processFile);

 		initializeProcessDataStructures();

@@ -50,6 +105,7 @@
 			ProcessMonitoringData data = processProcessLine (s.nextLine());

 			if (null!=data){

 				processExecMap.put(data.getProcessName(), data);

+				//System.out.println("Processed PROCESS: " + data.getProcessName());

 			}

 		}

 		s.close();

@@ -104,21 +160,26 @@
 		processExecHistoryMap = new HashMap<String, Vector<Long>>();		

 	}

 	

+	private void initializeDSLDataStructures(){

+		conceptsActivitiesAndServiceMap = new HashMap<String, DSLActivityandServiceMap>();	

+	}

+	

 	public static void main(String[] args) {

 		BPMSMonitoringHandler h = new BPMSMonitoringHandler();

+		//h.printDataStructures();

 		try {

-			ActivityMonitoringData d = h.findLatestActivityMonitoringData("TimeSheetBP_1", "ViewTimeSheets");

+			ActivityMonitoringData d = h.findLatestActivityMonitoringData("Shipment_Process-Hardware", "FillaPostlabel");

 			if (null!=d) System.out.println("FOUND Latest Activity Data: " + d.getAvgExecTime());

-			Vector v = h.getActivityExecutionTimes("TimeSheetBP_1", "ViewTimeSheets");

+			Vector v = h.getActivityExecutionTimes("Shipment_Process-Hardware", "FillaPostlabel");

 			System.out.println(v);

 			

-			ProcessMonitoringData p = h.findLatestProcessMonitoringData("TimeSheetBP_1");

+			ProcessMonitoringData p = h.findLatestProcessMonitoringData("Shipment_Process-Hardware");

 			if (null!=p) {

 				System.out.println("FOUND Latest Data: " + p.getAvgExecTime());

 				Vector act = p.getPerformedActivityNames();

 				System.out.println("Executed activities for last instance " + p.getProcID() + ": " + act);

 			}

-			Vector vp = h.getProcessExecutionTimes("TimeSheetBP_1");

+			Vector vp = h.getProcessExecutionTimes("Shipment_Process-Hardware");

 			System.out.println(vp);

 			

 		} catch (IOException e) {

@@ -152,6 +213,10 @@
 			System.out.println("Activity: " + key + " :: "+ activityExecHistoryMap.get(key));

 		}

 

+		System.out.println("Printing Concept TO Activities and Service Map");

+		for (String key : conceptsActivitiesAndServiceMap.keySet()){

+			System.out.println("Concept: " + key + " :: "+ conceptsActivitiesAndServiceMap.get(key));

+		}

 		

 	}

 

@@ -193,6 +258,14 @@
 		return v;

 	}

 	

+	public DSLActivityandServiceMap getConceptActivitiesAndServiceMap(String conceptName) {

+		DSLActivityandServiceMap m = null;

+		if ((null!=conceptName) && conceptsActivitiesAndServiceMap.containsKey(conceptName)){

+			m = conceptsActivitiesAndServiceMap.get(conceptName);

+		}

+		return m;

+	}

+	

 	private ActivityMonitoringData processActivityLine(String nextLine) {

 		ActivityMonitoringData data = new ActivityMonitoringData();

 		Scanner ls = new Scanner(nextLine);

diff --git a/org.eclipse.soa.mangrove.roots/trunk/org.eclipse.soa.mangrove.monitoring/src/org/eclipse/soa/mangrove/monitoring/DSLActivityandServiceMap.java b/org.eclipse.soa.mangrove.roots/trunk/org.eclipse.soa.mangrove.monitoring/src/org/eclipse/soa/mangrove/monitoring/DSLActivityandServiceMap.java
new file mode 100755
index 0000000..b48ca8c
--- /dev/null
+++ b/org.eclipse.soa.mangrove.roots/trunk/org.eclipse.soa.mangrove.monitoring/src/org/eclipse/soa/mangrove/monitoring/DSLActivityandServiceMap.java
@@ -0,0 +1,29 @@
+package org.eclipse.soa.mangrove.monitoring;

+

+import java.util.Vector;

+

+public class DSLActivityandServiceMap {

+

+	public String getConceptName() {

+		return conceptName;

+	}

+	public void setConceptName(String conceptName) {

+		this.conceptName = conceptName;

+	}

+	public Vector<String> getActivityNames() {

+		return activityNames;

+	}

+	public void setActivityNames(Vector<String> activityNames) {

+		this.activityNames = activityNames;

+	}

+	public String getServiceName() {

+		return serviceName;

+	}

+	public void setServiceName(String serviceName) {

+		this.serviceName = serviceName;

+	}

+	private String conceptName;

+	private Vector<String> activityNames;

+	private String serviceName;

+	

+}