buildframework/helium/sf/java/diamonds/src/com/nokia/helium/diamonds/DiamondsExceptionStatusUpdate.java
changeset 628 7c4a911dc066
parent 587 85df38eb4012
--- a/buildframework/helium/sf/java/diamonds/src/com/nokia/helium/diamonds/DiamondsExceptionStatusUpdate.java	Wed Jun 16 16:51:40 2010 +0300
+++ b/buildframework/helium/sf/java/diamonds/src/com/nokia/helium/diamonds/DiamondsExceptionStatusUpdate.java	Fri Aug 13 14:59:05 2010 +0300
@@ -1,40 +1,32 @@
 /*
-* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: To update the build status to Diamonds with signals in case of build exceptions.
-*
-*/
- 
+ * Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: To update the build status to Diamonds with signals in case of build exceptions.
+ *
+ */
+
 package com.nokia.helium.diamonds;
 
+import java.text.SimpleDateFormat;
+import org.apache.tools.ant.types.DataType;
+import java.util.Hashtable;
+import java.util.Vector;
+import org.apache.log4j.Logger;
 import org.apache.tools.ant.Project;
 import com.nokia.helium.core.ant.HlmExceptionHandler;
-import com.nokia.helium.core.PropertiesSource;
-import com.nokia.helium.core.TemplateInputSource;
-import com.nokia.helium.core.TemplateProcessor;
 import com.nokia.helium.signal.SignalStatus;
 import com.nokia.helium.signal.SignalStatusList;
 
-import org.apache.log4j.Logger;
-
-import java.util.Hashtable;
-import java.util.Vector;
-import java.util.List;
-import java.io.File;
-import java.util.ArrayList;
-import java.text.SimpleDateFormat;
-import java.util.Properties;
-
 
 /**
  * Class to store the builds status and check the signal is present in the deferred signal list.
@@ -42,7 +34,7 @@
  * With collected signal information and build status send the generated XML file to diamonds client class
  * to update the information into diamonds
  */
-public class DiamondsExceptionStatusUpdate implements HlmExceptionHandler {
+public class DiamondsExceptionStatusUpdate extends DataType implements HlmExceptionHandler {
     private Logger log = Logger.getLogger(DiamondsExceptionStatusUpdate.class);
 
     /* Initiate build status to failed as this method will be invoked in case of exceptions only */
@@ -50,13 +42,10 @@
 
     private SimpleDateFormat timeFormat;
 
-    private TemplateProcessor templateProcessor;
-
     private Hashtable<String, String> signalInformation = new Hashtable<String, String>();
 
     private String outputFile,templateFile;
 
-    private List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
 
     /**
      * Implements the Exception method to update build status and signal information to diamonds.
@@ -65,109 +54,42 @@
      * @param e
      */
     @SuppressWarnings("unchecked")
-    public void handleException(Project project, String module, Exception e) {
-        templateProcessor = new TemplateProcessor();
-        Properties tempProperties = new Properties();
-        String templateDir = DiamondsConfig.getTemplateDir();
-        /* Initialize the diamond properties class to access the diamonds properties */
-        DiamondsProperties diamondsProperties = DiamondsConfig.getDiamondsProperties();
-        //Check, Is the diamonds listener is initialized?
-        if (DiamondsListenerImpl.isInitialized()) {
-            timeFormat = new SimpleDateFormat(DiamondsConfig.getDiamondsProperties().getProperty("tstampformat"));
-            /* Initialize the diamond client class required to update the information into diamonds. */
-            DiamondsClient diamondsClient = new DiamondsClient(project
-                    .getProperty(diamondsProperties.getProperty("host")),
-                    project.getProperty(diamondsProperties
-                            .getProperty("port")), project
-                            .getProperty(diamondsProperties
-                                    .getProperty("path")), project
-                                    .getProperty(diamondsProperties
-                                            .getProperty("mail")));
+    public void handleException(Project project, Exception e) {
+        Project prj = DiamondsListenerImpl.getProject();
 
-            /* Check is the signal is in deferred signal list?
-             * If so get the signal information like signal name, error message and target name
-             * 
-             */
-            if (SignalStatusList.getDeferredSignalList().hasSignalInList()) {
-                Vector<SignalStatus> signalList = SignalStatusList.getDeferredSignalList().getSignalStatusList();
-                timeFormat = new SimpleDateFormat(DiamondsConfig.getDiamondsProperties().getProperty("tstampformat"));
-                log.debug("Build Status = " + buildStatus);
-                int i = 0;
-                for (SignalStatus status : signalList) {
-                    signalInformation.put("diamond.signal.name." + i, status.getName());
-                    signalInformation.put("diamond.error.message." + i, status.getMessage());
-                    signalInformation.put("diamond.time.stamp." + i,new String(timeFormat.format(status.getTimestamp())));
-                    i += 1;
+        try {
+            if (DiamondsListenerImpl.isInitialized()) {
+                if (SignalStatusList.getDeferredSignalList().hasSignalInList()) {
+                    Vector<SignalStatus> signalList = SignalStatusList.getDeferredSignalList().getSignalStatusList();
+                    timeFormat = new SimpleDateFormat(DiamondsConfig.getTimeFormat());
+                    log.debug("Build Status = " + buildStatus);
+                    int i = 0;
+                    for (SignalStatus status : signalList) {
+                        prj.setProperty("diamond.signal.name." + i, status.getName());
+                        prj.setProperty("diamond.error.message." + i, status.getName());
+                        prj.setProperty("diamond.time.stamp." + i, new String(timeFormat.format(status.getTimestamp())));
+                        DiamondsListenerImpl.sendMessage("diamonds-signal");
+                    }
                 }
-                /* Generate the signal XML file required for diamonds to update the signal information,
-                 * using templateprocessor class
-                 */
-                templateFile = "diamonds_signal.xml.ftl";
-                outputFile = DiamondsConfig.getOutputDir() + File.separator + "diamonds-signal.xml";
-                sourceList.add(new PropertiesSource("diamondSignal", signalInformation));
-                templateProcessor.convertTemplate(templateDir, templateFile, outputFile,sourceList);
-
-                /* send the generated XML file for diamonds client to update the signals information into Diamonds */
-                log.debug("sending data to diamonds ..." + outputFile);
-                diamondsClient.sendData(outputFile, DiamondsConfig.getDiamondsProperties().getDiamondsBuildID());
-                try {
-                    DiamondsListenerImpl.mergeToFullResults(new File(outputFile));
-                } catch (DiamondsException de) {
-                    log.error("Not able to merge into full results XML file " + de.getMessage(), de);
+                if (SignalStatusList.getNowSignalList().hasSignalInList()) {
+                    Vector<SignalStatus> signalList = SignalStatusList.getNowSignalList().getSignalStatusList();
+                    buildStatus = "failed";
+                    timeFormat = new SimpleDateFormat(DiamondsConfig.getTimeFormat());
+                    log.debug("Build Status = " + buildStatus);
+                    int i = 0;
+                    for (SignalStatus status : signalList) {
+                        prj.setProperty("diamond.signal.name." + i, status.getName());
+                        prj.setProperty("diamond.error.message." + i, status.getMessage());
+                        prj.setProperty("diamond.time.stamp." + i,new String(timeFormat.format(status.getTimestamp())));
+                        i += 1;
+                    }
+                    DiamondsListenerImpl.sendMessage("diamonds.signal.message");
                 }
+                prj.setProperty("build.status", buildStatus);
+                DiamondsListenerImpl.sendMessage("diamonds.status.message");
             }
-            /* Check, is the signal is in now signal list?
-             * If so get the signal information like signal name, error message and target name
-             * 
-             */
-            if (SignalStatusList.getNowSignalList().hasSignalInList()) {
-                Vector<SignalStatus> signalList = SignalStatusList.getNowSignalList().getSignalStatusList();
-                buildStatus = "failed";
-                timeFormat = new SimpleDateFormat(DiamondsConfig.getDiamondsProperties().getProperty("tstampformat"));
-                log.debug("Build Status = " + buildStatus);
-                int i = 0;
-                for (SignalStatus status : signalList) {
-                    signalInformation.put("diamond.signal.name." + i, status.getName());
-                    signalInformation.put("diamond.error.message." + i, status.getMessage());
-                    signalInformation.put("diamond.time.stamp." + i,new String(timeFormat.format(status.getTimestamp())));
-                    i += 1;
-                }
-                /* Generate the signal XML file required for diamonds to update the signal information,
-                 * using templateprocessor class
-                 */
-                templateFile = "diamonds_signal.xml.ftl";
-                outputFile = DiamondsConfig.getOutputDir() + File.separator + "diamonds-signal.xml";
-                sourceList.add(new PropertiesSource("diamondSignal", signalInformation));
-                templateProcessor.convertTemplate(templateDir, templateFile, outputFile,sourceList);
-
-                /* send the generated XML file for diamonds client to update the signals information into Diamonds */
-                log.debug("sending data to diamonds ..." + outputFile);
-                diamondsClient.sendData(outputFile, DiamondsConfig.getDiamondsProperties().getDiamondsBuildID());
-                try {
-                    DiamondsListenerImpl.mergeToFullResults(new File(outputFile));
-                } catch (DiamondsException de) {
-                    log.error("Not able to merge into full results XML file " + de.getMessage(), de);
-                }
-            }
-            /* Generate the build status XML file required for diamonds to update the build status information,
-             * using templateprocessor class. 
-             */
-            tempProperties.put("build.status", buildStatus);
-            sourceList.add(new PropertiesSource("ant", project.getProperties()));
-            sourceList.add(new PropertiesSource("diamonds", tempProperties));
-            outputFile = DiamondsConfig.getOutputDir() + File.separator + "diamonds-status.xml";
-            templateFile = "diamonds_status.xml.ftl";
-            templateProcessor.convertTemplate(templateDir, templateFile, outputFile, sourceList);
-
-            /* send the generated XML file for diamonds client to update the build status into Diamonds */
-            log.debug("[DiamondsExceptionStatusUpdate] => sending data to diamonds ..." + outputFile);
-            diamondsClient.sendData(outputFile, DiamondsConfig.getDiamondsProperties().getDiamondsBuildID());
-            try {
-                DiamondsListenerImpl.mergeToFullResults(new File(outputFile));
-            } catch (DiamondsException de) {
-                log.error("Not able to merge into full results XML file " + de.getMessage(), de);
-            }
+        } catch (DiamondsException dex) {
+            log.debug("exception: ", dex);
         }
-
     }
 }
\ No newline at end of file