]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSRegistry.java
Introduce structure
[gpl/argeo-slc.git] / org.argeo.slc / src / main / java / org / argeo / slc / core / structure / tree / TreeSRegistry.java
1 package org.argeo.slc.core.structure.tree;
2
3 import java.util.List;
4 import java.util.Vector;
5
6 import org.apache.commons.logging.Log;
7 import org.apache.commons.logging.LogFactory;
8
9 import org.argeo.slc.core.structure.StructureAware;
10 import org.argeo.slc.core.structure.StructureElement;
11 import org.argeo.slc.core.structure.StructurePath;
12 import org.argeo.slc.core.structure.StructureRegistry;
13
14 public class TreeSRegistry implements StructureRegistry {
15 private static Log log = LogFactory.getLog(TreeSRegistry.class);
16
17 private List<TreeSElement> elements = new Vector<TreeSElement>();
18 private List<TreeSPath> paths = new Vector<TreeSPath>();
19
20 public List<StructureElement> listElements() {
21 return new Vector<StructureElement>(elements);
22 }
23
24 public void register(StructureElement element) {
25 TreeSElement treeSElement = checkElement(element);
26 elements.add(treeSElement);
27 paths.add((TreeSPath) treeSElement.getPath());
28 log.debug("Registered " + treeSElement.getPath() + " (desc: "
29 + treeSElement.getDescription() + " position: "
30 + elements.size() + ")");
31 }
32
33 public void register(StructureAware structureAware) {
34 register(structureAware.getElement());
35 structureAware.onRegister(this);
36 }
37
38 public StructureElement getElement(StructurePath path) {
39 int index = paths.indexOf(path);
40 if (index >= 0) {
41 return elements.get(index);
42 } else {// not found
43 return null;
44 }
45 }
46
47 protected TreeSElement checkElement(StructureElement element) {
48 if (!(element instanceof TreeSElement)) {
49 throw new RuntimeException("Element class " + element.getClass()
50 + " is not supported.");
51 }
52 return (TreeSElement) element;
53 }
54 }