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=5469796ed10ab0ddb8f7bf1cb7ba663676b7d73d;hp=b52b71d8e50b70a6ec960e6c1a1ae7df2f0d3f97;hpb=2d2e8673ee9a9c610dcd831833cb67c3a508c372;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 b52b71d8e..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,54 +1,96 @@ 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; - public List listElements() { - return new Vector(elements); + private List activePaths; + + 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() { + return mode; + } + + public void setMode(String mode) { + this.mode = mode; } + + public List getActivePaths() { + return activePaths; + } + + 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; + } + }