]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcExecutionBuildListener.java
Improve SlcExecution notifications
[gpl/argeo-slc.git] / org.argeo.slc.core / src / main / java / org / argeo / slc / ant / SlcExecutionBuildListener.java
index f2bedce400527b3f8ed0e484d75edf0e346355fe..a8dd15c7d76f89ea5c8de3f8f672fee08458ef78 100644 (file)
@@ -28,12 +28,14 @@ public class SlcExecutionBuildListener extends AppenderSkeleton implements
 \r
        private List<SlcExecutionNotifier> notifiers = new Vector<SlcExecutionNotifier>();\r
 \r
-       // private Map<SlcExecution, SlcExecutionStep> currentStep = new\r
-       // HashMap<SlcExecution, SlcExecutionStep>();\r
-\r
-       // private SlcExecutionStep currentStep = null;\r
        private boolean currentStepNotified = true;\r
 \r
+       // CUSTOMIZATIONS\r
+       private boolean logBeforeFirstTarget = false;\r
+       private boolean firstTargetStarted = false;\r
+\r
+       private boolean logTaskStartFinish = true;\r
+\r
        public void init(Project project) {\r
                if (this.project != null) {\r
                        throw new SlcAntException("Build listener already initialized");\r
@@ -57,20 +59,23 @@ public class SlcExecutionBuildListener extends AppenderSkeleton implements
        }\r
 \r
        public void buildStarted(BuildEvent event) {\r
-               // SlcExecution slcExecution = getSlcExecution(event);\r
-\r
        }\r
 \r
        public void buildFinished(BuildEvent event) {\r
                SlcExecution slcExecution = getSlcExecution(event);\r
+               String oldStatus = slcExecution.getStatus();\r
                slcExecution.setStatus(SlcExecution.STATUS_FINISHED);\r
 \r
                for (SlcExecutionNotifier notifier : notifiers) {\r
-                       notifier.updateExecution(slcExecution);\r
+                       notifier.updateStatus(slcExecution, oldStatus, slcExecution\r
+                                       .getStatus());\r
                }\r
        }\r
 \r
        public void messageLogged(BuildEvent event) {\r
+               if (!shouldLog())\r
+                       return;\r
+\r
                SlcExecution slcExecution = getSlcExecution(event);\r
                if (slcExecution != null) {\r
                        if (currentStepNotified) {\r
@@ -87,6 +92,9 @@ public class SlcExecutionBuildListener extends AppenderSkeleton implements
        }\r
 \r
        public void targetStarted(BuildEvent event) {\r
+               if (!firstTargetStarted)\r
+                       firstTargetStarted = true;\r
+\r
                addLogStep(event, "Target " + event.getTarget().getName() + " started");\r
        }\r
 \r
@@ -95,23 +103,35 @@ public class SlcExecutionBuildListener extends AppenderSkeleton implements
        }\r
 \r
        public void taskStarted(BuildEvent event) {\r
+               if (!shouldLog())\r
+                       return;\r
+\r
                SlcExecution slcExecution = getSlcExecution(event);\r
                if (!currentStepNotified) {\r
                        notifyStep(slcExecution, slcExecution.currentStep());\r
                        currentStepNotified = true;\r
                }\r
 \r
-               slcExecution.getSteps().add(\r
-                               new SlcExecutionStep("LOG", "Task "\r
-                                               + event.getTask().getTaskName() + " started"));\r
+               String msg = null;\r
+               if (logTaskStartFinish)\r
+                       msg = "Task " + event.getTask().getTaskName() + " started";\r
+\r
+               slcExecution.getSteps().add(new SlcExecutionStep("LOG", msg));\r
+\r
                currentStepNotified = false;\r
        }\r
 \r
        public void taskFinished(BuildEvent event) {\r
+               if (!shouldLog())\r
+                       return;\r
+\r
                SlcExecution slcExecution = getSlcExecution(event);\r
                if (!currentStepNotified) {\r
-                       slcExecution.currentStep().addLog(\r
-                                       "Task " + event.getTask().getTaskName() + " finished");\r
+\r
+                       if (logTaskStartFinish)\r
+                               slcExecution.currentStep().addLog(\r
+                                               "Task " + event.getTask().getTaskName() + " finished");\r
+\r
                        notifyStep(slcExecution, slcExecution.currentStep());\r
                        currentStepNotified = true;\r
                }\r
@@ -193,15 +213,16 @@ public class SlcExecutionBuildListener extends AppenderSkeleton implements
 \r
        }\r
 \r
+       protected boolean shouldLog() {\r
+               return logBeforeFirstTarget || firstTargetStarted;\r
+       }\r
+\r
        @Override\r
        public void close() {\r
-               // TODO Auto-generated method stub\r
-\r
        }\r
 \r
        @Override\r
        public boolean requiresLayout() {\r
-               // TODO Auto-generated method stub\r
                return false;\r
        }\r
 \r