+++ /dev/null
-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
-import org.argeo.slc.ant.spring.AbstractSpringTask;\r
-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 TreeSAware sAware = new DefaultTreeSAware();\r
-\r
- @Override\r
- public void init() throws BuildException {\r
- StructureRegistry registry = getRegistry();\r
- Target target = getOwningTarget();\r
- TreeSElement projectElement = (TreeSElement) registry\r
- .getElement(SlcProjectHelper.getProjectPath(getProject()));\r
- TreeSElement targetElement = (TreeSElement) registry\r
- .getElement(createTargetPath(target));\r
-\r
- if (targetElement == null) {\r
- // create target element\r
- targetElement = projectElement.createChild(target.getName(), target\r
- .getDescription() != null ? target.getDescription()\r
- : "<no target>");\r
- registry.register(targetElement);\r
- }\r
-\r
- TreeSElement taskElement = targetElement.createChild(getTaskName()\r
- + targetElement.getChildren().size(),\r
- getDescription() != null ? getDescription() : "<no task desc>");\r
- sAware.setElement(taskElement);\r
- 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
- return TreeSPath.createChild(projectPath, target.getName());\r
- }\r
-}\r