1 package org
.argeo
.slc
.core
.structure
.tree
;
4 import java
.util
.Vector
;
6 import org
.apache
.commons
.logging
.Log
;
7 import org
.apache
.commons
.logging
.LogFactory
;
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
;
14 public class TreeSRegistry
implements StructureRegistry
{
15 private static Log log
= LogFactory
.getLog(TreeSRegistry
.class);
17 private List
<TreeSElement
> elements
= new Vector
<TreeSElement
>();
18 private List
<TreeSPath
> paths
= new Vector
<TreeSPath
>();
20 public List
<StructureElement
> listElements() {
21 return new Vector
<StructureElement
>(elements
);
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() + ")");
33 public void register(StructureAware structureAware
) {
34 register(structureAware
.getElement());
35 structureAware
.onRegister(this);
38 public StructureElement
getElement(StructurePath path
) {
39 int index
= paths
.indexOf(path
);
41 return elements
.get(index
);
47 protected TreeSElement
checkElement(StructureElement element
) {
48 if (!(element
instanceof TreeSElement
)) {
49 throw new RuntimeException("Element class " + element
.getClass()
50 + " is not supported.");
52 return (TreeSElement
) element
;