]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSRegistry.java
38c12add23f614285d1b75a4474319567d1e41a5
[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 private String mode = StructureRegistry.ALL;
20
21 private List<StructurePath> activePaths;
22
23 public List<StructureElement> listElements() {
24 return new Vector<StructureElement>(elements);
25 }
26
27 public void register(StructureElement element) {
28 TreeSElement treeSElement = checkElement(element);
29 elements.add(treeSElement);
30 paths.add((TreeSPath) treeSElement.getPath());
31 log.debug("Registered " + treeSElement.getPath() + " (desc: "
32 + treeSElement.getDescription() + " position: "
33 + elements.size() + ")");
34 }
35
36 public void register(StructureAware structureAware) {
37 register(structureAware.getElement());
38 structureAware.onRegister(this);
39 }
40
41 public StructureElement getElement(StructurePath path) {
42 int index = paths.indexOf(path);
43 if (index >= 0) {
44 return elements.get(index);
45 } else {// not found
46 return null;
47 }
48 }
49
50 protected TreeSElement checkElement(StructureElement element) {
51 if (!(element instanceof TreeSElement)) {
52 throw new RuntimeException("Element class " + element.getClass()
53 + " is not supported.");
54 }
55 return (TreeSElement) element;
56 }
57
58 public String getMode() {
59 return mode;
60 }
61
62 public void setMode(String mode) {
63 this.mode = mode;
64 }
65
66 public List<StructurePath> getActivePaths() {
67 return activePaths;
68 }
69
70 public void setActivePaths(List<StructurePath> activePaths) {
71 this.activePaths = activePaths;
72 }
73
74
75 }