public AbstractFileModel() { model = new Tree<>(MediaSeriesGroupNode.rootNode); }
@Override public void addHierarchyNode(MediaSeriesGroup root, MediaSeriesGroup leaf) { synchronized (model) { model.addLeaf(root, leaf); } }
@Override public Collection<MediaSeriesGroup> getChildren(MediaSeriesGroup node) { return model.getSuccessors(node); }
@Override public void removeHierarchyNode(MediaSeriesGroup root, MediaSeriesGroup leaf) { synchronized (model) { Tree<MediaSeriesGroup> tree = model.getTree(root); if (tree != null) { tree.removeLeaf(leaf); } } }
@Override public MediaSeriesGroup getParent(MediaSeriesGroup node, TreeModelNode modelNode) { if (node != null && modelNode != null) { TagW matchTagID = modelNode.getTagElement(); if (node.getTagID().equals(matchTagID)) { return node; } synchronized (model) { Tree<MediaSeriesGroup> tree = model.getTree(node); if (tree != null) { Tree<MediaSeriesGroup> parent; while ((parent = tree.getParent()) != null) { if (parent.getHead().getTagID().equals(matchTagID)) { return parent.getHead(); } tree = parent; } } } } return null; }
public void dispose() { synchronized (model) { for (Iterator<MediaSeriesGroup> iterator = this.getChildren(MediaSeriesGroupNode.rootNode).iterator(); iterator.hasNext();) { iterator.next().dispose(); } } model.clear(); }
public Collection<T> getSuccessors(T root) { Collection<T> successors = new ArrayList<>(); Tree<T> tree = getTree(root); if (null != tree) { for (Tree<T> leaf : tree.leafs) { successors.add(leaf.head); } } return successors; }
@Override public String toString() { return printTree(0); }
@Override public MediaSeriesGroup getParent(MediaSeriesGroup node, TreeModelNode modelNode) { if (null != node && modelNode != null) { if (node.getTagID().equals(modelNode.getTagElement())) { return node; } synchronized (model) { Tree<MediaSeriesGroup> tree = model.getTree(node); if (tree != null) { Tree<MediaSeriesGroup> parent; while ((parent = tree.getParent()) != null) { if (parent.getHead().getTagID().equals(modelNode.getTagElement())) { return parent.getHead(); } tree = parent; } } } } return null; }
@Override public void removeHierarchyNode(MediaSeriesGroup root, MediaSeriesGroup leaf) { synchronized (model) { Tree<MediaSeriesGroup> tree = model.getTree(root); if (tree != null) { tree.removeLeaf(leaf); } } }
public void dispose() { removeAllPropertyChangeListener(); synchronized (model) { for (MediaSeriesGroup pt : getChildren(MediaSeriesGroupNode.rootNode)) { for (MediaSeriesGroup st : getChildren(pt)) { for (MediaSeriesGroup item : getChildren(st)) { item.dispose(); } } } } model.clear(); }
private String printTree(int increment) { char[] value = new char[increment]; for (int i = 0; i < value.length; i++) { value[i] = ' '; } String inc = new String(value); StringBuilder s = new StringBuilder(inc + head); for (Tree<T> child : leafs) { s.append("\n"); //$NON-NLS-1$ s.append(child.printTree(increment + 2)); } return s.toString(); } }
@Override public Collection<MediaSeriesGroup> getChildren(MediaSeriesGroup node) { return model.getSuccessors(node); }
private Tree<T> addLeaf(T leaf) { Tree<T> t = new Tree<>(leaf); leafs.add(t); t.parent = this; t.locate = this.locate; locate.put(leaf, t); return t; }
@Override public void addHierarchyNode(MediaSeriesGroup root, MediaSeriesGroup leaf) { synchronized (model) { model.addLeaf(root, leaf); } }
public static <T> Collection<T> getSuccessors(T of, Collection<Tree<T>> in) { for (Tree<T> tree : in) { if (tree.locate.containsKey(of)) { return tree.getSuccessors(of); } } return new ArrayList<>(); }
public Tree<T> setAsParent(T parentRoot) { Tree<T> t = new Tree<>(parentRoot); t.leafs.add(this); this.parent = t; t.locate = this.locate; t.locate.put(head, this); t.locate.put(parentRoot, t); return t; }
@Override public MediaSeriesGroup getHierarchyNode(MediaSeriesGroup parent, Object value) { if (parent != null || value != null) { synchronized (model) { for (MediaSeriesGroup node : model.getSuccessors(parent)) { if (node.matchIdValue(value)) { return node; } } } } return null; }
public DicomModel() { model = new Tree<>(MediaSeriesGroupNode.rootNode); splittingRules = new SplittingRules(); }