From: Jonathan O. <os...@us...> - 2009-01-23 23:38:12
|
Update of /cvsroot/dlsciences/dlese-tools-project/src/org/dlese/dpc/schemedit/standards/asn In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv4942/asn Modified Files: AsnStandardsManager.java AsnStandardsNode.java Added Files: AsnDocInfo.java AsnStandardsTree.java AsnSuggestionServiceHelper.java DynaStandardsManager.java SelectedStandardsBean.java Log Message: Standards suggestion service refactored and enhanced - the old soap-based casaa service no longer supported - support for ADN or ASN standards frameworks - handles mulitple ASN standards documents in same metadata framework --- NEW FILE: SelectedStandardsBean.java --- package org.dlese.dpc.schemedit.standards.asn; import org.dlese.dpc.standards.asn.AsnHelper; import org.dlese.dpc.schemedit.standards.StandardsManager; import org.dlese.dpc.schemedit.standards.StandardsRegistry; import org.dlese.dpc.schemedit.SchemEditUtils; import java.io.*; import java.util.*; /** * Provides acess to a single ASN Standards Document (and individual standards * contained within) via the AsnDocument and AsnStandard classes. Provides * lists of AsnStandardsNodes for use in UI JSP. * *@author ostwald *@created December 26, 2008 */ public class SelectedStandardsBean { private static boolean debug = true; private StandardsRegistry standardsRegistry = null; private Map docMap = null; private Map nodeMap = null; private String currentDocKey = null; private String docKey = null; private Map otherSelectedStandards = null; private List selectedStandards = null; /** * Constructor for the SelectedStandardsBean object * *@param selectedStandards Description of the Parameter *@param currentDocKey Description of the Parameter */ public SelectedStandardsBean(List selectedStandards, String currentDocKey) { this.standardsRegistry = StandardsRegistry.getInstance(); this.selectedStandards = new ArrayList(); update (selectedStandards, currentDocKey); } public void update (List selectedStandards, String currentDocKey) { if (!currentDocKey.equals(this.currentDocKey)) this.otherSelectedStandards = null; this.currentDocKey = currentDocKey; // we update nodeMap if nodeMap is currently null or if selectedStandards has changed if (this.nodeMap == null) this.nodeMap = new HashMap(); Collections.sort (selectedStandards); if (!this.selectedStandards.equals(selectedStandards)) { this.selectedStandards = selectedStandards; Map oldNodeMap = this.nodeMap; this.nodeMap = new HashMap(); for (Iterator i=selectedStandards.iterator();i.hasNext();) { String id = (String)i.next(); if (oldNodeMap.keySet().contains(id)) { this.nodeMap.put (id, oldNodeMap.get(id)); } else { AsnStandardsNode node = standardsRegistry.getStandardsNode(id); if (node == null) { prtln("WARNING: standardsRegistry did not find node for " + id); continue; } this.nodeMap.put (id, node); } } this.otherSelectedStandards = null; // need this if standards can be selected from not-current doc this.docMap = null; } } /** * Returns a mapping from AsnDocId to each AsnStandardsNode for each selectedStandard for that doc. * *@return The docMap value */ private Map getDocMap() { if (this.docMap == null) { this.docMap = new HashMap(); /* prtln("creating docMap from the following standards"); for (Iterator i = this.ids.iterator(); i.hasNext(); ) { String id = (String) i.next(); prtln("\t" + id); } */ for (Iterator i = this.nodeMap.keySet().iterator(); i.hasNext(); ) { String id = (String) i.next(); AsnStandardsNode node = (AsnStandardsNode)this.nodeMap.get(id); if (node == null) { prtln("THIS SHOULDNT HAPPEN: nodeMap did not contain node for " + id); continue; } String docId = node.getDocId(); String key = standardsRegistry.getKey(docId); if (!this.docMap.containsKey(key)) { this.docMap.put(key, new ArrayList()); } List nodeList = (List) this.docMap.get(key); nodeList.add(node); this.docMap.put(key, nodeList); } } return this.docMap; } /** * Gets the docKey attribute of the SelectedStandardsBean object * *@return The docKey value */ public String getDocKey() { return this.docKey; } public Set getDocKeys () { return this.getDocMap().keySet(); } /** * Sets the docKey attribute of the SelectedStandardsBean object * *@param key The new docKey value */ public void setDocKey(String key) { this.docKey = key; } /** * Gets the docInfo attribute of the SelectedStandardsBean object * *@return The docInfo value */ public AsnDocInfo getDocInfo(String docKey) { return (AsnDocInfo) standardsRegistry.getDocInfo(docKey); } public AsnDocInfo getDocInfo() { return (AsnDocInfo) standardsRegistry.getDocInfo(this.docKey); } public int getNumSelected () { return getNumSelected (this.docKey); } public int getNumSelected (String docKey) { List selected = (List) this.getDocMap().get (docKey); if (selected == null) return 0; return selected.size(); } public int getNumOtherSelected () { prtln ("getNumOtherSelected"); int numSelected = 0; if (this.selectedStandards != null) numSelected = this.selectedStandards.size(); int ret = numSelected - this.getNumSelected(this.currentDocKey); prtln (" ... returning => " + ret); return ret; } /** * Gets the standardsTree attribute of the SelectedStandardsBean object * *@param key Description of the Parameter *@return The standardsTree value */ public AsnStandardsTree getStandardsTree(String key) { return this.standardsRegistry.getStandardsTree(key); } /** * Gets the otherSelectedStandards attribute of the SelectedStandardsBean * object * *@return The otherSelectedStandards value */ public Map getOtherSelectedStandards() { if (otherSelectedStandards == null) { // prtln("computing oherSelectedStandards() " + currentDocKey); Map docMap = getDocMap(); otherSelectedStandards = new HashMap(); for (Iterator i = docMap.keySet().iterator(); i.hasNext(); ) { String key = (String) i.next(); if (!key.equals(currentDocKey)) { // prtln("\t key: " + key); List idList = (List) docMap.get(key); otherSelectedStandards.put(key, idList); // DEBUGGING /* for (Iterator j = idList.iterator(); j.hasNext(); ) { AsnStandardsNode node = (AsnStandardsNode) j.next(); prtln("\t\t id: " + node.getId()); } */ } } } return otherSelectedStandards; } static String[] debugIds = { "http://purl.org/ASN/resources/S102DBAE", "http://purl.org/ASN/resources/S103E0D7", "http://purl.org/ASN/resources/S103EC5A", "http://purl.org/ASN/resources/S103EC5B", "http://purl.org/ASN/resources/S1027384", "http://purl.org/ASN/resources/S102747E" }; static String[] sampleIds = { "http://purl.org/ASN/resources/S102DBAE", "http://purl.org/ASN/resources/S103E0D7", "http://purl.org/ASN/resources/S103EC5A", "http://purl.org/ASN/resources/S103EC5B", "http://purl.org/ASN/resources/S1027384", "http://purl.org/ASN/resources/S102747E", "http://purl.org/ASN/resources/S103E0D7", "http://purl.org/ASN/resources/S103EC5A", "http://purl.org/ASN/resources/S103EC5B", "http://purl.org/ASN/resources/S1027384", "http://purl.org/ASN/resources/S102747E" }; /** * The main program for the SelectedStandardsBean class * *@param args The command line arguments *@exception Exception NOT YET DOCUMENTED */ public static void main(String[] args) throws Exception { String dir = "/Documents/Work/DLS/ASN/mast-docs/"; StandardsRegistry reg = StandardsRegistry.getInstance(); List docs = reg.load(dir); reg.report(); String[] idSet = debugIds; List ids = new ArrayList(); for (int i = 0; i < idSet.length; i++) { ids.add(idSet[i]); } String currentDocKey = "NSES.Science.1995"; SelectedStandardsBean bean = new SelectedStandardsBean(ids, currentDocKey); bean.report(); Map others = bean.getOtherSelectedStandards(); prtln("\nOther selected standards"); for (Iterator i = others.keySet().iterator(); i.hasNext(); ) { String key = (String) i.next(); prtln(key); List items = (List) others.get(key); for (Iterator n = items.iterator(); n.hasNext(); ) { AsnStandardsNode node = (AsnStandardsNode) n.next(); prtln("\t" + node.getId()); } } } /** * Description of the Method */ public void destroy() { } /** * Description of the Method */ public void report() { prtln("\n----------------------"); prtln("selected standards bean report"); for (Iterator i = this.getDocMap().keySet().iterator(); i.hasNext(); ) { String key = (String) i.next(); String docId = getStandardsTree(key).getId(); prtln("\n" + key + " (" + docId + ")"); List nodeList = (List) this.getDocMap().get(key); for (Iterator n = nodeList.iterator(); n.hasNext(); ) { AsnStandardsNode node = (AsnStandardsNode) n.next(); prtln("\t" + node.getId()); } } prtln("----------------------\n"); } /** * Description of the Method * *@param others Description of the Parameter */ public void showOthers(Map others) { for (Iterator i = others.keySet().iterator(); i.hasNext(); ) { String key = (String) i.next(); prtln(key); List items = (List) others.get(key); for (Iterator n = items.iterator(); n.hasNext(); ) { AsnStandardsNode node = (AsnStandardsNode) n.next(); prtln("\t" + node.getId()); } prtln("---------"); } } /** * Description of the Method * *@param s Description of the Parameter */ private static void prtln(String s) { SchemEditUtils.prtln(s, "SelectedStandardsBean"); // System.out.println(s); } } Index: AsnStandardsNode.java =================================================================== RCS file: /cvsroot/dlsciences/dlese-tools-project/src/org/dlese/dpc/schemedit/standards/asn/AsnStandardsNode.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** AsnStandardsNode.java 29 Apr 2008 00:20:59 -0000 1.1 --- AsnStandardsNode.java 23 Jan 2009 23:38:06 -0000 1.2 *************** *** 39,49 **** public class AsnStandardsNode implements StandardsNode { private boolean debug = true; ! private AsnStandard std = null; ! private AsnStandardsNode parent = null; ! private List ancestors = null; ! private Map nameMap = new HashMap(); private List subList = new ArrayList(); ! private String label = null; ! /** --- 39,46 ---- public class AsnStandardsNode implements StandardsNode { private boolean debug = true; ! ! private Map childMap = new HashMap(); private List subList = new ArrayList(); ! /** *************** *** 53,91 **** */ public AsnStandardsNode(AsnStandard std, AsnStandardsNode parent) { - this.std = std; this.parent = parent; ! ! } ! ! public AsnStandard getAsnStandard() { ! return this.std; } ! /** ! * Gets the value attribute of the StandardsNode object ! * ! * @return The value value ! */ ! public String getValue() { ! return this.getId(); ! } public String getGradeRange () { ! return this.std.getGradeRange(); } /** ! * Gets the id attribute of the StandardsNode object * * @return The id value */ public String getId() { ! return this.std.getId(); } public AsnStandardsNode getParent () { return parent; } /** * Gets the ancestors attribute of the StandardsNode object --- 50,95 ---- */ public AsnStandardsNode(AsnStandard std, AsnStandardsNode parent) { this.parent = parent; ! this.gradeRange = std.getGradeRange(); ! this.id = std.getId(); ! this.level = std.getLevel(); ! this.label = this.initLabel (std); ! this.fullText = this.initFullText(std); ! this.docId = std.getDocumentIdentifier(); ! //label ! } ! private String gradeRange = null; public String getGradeRange () { ! return this.gradeRange; } + private String id = null; + /** ! * Gets the id attribute of the StandardsNode object (same as value) * * @return The id value */ public String getId() { ! return this.id; ! } ! ! private String docId; ! ! public String getDocId () { ! return this.docId; } + private AsnStandardsNode parent = null; + public AsnStandardsNode getParent () { return parent; } + private List ancestors = null; + /** * Gets the ancestors attribute of the StandardsNode object *************** *** 133,137 **** public AsnStandardsNode getChild (String id) { ! return (AsnStandardsNode)this.nameMap.get(id); } --- 137,141 ---- public AsnStandardsNode getChild (String id) { ! return (AsnStandardsNode)this.childMap.get(id); } *************** *** 143,150 **** */ public boolean hasChild (String name) { ! return nameMap.containsKey (name); } /** * Gets the level attribute of the StandardsNode object --- 147,156 ---- */ public boolean hasChild (String name) { ! return childMap.containsKey (name); } + private int level = -1; + /** * Gets the level attribute of the StandardsNode object *************** *** 153,157 **** */ public int getLevel() { ! return this.std.getLevel(); } --- 159,163 ---- */ public int getLevel() { ! return this.level; } *************** *** 187,191 **** public void addSubNode (StandardsNode node) { subList.add (node); ! nameMap.put (((AsnStandardsNode)node).getId(), node); } --- 193,197 ---- public void addSubNode (StandardsNode node) { subList.add (node); ! childMap.put (((AsnStandardsNode)node).getId(), node); } *************** *** 211,214 **** --- 217,222 ---- + private String label = null; + /** * Gets the label attribute of the StandardsNode object *************** *** 216,231 **** * @return The label value */ ! public String getLabel() { if (this.getLevel() == 1) ! return this.std.getItemText(); if (this.getIsLeafNode()) ! return "[" + this.getGradeRange()+"] " + this.std.getItemText(); else ! return this.std.getItemText() + " [" + this.getGradeRange()+"]"; ! } public String getFullText () { ! return "[" + this.getGradeRange()+"] " + this.std.getDisplayText(); } --- 224,249 ---- * @return The label value */ ! public String initLabel(AsnStandard std) { if (this.getLevel() == 1) ! return std.getItemText(); if (this.getIsLeafNode()) ! return "[" + this.getGradeRange()+"] " + std.getItemText(); else ! return std.getItemText() + " [" + this.getGradeRange()+"]"; ! } ! ! public String getLabel () { ! return this.label; } + private String fullText = null; + + public String getFullText () { ! return this.fullText; ! } ! ! private String initFullText (AsnStandard std) { ! return "[" + this.getGradeRange()+"] " + std.getDisplayText(); } *************** *** 240,243 **** --- 258,270 ---- } } + + public String toString () { + String NL = "\n\t"; + String s = "id: " + getId(); + s += NL + "definition: " + getDefinition(); + s += NL + "label: " + getLabel(); + return s; + } + } Index: AsnStandardsManager.java =================================================================== RCS file: /cvsroot/dlsciences/dlese-tools-project/src/org/dlese/dpc/schemedit/standards/asn/AsnStandardsManager.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** AsnStandardsManager.java 15 Nov 2008 10:00:15 -0000 1.5 --- AsnStandardsManager.java 23 Jan 2009 23:38:06 -0000 1.6 *************** *** 24,28 **** --- 24,30 ---- package org.dlese.dpc.schemedit.standards.asn; + import org.dlese.dpc.standards.asn.AsnHelper; import org.dlese.dpc.schemedit.standards.StandardsManager; + import org.dlese.dpc.schemedit.standards.StandardsRegistry; import org.dlese.dpc.schemedit.standards.adn.util.MappingUtils; *************** *** 38,339 **** import java.net.*; - /** ! * Description of the Class * ! *@author ostwald */ public class AsnStandardsManager implements StandardsManager { ! /** ! * Description of the Field ! */ ! public SchemaHelper schemaHelper; ! String version; ! File source; ! ! List standards = null; ! Map standardsMap = new HashMap(); ! List dataTypes = new ArrayList(); ! AsnStandardsNode treeRoot = null; ! List nodeList = new ArrayList(); ! int maxNodes = Integer.MAX_VALUE; ! String xpath = ""; ! ! AsnDocument asnDoc = null; /** * Constructor for the AsnStandardsManager object */ ! public AsnStandardsManager(SchemaHelper schemaHelper, ! String xpath, ! File source) ! throws Exception { this.xpath = xpath; ! this.source = source; ! this.schemaHelper = schemaHelper; try { ! prtln ("about to read from " + this.source.getCanonicalPath() + "\n"); ! asnDoc = new AsnDocument (this.source.getCanonicalPath()); } catch (Exception e) { ! throw new Exception ("AsnDocument could not be initialized: " + e.getMessage()); } ! init (); ! prtln ("Instantiated ASN StandardsManager"); ! } ! ! public AsnDocument getAsnDocument () { ! prtln ("getAsnDocument()"); ! if (this.asnDoc == null) ! prtln (" asnDoc is NUL!!"); ! return this.asnDoc; } - /** ! * Initialize the AsnStandardsManager by populating the standardsMap and tree ! */ ! private void init () throws Exception { ! if (schemaHelper == null) ! throw new Exception ("SchemaHelper not initialized"); ! version = schemaHelper.getVersion(); ! standards = getStandards(); ! treeRoot = makeStandardsTree(); ! if (treeRoot != null) ! nodeList = getNodeList(treeRoot.getSubList()); ! ! // prtln ("\tmaxNodes: " + maxNodes); } ! ! public String getRendererTag() { ! return "asnStandards_MultiBox"; } ! /* ! * Limits the size of the standards to be processed, mostly useful for debugging ! */ ! public void setMaxNodes (int max) { ! maxNodes = max; } ! public int getMaxNodes () { ! return maxNodes; } ! ! public String getXpath () { ! return xpath; } ! /** ! * Get a StandardNode by id ! */ ! public AsnStandardsNode getStandard (String id) { ! return (AsnStandardsNode) standardsMap.get (id); } /** ! * Create a hierarchical tree of AsnStandardsNodes by splitting up the Standards ! * and populating the tree one standard at a time. * ! *@return Description of the Return Value */ ! private AsnStandardsNode makeStandardsTree() { ! AsnStandard rootStd = this.asnDoc.getRootStandard(); ! AsnStandardsNode rootNode = new AsnStandardsNode(rootStd, null); ! attachStandardsTree (rootNode); ! return rootNode; ! } ! ! private void attachStandardsTree(AsnStandardsNode parentNode) { ! AsnStandard parentStd = parentNode.getAsnStandard(); ! for (Iterator i = parentStd.getChildren().iterator(); i.hasNext(); ) { ! AsnStandard childStd = (AsnStandard) i.next(); ! AsnStandardsNode childNode = new AsnStandardsNode (childStd, parentNode); ! standardsMap.put (childNode.getId(), childNode); ! parentNode.addSubNode (childNode); ! attachStandardsTree (childNode); ! } } ! ! ! /** ! * Walk down a hierarchical tree of AsnStandardsNodes and print an indented ! * display * */ ! public void printStandardsTree() { ! prtln ("STANDARD STREE ---------------------"); ! printSubList(treeRoot, ""); } ! ! ! /** ! * Utility method to display the items of a subList. ! * ! *@param node Description of the Parameter ! *@param indent Description of the Parameter ! */ ! void printSubList(AsnStandardsNode node, String indent) { ! // prtln ("printSubList with " + node.getName()); ! prtln(indent + node.getLabel()); ! // prtln ("node has " + node.getSubList().size() + " children"); ! if (node.getHasSubList()) { ! for (Iterator i = node.getSubList().iterator(); i.hasNext(); ) { ! printSubList((AsnStandardsNode) i.next(), indent + "-"); ! } ! } } ! ! /** ! * Returns a flat list containing all AsnStandardsNodes in the standardsTree. ! */ ! public List getNodeList () { ! return nodeList; } ! /** ! * Flattens the hierarchy under the given AsnStandardsManager list, and returns it as a ! * flat arrayList. ! * ! *@param nodeList Description of the Parameter ! *@return The vocabList value ! */ ! private ArrayList getNodeList(List nodes) { ! ArrayList ret = new ArrayList(); ! for (int i = 0; i < nodes.size(); i++) { ! AsnStandardsNode addNode = (AsnStandardsNode) nodes.get(i); ! List sublist = addNode.getSubList(); ! ret.add(addNode); ! if (sublist.size() > 0) { ! ret.addAll(getNodeList(sublist)); ! } ! } ! return ret; } ! ! ! /** ! * Description of the Method ! */ ! public void printNodeList() { ! prtln ("NODE LIST ---------------------"); ! for (int i = 0; i < nodeList.size() && i < 1000; i++) { ! AsnStandardsNode node = (AsnStandardsNode) nodeList.get(i); ! String lastIndicator = ""; ! if (node.getIsLastInSubList()) { ! lastIndicator = " _|"; ! } ! String leafIndicator = ""; ! if (!node.getHasSubList()) { ! leafIndicator = " * "; ! } ! prtln("(" + node.getLevel() + ") " + leafIndicator + node.getLabel() + lastIndicator); ! ! } } ! ! public int size () { ! return getStandards().size(); } ! /** ! * Description of the Method */ ! void showStandards() { ! List standards = getStandards(); ! for (int i = 0; i < standards.size() && i < 50; i++) { ! AsnStandard std = (AsnStandard) standards.get(i); ! // prtln("(" + std.getLevels() + ") " + std.getLeaf()); ! } } ! /** ! * Debugging method maps standards to their "level" (the number of colon-delimited fields in the vocabItem's textual ! representation. ! * ! *@return The levelMap value ! */ ! public Map getLevelMap() { ! Map levelMap = new HashMap(); ! List standards = getStandards(); ! for (int i = 0; i < standards.size(); i++) { ! AsnStandard std = (AsnStandard) standards.get(i); ! // Integer levels = new Integer(std.getLevels()); ! int levels = 0; ! List list = new ArrayList(); ! if (levelMap.containsKey(levels)) { ! list = (List) levelMap.get(levels); ! } ! list.add(std); ! levelMap.put(levels, list); } ! return levelMap; } ! ! ! /** ! * Gets the standards attribute of the AsnStandardsManager object ! * ! *@return The standards value ! */ ! private List getStandards() { ! return getStandards(maxNodes); } ! ! /** ! * Gets the standards attribute of the AsnStandardsManager object * ! *@param maxSize Description of the Parameter ! *@return The standards value */ ! private List getStandards(int maxSize) { ! if (standards == null) { ! standards = new ArrayList(); ! for (Iterator i = this.asnDoc.getStandards().iterator(); i.hasNext(); ) { ! AsnStandard std = (AsnStandard) i.next(); ! standards.add(std); ! if (standards.size() > maxSize) { ! break; ! } ! } ! } ! return standards; } ! /** * The main program for the AsnStandardsManager class * ! *@param args The command line arguments */ public static void main(String[] args) throws Exception { String xpath = "/record/educational/standards/asnID"; ! String SchemaUri = "http://www.dlsciences.org/frameworks/mast/1.0/schemas/mast-dc-gem.xsd"; ! String rootElementName = "record"; ! SchemaHelper schemaHelper = ! org.dlese.dpc.schemedit.standards.adn.util.MappingUtils.getSchemaHelper(SchemaUri, rootElementName); ! String dir = "H:/Documents/ASN/standards-documents/source/"; ! String filename = "1995-NSES-v1.3.0-Science-082007.xml"; ! File source = new File (dir, filename); ! AsnStandardsManager t = new AsnStandardsManager (schemaHelper, xpath, source); ! ! String id = "http://purl.org/ASN/resources/S102DBB0"; ! AsnStandardsNode stdNode = t.getStandard(id); if (stdNode == null) ! prtln ("StdNode not found for " + id); else { ! prtln ("label: " + stdNode.getLabel()); ! prtln ("fullText: " + stdNode.getFullText()); } ! ! /* List ancestors = n.getAncestors(); prtln (ancestors.size() + " ancestors found for \t" + id); for (Iterator i=ancestors.iterator();i.hasNext();) { --- 40,258 ---- import java.net.*; /** ! * Provides acess to a single ASN Standards Document (and individual standards ! * contained within) via the AsnDocument and AsnStandard classes. Provides ! * lists of AsnStandardsNodes for use in UI JSP. * ! * @author ostwald */ + public class AsnStandardsManager implements StandardsManager { ! /** Description of the Field */ ! String xmlFormat; ! String xpath; ! List availableDocs = null; ! AsnStandardsTree standardsTree = null; ! private StandardsRegistry standardsRegistry = null; ! private SelectedStandardsBean selectedStandardsBean = null; ! /** * Constructor for the AsnStandardsManager object + * + * @param schemaHelper NOT YET DOCUMENTED + * @param xpath xpath of instanceDoc to which standards are assigned + * @param source AsnDocument file + * @exception Exception if AsnDocument file cannot be processed */ ! public AsnStandardsManager(String xmlFormat, String xpath, File source) throws Exception { ! this.xmlFormat = xmlFormat; this.xpath = xpath; ! this.standardsRegistry = StandardsRegistry.getInstance(); ! try { ! } catch (Exception e) { ! throw new Exception("AsnDocument could not be initialized: " + e.getMessage()); } ! init(source); ! prtln("Instantiated ASN StandardsManager"); } /** ! * Initialize the AsnStandardsManager by populating the standardsMap and tree ! * ! * @exception Exception NOT YET DOCUMENTED ! */ ! public void init (File source) throws Exception { ! AsnDocInfo docInfo = this.standardsRegistry.register(source.getAbsolutePath()); ! this.standardsTree = this.standardsRegistry.getStandardsTree (docInfo.key); ! this.availableDocs = new ArrayList(); ! this.availableDocs.add (docInfo); } ! public StandardsRegistry getStandardsRegistry() { ! return this.standardsRegistry; } ! /** ! * Gets the asnDocument attribute of the AsnStandardsManager object ! * ! * @return The asnDocument value ! */ ! /* public AsnDocument getAsnDocument() { ! return this.getStandardsTree().getAsnDocument(); ! } */ ! ! ! ! public void setAsnDocument (String key) throws Exception { ! // prtln ("setAsnDocument () = " + key + " about to call setStandardsTree via standardsRegistry.getStandardsTree"); ! try { ! AsnStandardsTree tree = this.standardsRegistry.getStandardsTree (key); ! if (tree == null) ! throw new Exception ("Standards Tree not found for " + key); ! this.setStandardsTree (tree); ! } catch (Exception e) { ! throw new Exception("StandardsDocument could not be initialized: " + e.getMessage()); ! } } ! public String getCurrentDoc () { ! // return StandardsRegistry.makeKey(this.getAsnDocument()); ! return this.getStandardsTree().getStandardsDocKey (); } ! public List getAvailableDocs () { ! return this.availableDocs; } ! public void setAvailableDocs (List docs) { ! this.availableDocs = docs; } /** ! * Gets the xpath attribute of the AsnStandardsManager object * ! * @return The xpath value */ ! public String getXmlFormat() { ! return xmlFormat; } ! /** ! * Gets the xpath attribute of the AsnStandardsManager object * + * @return The xpath value */ ! public String getXpath() { ! return xpath; ! } ! ! public String getAuthor () { ! // return this.getAsnDocument().getAuthor(); ! return this.getStandardsTree().getAuthor(); } ! ! public String getTopic () { ! // return this.getAsnDocument().getTopic(); ! return this.getStandardsTree().getTopic(); } ! ! public String getCreated () { ! return this.getStandardsTree().getCreated(); } ! public String getTitle () { ! return this.getStandardsTree().getTitle(); } ! ! public AsnStandardsTree getStandardsTree () { ! return this.standardsTree; } ! ! protected void setStandardsTree (AsnStandardsTree tree) { ! this.standardsTree = tree; } ! /** ! * Returns a flat list containing all AsnStandardsNodes in the standardsTree. ! * ! * @return The nodeList value */ ! public List getStandardsNodes() { ! return this.getStandardsTree().getNodeList(); } + public AsnStandardsNode getRootStandardNode () { + return this.getStandardsTree().getRootNode(); + } ! public Map getOtherSelectedStandards () { ! if (this.selectedStandardsBean != null) { ! return this.selectedStandardsBean.getOtherSelectedStandards(); } ! return null; } ! ! public void updateSelectedStandardsBean (List selectedStandards) { ! if (this.selectedStandardsBean == null) ! this.selectedStandardsBean = new SelectedStandardsBean (selectedStandards, this.getCurrentDoc()); ! else ! this.selectedStandardsBean.update (selectedStandards, this.getCurrentDoc()); } ! ! public SelectedStandardsBean getSelectedStandardsBean () { ! return this.selectedStandardsBean; ! } ! ! /** ! * Gets the rendererTag attribute of the AsnStandardsManager object * ! * @return The rendererTag value */ ! public String getRendererTag() { ! // return "asnStandards_MultiBox"; ! // return "dynaStandards_MultiBox"; ! return "standards_MultiBox"; } ! ! /** * The main program for the AsnStandardsManager class * ! * @param args The command line arguments ! * @exception Exception NOT YET DOCUMENTED */ public static void main(String[] args) throws Exception { String xpath = "/record/educational/standards/asnID"; + String xmlFormat = "ncs_item"; + + /* String dir = "H:/Documents/ASN/standards-documents/source/"; + String filename = "1995-NSES-v1.3.0-Science-082007.xml"; */ ! String dir = "/Documents/Work/DLS/ASN/standards-documents/v1.4.0/science/"; ! String filename = "1995-National Science Education Standards (NSES)-Science-National Science Education Standard.xml"; ! File source = new File(dir, filename); ! AsnStandardsManager mgr = new AsnStandardsManager(xmlFormat, xpath, source); ! ! AsnStandardsTree tree = mgr.getStandardsTree(); ! ! String id = "http://purl.org/ASN/resources/S102DBB0"; ! AsnStandardsNode stdNode = tree.getStandard(id); if (stdNode == null) ! prtln("StdNode not found for " + id); else { ! prtln ("AsnStandardsNode\n" + stdNode.toString()); ! /* prtln("label: " + stdNode.getLabel()); ! prtln("fullText: " + stdNode.getFullText()); */ } ! ! /* List ancestors = n.getAncestors(); prtln (ancestors.size() + " ancestors found for \t" + id); for (Iterator i=ancestors.iterator();i.hasNext();) { *************** *** 341,357 **** prtln ("\t" + a.getId() + " (" + a.getLevel() + ")"); } ! t.printStandardsTree(); */ } /** * Description of the Method * ! *@param s Description of the Parameter */ private static void prtln(String s) { ! // System.out.println("AsnStandardsManager: " + s); ! System.out.println(s); } } --- 260,288 ---- prtln ("\t" + a.getId() + " (" + a.getLevel() + ")"); } ! t.printStandardsTree(); */ + mgr.report(); } + + public void report () { + prtln ("\n----------------------"); + prtln ("xmlFormat: " + this.getXmlFormat()); + prtln ("xpath: " + this.getXpath()); + prtln ("author: " + this.getAuthor()); + prtln ("topic: " + this.getTopic()); + prtln ("rendererTag: " + this.getRendererTag()); + prtln ("tree node count: " + this.getStandardsTree().size()); + } + /** * Description of the Method * ! * @param s Description of the Parameter */ private static void prtln(String s) { ! SchemEditUtils.prtln (s, "AsnStandardsManager"); ! // System.out.println(s); } } --- NEW FILE: AsnStandardsTree.java --- /** * Copyright 2002, 2003 DLESE Program Center/University Corporation for * Atmospheric Research (UCAR), P.O. Box 3000, Boulder, CO 80307, * su...@dl....<p> * * This file is part of the DLESE Tools Project.<p> * * The DLESE Tools Project is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at your * option) any later version.<p> * * The DLESE Tools Project is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * Public License for more details.<p> * * You should have received a copy of the GNU General Public License along with * The DLESE System; if not, write to the Free Software Foundation, Inc., 59 * Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.dlese.dpc.schemedit.standards.asn; import org.dlese.dpc.standards.asn.AsnHelper; import org.dlese.dpc.schemedit.standards.StandardsRegistry; import org.dlese.dpc.schemedit.standards.StandardsTree; import org.dlese.dpc.schemedit.standards.adn.util.MappingUtils; import org.dlese.dpc.standards.asn.AsnDocument; import org.dlese.dpc.standards.asn.AsnStandard; import org.dlese.dpc.xml.schema.*; import org.dlese.dpc.schemedit.*; import java.io.*; import java.util.*; import java.net.*; /** * Provides acess to a single ASN Standards Document (and individual standards * contained within) via the AsnDocument and AsnStandard classes. Provides * lists of AsnStandardsNodes for use in UI JSP. * * @author ostwald */ public class AsnStandardsTree implements StandardsTree { private static boolean debug = false; /** Description of the Field */ String version; File source; Map standardsMap = new HashMap(); List dataTypes = new ArrayList(); AsnStandardsNode rootNode = null; List nodeList = new ArrayList(); int maxNodes = Integer.MAX_VALUE; String author = null; String topic = null; String created = null; String title = null; String id = null; // AsnDocument asnDoc = null; /** * Constructor for the AsnStandardsTree object * * @param schemaHelper NOT YET DOCUMENTED * @param xpath xpath of instanceDoc to which standards are assigned * @param source AsnDocument file * @exception Exception if AsnDocument file cannot be processed */ public AsnStandardsTree (File source) throws Exception { prtln ("\nmaking NEW AsnStandardsTree ..."); this.source = source; AsnHelper asnHelper = AsnHelper.getInstance(); AsnDocument asnDoc = null; try { prtln("\nabout to read from " + this.source.getCanonicalPath()); asnDoc = new AsnDocument(this.source.getCanonicalPath(), asnHelper); } catch (Exception e) { throw new Exception("AsnDocument could not be initialized: " + e.getMessage()); } init(asnDoc); prtln("Instantiated ASN StandardsTree"); } public AsnStandardsTree (AsnDocument asnDoc) throws Exception { prtln ("\nmaking NEW AsnStandardsTree ..."); this.source = new File (asnDoc.getPath()); AsnHelper asnHelper = AsnHelper.getInstance(); init(asnDoc); prtln("Instantiated ASN StandardsTree"); } /** * Gets the asnDocument attribute of the AsnStandardsTree object * * @return The asnDocument value */ /* public AsnDocument getAsnDocument() { // prtln("getAsnDocument()"); if (this.asnDoc == null) prtln(" asnDoc is NUL!!"); return this.asnDoc; } */ /** * Initialize the AsnStandardsTree by populating the standardsMap and tree * * @exception Exception NOT YET DOCUMENTED */ public void init(AsnDocument asnDoc) throws Exception { /* this.standards = null; standards = getStandards(); */ rootNode = makeStandardsTree(asnDoc); if (rootNode != null) nodeList = getNodeList(rootNode.getSubList()); this.author = asnDoc.getAuthor(); this.topic = asnDoc.getTopic(); this.created = asnDoc.getCreated(); this.title = asnDoc.getTitle(); this.id = asnDoc.getIdentifier(); // prtln ("\tmaxNodes: " + maxNodes); } public String getId () { return this.id; } public String getAuthor () { return this.author; } public String getTopic () { return this.topic; } public String getCreated () { return this.created; } public String getTitle () { return this.title; } public String getStandardsDocKey () { return StandardsRegistry.makeKey(this.author, this.topic, this.created); } /** * Gets the rendererTag attribute of the AsnStandardsTree object * * @return The rendererTag value */ public String getRendererTag() { return "asnStandards_MultiBox"; } /* * Limits the size of the standards to be processed, mostly useful for debugging */ /** * Sets the maxNodes attribute of the AsnStandardsTree object * * @param max The new maxNodes value */ public void setMaxNodes(int max) { maxNodes = max; } /** * Gets the maxNodes attribute of the AsnStandardsTree object * * @return The maxNodes value */ public int getMaxNodes() { return maxNodes; } /** * Get a StandardNode by id * * @param id NOT YET DOCUMENTED * @return The standard value */ public AsnStandardsNode getStandard(String id) { if (standardsMap == null) { prtln ("getStandard() for " + id + " standardsMap is not defined"); return null; } return (AsnStandardsNode) standardsMap.get(id); } public AsnStandardsNode getRootNode () { return rootNode; } /** * Create a hierarchical tree of AsnStandardsNodes by splitting up the * Standards and populating the tree one standard at a time. * * @return Description of the Return Value */ private AsnStandardsNode makeStandardsTree(AsnDocument asnDoc) { prtln ("making standardsTree"); AsnStandard rootStd = asnDoc.getRootStandard(); AsnStandardsNode rootNode = new AsnStandardsNode(rootStd, null); attachStandardsBranch(rootNode, asnDoc); return rootNode; } /** * NOT YET DOCUMENTED * * @param parentNode NOT YET DOCUMENTED */ private void attachStandardsBranch(AsnStandardsNode parentNode, AsnDocument asnDoc) { // AsnStandard parentStd = parentNode.getAsnStandard(); AsnStandard parentStd = asnDoc.getStandard(parentNode.getId()); for (Iterator i = parentStd.getChildren().iterator(); i.hasNext(); ) { AsnStandard childStd = (AsnStandard) i.next(); AsnStandardsNode childNode = new AsnStandardsNode(childStd, parentNode); try { standardsMap.put(childNode.getId(), childNode); } catch (Throwable t) { // prtln ("childNode.getId() failed: " + t.getMessage()); prtln ("parentStd: " + parentStd.getId()); if (childStd == null) { prtln ("\t childStd is NULL"); } diagnose (parentStd); System.exit(1); } parentNode.addSubNode(childNode); attachStandardsBranch(childNode, asnDoc); } } private void diagnose (AsnStandard parentStd) { prtln ("\nDIAGNOSE: " + parentStd.getId()); List children = parentStd.getChildren(); prtln ("children (" + children.size() + ")"); for (Iterator i = children.iterator(); i.hasNext(); ) { AsnStandard childStd = (AsnStandard) i.next(); if (childStd == null) prtln ("NULL"); else prtln (childStd.getId()); } } /** * Walk down a hierarchical tree of AsnStandardsNodes and print an indented * display */ public void printStandardsTree() { prtln("STANDARD STREE ---------------------"); printSubList(rootNode, ""); } /** * Utility method to display the items of a subList. * * @param node Description of the Parameter * @param indent Description of the Parameter */ void printSubList(AsnStandardsNode node, String indent) { // prtln ("printSubList with " + node.getName()); prtln(indent + node.getLabel()); // prtln ("node has " + node.getSubList().size() + " children"); if (node.getHasSubList()) { for (Iterator i = node.getSubList().iterator(); i.hasNext(); ) { printSubList((AsnStandardsNode) i.next(), indent + "-"); } } } /** * Returns a flat list containing all AsnStandardsNodes in the standardsTree. * * @return The nodeList value */ public List getNodeList() { return nodeList; } /** * Flattens the hierarchy under the given AsnStandardsTree list, and * returns it as a flat arrayList. * * @param nodes NOT YET DOCUMENTED * @return The vocabList value */ private ArrayList getNodeList(List nodes) { ArrayList ret = new ArrayList(); for (int i = 0; i < nodes.size(); i++) { AsnStandardsNode addNode = (AsnStandardsNode) nodes.get(i); List sublist = addNode.getSubList(); ret.add(addNode); if (sublist.size() > 0) { ret.addAll(getNodeList(sublist)); } } return ret; } /** Description of the Method */ public void printNodeList() { prtln("NODE LIST ---------------------"); for (int i = 0; i < nodeList.size() && i < 1000; i++) { AsnStandardsNode node = (AsnStandardsNode) nodeList.get(i); String lastIndicator = ""; if (node.getIsLastInSubList()) { lastIndicator = " _|"; } String leafIndicator = ""; if (!node.getHasSubList()) { leafIndicator = " * "; } prtln("(" + node.getLevel() + ") " + leafIndicator + node.getLabel() + lastIndicator); } } /** * NOT YET DOCUMENTED * * @return NOT YET DOCUMENTED */ public int size() { return this.standardsMap.size(); } /** Description of the Method */ void showStandards() { Collection standards = this.standardsMap.values(); int max = 50; int count = 0; for (Iterator i=standards.iterator();i.hasNext();) { AsnStandardsNode node = (AsnStandardsNode) i.next(); prtln( "(" + node.getId() + ") " + node.getFullText()); if (count++ > max) break; } } /** * Gets the standards attribute of the AsnStandardsTree object * * @return The standards value */ /* private List getStandards(AsnDocument asnDoc) { return getStandards(maxNodes); } */ /** * Gets the standards attribute of the AsnStandardsTree object * * @param maxSize Description of the Parameter * @return The standards value */ /* private List getStandards(AsnDocument asnDoc, int maxSize) { if (standards == null) { standards = new ArrayList(); for (Iterator i = asnDoc.getStandards().iterator(); i.hasNext(); ) { AsnStandard std = (AsnStandard) i.next(); standards.add(std); if (standards.size() > maxSize) { break; } } } return standards; } */ /** * The main program for the AsnStandardsTree class * * @param args The command line arguments * @exception Exception NOT YET DOCUMENTED */ public static void main(String[] args) throws Exception { String xpath = "/record/educational/standards/asnID"; /* String dir = "H:/Documents/ASN/standards-documents/source/"; String filename = "1995-NSES-v1.3.0-Science-082007.xml"; */ String dir = "/Documents/Work/DLS/ASN/standards-documents/v1.4.0/science/"; String filename = "1995-National Science Education Standards (NSES)-Science-National Science Education Standard.xml"; File source = new File(dir, filename); AsnStandardsTree t = new AsnStandardsTree(source); String id = "http://purl.org/ASN/resources/S102DBB0"; AsnStandardsNode stdNode = t.getStandard(id); if (stdNode == null) prtln("StdNode not found for " + id); else { prtln ("AsnStandardsNode\n" + stdNode.toString()); /* prtln("label: " + stdNode.getLabel()); prtln("fullText: " + stdNode.getFullText()); */ } /* List ancestors = n.getAncestors(); prtln (ancestors.size() + " ancestors found for \t" + id); for (Iterator i=ancestors.iterator();i.hasNext();) { AsnStandardsNode a = (AsnStandardsNode)i.next(); prtln ("\t" + a.getId() + " (" + a.getLevel() + ")"); } t.printStandardsTree(); */ } public void destroy () { // this.standards = null; this.standardsMap.clear(); this.standardsMap = null; } /** * Description of the Method * * @param s Description of the Parameter */ private static void prtln(String s) { if (debug) { SchemEditUtils.prtln (s, "AsnStandardsTree"); // System.out.println(s); } } } --- NEW FILE: AsnSuggestionServiceHelper.java --- /** * Copyright 2002, 2003 DLESE Program Center/University Corporation for * Atmospheric Research (UCAR), P.O. Box 3000, Boulder, CO 80307, * su...@dl....<p> * * This file is part of the DLESE Tools Project.<p> * * The DLESE Tools Project is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at your * option) any later version.<p> * * The DLESE Tools Project is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * Public License for more details.<p> * * You should have received a copy of the GNU General Public License along with * The DLESE System; if not, write to the Free Software Foundation, Inc., 59 * Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.dlese.dpc.schemedit.standards.asn; import org.dlese.dpc.schemedit.standards.adn.AsnToAdnMapper; import org.dlese.dpc.schemedit.standards.CATServiceHelper; import org.dlese.dpc.schemedit.standards.StandardsRegistry; import org.dlese.dpc.schemedit.standards.StandardsManager; import org.dlese.dpc.standards.asn.AsnDocument; import org.dlese.dpc.schemedit.standards.asn.AsnStandardsTree; import org.dlese.dpc.schemedit.MetaDataFramework; import org.dlese.dpc.schemedit.action.form.SchemEditForm; import org.dlese.dpc.xml.Dom4jUtils; import org.dlese.dpc.xml.schema.*; import org.dlese.dpc.schemedit.*; import org.dlese.dpc.serviceclients.cat.SuggestStandards; import org.dlese.dpc.serviceclients.cat.CATStandard; import org.dom4j.*; import java.io.*; import java.util.*; import org.apache.struts.util.LabelValueBean; import java.net.*; /** * Suggestions Service Helper for the CAT REST standards suggestion service, * operating over ASN Standards.<p> * * * *@author ostwald *@created November 13, 2008 */ public class AsnSuggestionServiceHelper extends CATServiceHelper { private static boolean debug = true; SuggestStandards suggestionService = null; /** * Constructor for the AsnSuggestionServiceHelper object */ public AsnSuggestionServiceHelper() { } /** * Gets the standardsFormat attribute of the AsnSuggestionServiceHelper object * (hardcoded to "asn"). * *@return The standardsFormat value */ public String getStandardsFormat() { return "asn"; } /** * Gets the StandardsTree attribute of the AsnSuggestionServiceHelper object * *@return The standardsTree value */ protected AsnStandardsTree getStandardsTree() { return (AsnStandardsTree) super.getStandardsTree(); } /** * Gets the standardsManager attribute of the AsnSuggestionServiceHelper * object * *@return The standardsManager value */ public AsnStandardsManager getStandardsManager() { StandardsManager mgr = super.getStandardsManager(); if (mgr instanceof DynaStandardsManager) { return (DynaStandardsManager) mgr; } else { return (AsnStandardsManager) mgr; } } /** * Updates the selectedStandardsBean to reflect currently selected standards and currentDoc. */ public void updateSelectedStandardsBean() { this.getStandardsManager().updateSelectedStandardsBean(this.getSelectedStandards()); } /** * Gets the selectedStandardsBean attribute of the AsnSuggestionServiceHelper * object * *@return The selectedStandardsBean value */ public SelectedStandardsBean getSelectedStandardsBean() { return this.getStandardsManager().getSelectedStandardsBean(); } /** * Gets the availableDocs attribute of the AsnSuggestionServiceHelper object * *@return The availableDocs value */ public List getAvailableDocs() { return getStandardsManager().getAvailableDocs(); } /** * Gets the currentDoc attribute of the AsnSuggestionServiceHelper object * *@return The currentDoc value */ public String getCurrentDoc() { return getStandardsManager().getCurrentDoc(); } /** * Sets the asnDocument attribute of the AsnSuggestionServiceHelper object * *@param key The new asnDocument value *@exception Exception Description of the Exception */ public void setAsnDocument(String key) throws Exception { // prtln("setAsnDocument() = " + key); try { this.getStandardsManager().setAsnDocument(key); this.setSuggestedStandards(null); } catch (Throwable t) { prtlnErr("WARNING: could not set asnDocument: " + t.getMessage()); } /* prtln("\nAfter setting AsnDocument"); prtln("\t helper author is " + this.getAuthor()); prtln("\t mgr author is " + this.getAuthor()); */ } /** * Gets the otherSelectedStandards attribute of the AsnSuggestionServiceHelper * object * *@return The otherSelectedStandards value */ public Map getOtherSelectedStandards() { return getStandardsManager().getOtherSelectedStandards (); } /** * Gets the idFromCATStandard attribute of the AsnSuggestionServiceHelper * object * *@param std NOT YET DOCUMENTED *@return The idFromCATStandard value */ protected String getIdFromCATStandard(CATStandard std) { return std.getIdentifier(); } /** * NOT YET DOCUMENTED * *@param s NOT YET DOCUMENTED */ private static void prtln(String s) { if (debug) { SchemEditUtils.prtln(s, "AsnSuggestionServiceHelper"); } } /** * Description of the Method * *@param s Description of the Parameter */ private static void prtlnErr(String s) { if (debug) { SchemEditUtils.prtln(s, "AsnSuggestionServiceHelper"); } } /** * Debugging * *@param standardsList A list of StandardsWrapper instances to display. */ public void displaySuggestions(List standardsList) { prtln(standardsList.size() + " items returned by suggestion service ..."); for (int i = 0; i < standardsList.size(); i++) { CATStandard std = (CATStandard) standardsList.get(i); String id = std.getIdentifier(); String text = std.getText(); prtln("\n" + i + "\n" + id + "\n" + text + "\n"); } } } --- NEW FILE: DynaStandardsManager.java --- /** * Copyright 2002, 2003 DLESE Program Center/University Corporation for * Atmospheric Research (UCAR), P.O. Box 3000, Boulder, CO 80307, * su...@dl....<p> * * This file is part of the DLESE Tools Project.<p> * * The DLESE Tools Project is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at your * option) any later version.<p> * * The DLESE Tools Project is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * Public License for more details.<p> * * You should have received a copy of the GNU General Public License along with * The DLESE System; if not, write to the Free Software Foundation, Inc., 59 * Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.dlese.dpc.schemedit.standards.asn; import org.dlese.dpc.standards.asn.AsnHelper; import org.dlese.dpc.schemedit.standards.StandardsRegistry; import org.dlese.dpc.schemedit.standards.adn.util.MappingUtils; import org.dlese.dpc.standards.asn.AsnDocument; import org.dlese.dpc.standards.asn.AsnStandard; import org.dlese.dpc.xml.schema.*; import org.dlese.dpc.schemedit.*; import java.io.*; import java.util.*; import java.net.*; /** * Provides acess to all the ASN Standards Documents within a directory of StandardsDocuemnts as XML. * * @author ostwald */ public class DynaStandardsManager extends AsnStandardsManager { private static boolean debug = true; private String standardsDirectory = null; /** * Constructor for the DynaAsnStandardsTree object * * @param schemaHelper NOT YET DOCUMENTED * @param xpath xpath of instanceDoc to which standards are assigned * @param source AsnDocument file * @exception Exception if AsnDocument file cannot be processed */ public DynaStandardsManager(String xmlFormat, String xpath, File standardsDirectory, String defaultDocKey) throws Exception { super (xmlFormat, xpath, standardsDirectory); prtln ("trying to match defaultDocKey: \"" + defaultDocKey + "\""); try { String docKey = this.getStandardsRegistry().matchKey(defaultDocKey); this.setAsnDocument(docKey); } catch (Exception e) { prtln ("couldn't get default: " + e.getMessage()); prtln (" ... grabing first available ..."); AsnDocInfo docInfo = (AsnDocInfo)this.availableDocs.get (0); this.setAsnDocument(docInfo.getKey()); } prtln ("\t set document to " + this.getCurrentDoc()); } public void init (File standardsDirectory) throws Exception { prtln ("\nDynaStandardsManager.init()"); StandardsRegistry registry = this.getStandardsRegistry(); this.setAvailableDocs(registry.load (standardsDirectory.getAbsolutePath())); prtln (this.availableDocs.size() + " standards Documents loaded"); } public String getStandardsDirectory () { return this.standardsDirectory; } /** * The main program for the DynaAsnStandardsTree class * * @param args The command line arguments * @exception Exception NOT YET DOCUMENTED */ public static void main(String[] args) throws Exception { String xpath = "/record/educational/standards/asnID"; String xmlFormat = "ncs_item"; // String dir = "L:/common/asn/v1.4.1/ASN-by-subject-2008/Science"; String dir = "L:/ostwald/MAST/devel-standards"; File source = new File(dir); String defaultDocKey = "..2005"; DynaStandardsManager mgr = new DynaStandardsManager (xmlFormat, xpath, source, defaultDocKey); mgr.report(); } public void report () { super.report(); } /** * Description of the Method * * @param s Description of the Parameter */ private static void prtln(String s) { if (debug) SchemEditUtils.prtln (s, "DynaStandardsManager"); } } --- NEW FILE: AsnDocInfo.java --- package org.dlese.dpc.schemedit.standards.asn; import org.dlese.dpc.schemedit.SchemEditUtils; import org.dlese.dpc.schemedit.standards.StandardsRegistry; import org.dlese.dpc.standards.asn.AsnDocument; import java.io.File; /** * * @author Jonathan Ostwald */ public class AsnDocInfo { private static boolean debug = true; /** NOT YET DOCUMENTED */ public String path; /** NOT YET DOCUMENTED */ public String author; /** NOT YET DOCUMENTED */ public String topic; /** NOT YET DOCUMENTED */ public String fileCreated; /** NOT YET DOCUMENTED */ public String created; /** NOT YET DOCUMENTED */ public int numItems; /** NOT YET DOCUMENTED */ public String filename; /** NOT YET DOCUMENTED */ public String identifier; public String title; public String key; /** * Constructor for the AsnDocInfo object * * @param asnDoc NOT YET DOCUMENTED * @param path NOT YET DOCUMENTED */ public AsnDocInfo(AsnDocument asnDoc) { this.path = asnDoc.getPath(); this.identifier = asnDoc.getIdentifier(); this.author = asnDoc.getAuthor(); this.topic = asnDoc.getTopic(); this.fileCreated = asnDoc.getFileCreated(); this.created = asnDoc.getCreated(); this.title = asnDoc.getTitle(); this.numItems = asnDoc.getIdentifiers().size(); this.filename = new File(path).getName(); this.key = StandardsRegistry.makeKey (asnDoc); } public String getKey () { return this.key; } public String getAuthor () { return this.author; } public String getTopic () { return this.topic; } public String getTitle () { return this.title; } public String getCreated () { return this.created; } public File getSource () { return new File (this.path); } public boolean isNewerThan (AsnDocInfo other) { try { int mine = Integer.parseInt(this.created); int theirs = Integer.parseInt(other.created); return mine > theirs; } catch (Throwable t) { prtln ("isNewerThan error: " + t.getMessage()); } return false; } /** NOT YET DOCUMENTED */ public void report() { prtln("\n" + this.key); // prtln("\t author: " + this.author); // prtln("\t topic: " + this.topic); // prtln("\t created: " + this.created); // prtln ("\t fileCreated: " + this.fileCreated); // prtln("\t identifier: " + this.identifier); // prtln("\t numItems: " + this.numItems); prtln("\t filename: " + this.filename); //prtln ("\t path: " + this.path); } /** * NOT YET DOCUMENTED * * @param s NOT YET DOCUMENTED */ private static void prtln(String s) { if (debug) { SchemEditUtils.prtln(s, "AsnDocInfo"); } } } |