public void check(Model model, boolean fix) { // get all the root elements final Collection<BioPAXElement> rootElements = new HashSet<BioPAXElement>(model.getObjects()); // extends traverser ;) AbstractTraverser checker = new AbstractTraverser( SimpleEditorMap.get(model.getLevel())) { @Override protected void visit(Object value, BioPAXElement parent, Model model, PropertyEditor editor) { if(value instanceof BioPAXElement) rootElements.remove(value); // found, i.e., it is used by another element. } }; // this removes those elements that are referenced from others for(BioPAXElement e : model.getObjects()) { checker.traverse(e, model); } // those left are in fact dangling! for(BioPAXElement thing : rootElements) { if(!(thing instanceof Pathway)) error(thing, "dangling.element", false); } }
public void check(final Validation validation, Model model) { // get all the root elements final Collection<BioPAXElement> rootElements = new HashSet<BioPAXElement>(model.getObjects()); // extends traverser ;) AbstractTraverser checker = new AbstractTraverser( SimpleEditorMap.get(model.getLevel())) { @Override protected void visit(Object value, BioPAXElement parent, Model model, PropertyEditor editor) { if(value instanceof BioPAXElement) rootElements.remove(value); // found, i.e., it is used by another element. } }; // this removes those elements that are referenced from others for(BioPAXElement e : model.getObjects()) { checker.traverse(e, model); } // those left are in fact dangling! for(BioPAXElement thing : rootElements) { if(!(thing instanceof Pathway)) error(validation, thing, "dangling.element", false); } }