]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc/src/main/java/org/argeo/slc/ant/SAwareTask.java
Introduce active paths
[gpl/argeo-slc.git] / org.argeo.slc / src / main / java / org / argeo / slc / ant / SAwareTask.java
index 089c55828624a32a593d230794510a0ba1f45f3f..ef438c32e014083cf7e0624ea6ef34dc4a2e4ba1 100644 (file)
@@ -1,5 +1,7 @@
 package org.argeo.slc.ant;\r
 \r
+import java.util.List;\r
+\r
 import org.apache.tools.ant.BuildException;\r
 import org.apache.tools.ant.Target;\r
 \r
@@ -7,16 +9,16 @@ import org.argeo.slc.ant.spring.AbstractSpringTask;
 import org.argeo.slc.core.structure.StructurePath;\r
 import org.argeo.slc.core.structure.StructureRegistry;\r
 import org.argeo.slc.core.structure.tree.DefaultTreeSAware;\r
+import org.argeo.slc.core.structure.tree.TreeSAware;\r
 import org.argeo.slc.core.structure.tree.TreeSElement;\r
 import org.argeo.slc.core.structure.tree.TreeSPath;\r
 \r
 public abstract class SAwareTask extends AbstractSpringTask {\r
-       protected final DefaultTreeSAware sAware = new DefaultTreeSAware();\r
+       protected final TreeSAware sAware = new DefaultTreeSAware();\r
 \r
        @Override\r
        public void init() throws BuildException {\r
-               StructureRegistry registry = (StructureRegistry) getProject()\r
-                               .getReference(SlcProjectHelper.REF_STRUCTURE_REGISTRY);\r
+               StructureRegistry registry = getRegistry();\r
                Target target = getOwningTarget();\r
                TreeSElement projectElement = (TreeSElement) registry\r
                                .getElement(SlcProjectHelper.getProjectPath(getProject()));\r
@@ -38,6 +40,27 @@ public abstract class SAwareTask extends AbstractSpringTask {
                registry.register(sAware);\r
        }\r
 \r
+       @Override\r
+       public final void execute() throws BuildException {\r
+               String mode = getRegistry().getMode();\r
+               if (mode.equals(StructureRegistry.ALL)) {\r
+                       executeActions(mode);\r
+               } else if (mode.equals(StructureRegistry.ACTIVE)) {\r
+                       List<StructurePath> activePaths = getRegistry().getActivePaths();\r
+                       if (activePaths.contains(sAware.getElement().getPath())) {\r
+                               executeActions(mode);\r
+                       }\r
+               }\r
+\r
+       }\r
+\r
+       protected abstract void executeActions(String mode);\r
+\r
+       protected StructureRegistry getRegistry() {\r
+               return (StructureRegistry) getProject().getReference(\r
+                               SlcProjectHelper.REF_STRUCTURE_REGISTRY);\r
+       }\r
+\r
        protected static StructurePath createTargetPath(Target target) {\r
                TreeSPath projectPath = SlcProjectHelper.getProjectPath(target\r
                                .getProject());\r