import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.simantics.db.Resource;
import org.simantics.db.common.ResourceArray;
*/
public class Node implements Comparable<Node> {
- public static final Comparator<Node> CASE_INSENSITIVE_COMPARATOR = new Comparator<Node>() {
- @Override
- public int compare(Node o1, Node o2) {
- return AlphanumComparator.CASE_INSENSITIVE_COMPARATOR.compare(o1.getName(), o2.getName());
- }
- };
+ public static final Comparator<Node> CASE_INSENSITIVE_COMPARATOR =
+ (o1, o2) -> AlphanumComparator.CASE_INSENSITIVE_COMPARATOR.compare(o1.getName(), o2.getName());
private final Node parent;
private final List<Node> children = new ArrayList<Node>();
+ private final List<Node> unmodifiableChildren = Collections.unmodifiableList(children);
/**
* May be <code>null</code> if there is no diagram for this node.
private final ResourceArray definingResource; // i.e. Composite
private final String name;
-// private String[] partOfGroups = {};
-
private PageDesc pageDesc;
- private String RVI;
+ private String rvi;
+
+ private Map<String, Object> properties;
/**
* @param parent
parent.addChild(this);
}
+ public Node cloneWithoutChildren(Node parent) {
+ Node clone = new Node(parent, name, diagram, definingResource.resources);
+ clone.setRVI(rvi);
+ clone.setPageDesc(pageDesc);
+ return clone;
+ }
+
public Node getParent() {
return parent;
}
}
public Collection<Node> getChildren() {
- return Collections.unmodifiableCollection(children);
+ return unmodifiableChildren;
}
-// public void setPartOfGroups(Collection<String> groups) {
-// this.partOfGroups = groups.toArray(new String[groups.size()]);
-// }
-//
-// public String[] getPartOfGroups() {
-// return partOfGroups;
-// }
-
public void setPageDesc(PageDesc pageDesc) {
this.pageDesc = pageDesc;
}
- public void setRVI(String RVI) {
- this.RVI = RVI;
+ public void setRVI(String rvi) {
+ this.rvi = rvi;
}
public String getRVI() {
- return RVI;
+ return rvi;
}
public PageDesc getPageDesc() {
return pageDesc;
}
+ /**
+ * @param key
+ * @param value
+ * @return this node for chained initialization
+ */
+ public Node setProperty(String key, Object value) {
+ if (properties == null)
+ properties = new HashMap<>();
+ properties.put(key, value);
+ return this;
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T getProperty(String key) {
+ if (properties == null)
+ return null;
+ return (T) properties.get(key);
+ }
+
@Override
public int compareTo(Node o) {
int ret = name.compareTo(o.name);