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=c7945cebf61ebf0edd274064f2aded990f418fb7;hb=6eb8dbec55c0cb31407907860ba6de627243b8af;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..c7945cebf 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,51 @@ 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; 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()); } - } + + if (!(path instanceof TreeSPath)) + throw new UnsupportedException("path", path); + + elements.put((TreeSPath) path, simpleSElement); - protected TreeSElement checkElement(StructureElement element) { - if (!(element instanceof TreeSElement)) { - throw new RuntimeException("Element class " + element.getClass() - + " is not supported."); - } - return (TreeSElement) element; } public String getMode() { @@ -70,6 +63,29 @@ public class TreeSRegistry implements StructureRegistry { public void setActivePaths(List activePaths) { this.activePaths = activePaths; } - - + + public TreeSPath getRoot() { + return root; + } + + public void setRoot(TreeSPath root) { + this.root = root; + } + + public Map getElements() { + return elements; + } + + public void setElements(Map elements) { + this.elements = elements; + } + + Long getTid() { + return tid; + } + + void setTid(Long tid) { + this.tid = tid; + } + }