X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fstructure%2Ftree%2FTreeSRegistry.java;h=e67284375380d7c4b64a5519e4c997927b5fe70c;hb=875f97b054c6e996fa2d03c299c83cc80d336b54;hp=38c12add23f614285d1b75a4474319567d1e41a5;hpb=40768ea8b087bc653a49c2400045f4c191e8e3b4;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSRegistry.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSRegistry.java index 38c12add2..e67284375 100644 --- a/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSRegistry.java +++ b/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSRegistry.java @@ -1,58 +1,52 @@ package org.argeo.slc.core.structure.tree; import java.util.List; +import java.util.Map; +import java.util.TreeMap; import java.util.Vector; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import org.argeo.slc.core.structure.StructureAware; +import org.argeo.slc.core.UnsupportedException; +import org.argeo.slc.core.structure.SimpleSElement; import org.argeo.slc.core.structure.StructureElement; import org.argeo.slc.core.structure.StructurePath; import org.argeo.slc.core.structure.StructureRegistry; +/** Tree based implementation of a structure registry. */ public class TreeSRegistry implements StructureRegistry { - private static Log log = LogFactory.getLog(TreeSRegistry.class); + /** For ORM */ + private Long tid; + private TreeSPath root; + private Map elements = new TreeMap(); - private List elements = new Vector(); - private List paths = new Vector(); private String mode = StructureRegistry.ALL; private List activePaths; - public List listElements() { - return new Vector(elements); + public StructureElement getElement(StructurePath path) { + return elements.get(path); } - public void register(StructureElement element) { - TreeSElement treeSElement = checkElement(element); - elements.add(treeSElement); - paths.add((TreeSPath) treeSElement.getPath()); - log.debug("Registered " + treeSElement.getPath() + " (desc: " - + treeSElement.getDescription() + " position: " - + elements.size() + ")"); + public List listElements() { + return new Vector(elements.values()); } - public void register(StructureAware structureAware) { - register(structureAware.getElement()); - structureAware.onRegister(this); + public List listPaths() { + return new Vector(elements.keySet()); } - public StructureElement getElement(StructurePath path) { - int index = paths.indexOf(path); - if (index >= 0) { - return elements.get(index); - } else {// not found - return null; + public void register(StructurePath path, StructureElement element) { + final SimpleSElement simpleSElement; + if (element instanceof SimpleSElement) { + simpleSElement = (SimpleSElement) element; + } else { + simpleSElement = new SimpleSElement(element.getDescription()); } - } - protected TreeSElement checkElement(StructureElement element) { - if (!(element instanceof TreeSElement)) { - throw new RuntimeException("Element class " + element.getClass() - + " is not supported."); - } - return (TreeSElement) element; + if (!(path instanceof TreeSPath)) + throw new UnsupportedException("path", path); + + elements.put((TreeSPath) path, simpleSElement); + } public String getMode() { @@ -70,6 +64,33 @@ public class TreeSRegistry implements StructureRegistry { public void setActivePaths(List activePaths) { this.activePaths = activePaths; } - - + + /** Gets the related root path. */ + public TreeSPath getRoot() { + return root; + } + + /** Sets the related root path. */ + public void setRoot(TreeSPath root) { + this.root = root; + } + + /** Gets the elements. */ + public Map getElements() { + return elements; + } + + /** Sets the elements (for ORM). */ + public void setElements(Map elements) { + this.elements = elements; + } + + Long getTid() { + return tid; + } + + void setTid(Long tid) { + this.tid = tid; + } + }