]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/DefaultTreeSAware.java
Simplify structure framework
[gpl/argeo-slc.git] / org.argeo.slc / src / main / java / org / argeo / slc / core / structure / tree / DefaultTreeSAware.java
index a5d9c21fbfce7f164184ac9eac22c2ac21fc77a5..10869ce820b95e803cbf2c1aa7676b23bc827783 100644 (file)
@@ -5,28 +5,46 @@ import java.util.Vector;
 \r
 import org.argeo.slc.core.structure.StructureAware;\r
 import org.argeo.slc.core.structure.StructureElement;\r
+import org.argeo.slc.core.structure.StructurePath;\r
 import org.argeo.slc.core.structure.StructureRegistry;\r
 \r
-public class DefaultTreeSAware implements StructureAware{\r
-       private TreeSElement element;\r
+/**\r
+ * Default implementation of <code>TreeSAware</code> for tree based\r
+ * registries, using <code>TreeSPath</code>. Convenient to be wrapped in\r
+ * classes which cannot extend it.\r
+ */\r
+public class DefaultTreeSAware implements StructureAware {\r
+       private StructureElement element;\r
+       private List<String> names = new Vector<String>();\r
        private List<StructureAware> children = new Vector<StructureAware>();\r
 \r
        public StructureElement getElement() {\r
                return element;\r
        }\r
 \r
-       public void setElement(TreeSElement element) {\r
+       public void setElement(StructureElement element) {\r
                this.element = element;\r
        }\r
 \r
-       public void onRegister(StructureRegistry registry) {\r
-               for(StructureAware sAware : children){\r
-                       registry.register(sAware.getElement());\r
-                       sAware.onRegister(registry);\r
+       public void onRegister(StructureRegistry registry, StructurePath path) {\r
+               int index = 0;\r
+               for (StructureAware sAware : children) {\r
+                       TreeSPath childPath = ((TreeSPath) path).createChild(names\r
+                                       .get(index)\r
+                                       + index);\r
+                       registry.register(childPath, sAware.getElement());\r
+                       sAware.onRegister(registry, childPath);\r
+                       index++;\r
                }\r
        }\r
 \r
-       public void addChild(StructureAware sAware){\r
+       public void addToPropagationList(String name, StructureAware sAware) {\r
+               names.add(name);\r
                children.add(sAware);\r
        }\r
+\r
+       public List<StructureAware> getPropagationList() {\r
+               return children;\r
+       }\r
+\r
 }\r