Changeset 3819


Ignore:
Timestamp:
2003-03-10T10:51:06+13:00 (21 years ago)
Author:
mdewsnip
Message:

Generic base class of GS2MGRetrieve and GS2MGPPRetrieve. Implements shared functionality: processDocumentStructureRetrieve and processDocumentMetadataRetrieve.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2Retrieve.java

    r3798 r3819  
    2626// XML classes
    2727import org.w3c.dom.Element;
     28import org.w3c.dom.NodeList;
    2829
    2930// General Java classes
     
    4748    protected static final String DOCUMENT_CONTENT_RETRIEVE_SERVICE = "DocumentContentRetrieve";
    4849
    49     protected static final String ROOT_NODE = "root";
    50     protected static final String INTERIOR_NODE = "interior";
    51     protected static final String LEAF_NODE = "leaf";
    52 
    5350    protected GDBMWrapper gdbm_src_ = null;
    5451
     
    5754    protected GS2Retrieve()
    5855    {
    59     System.out.println("Constructing GS2Retrieve...");
    6056    gdbm_src_ = new GDBMWrapper();
    6157    }
     
    9490    String gdbm_db_file = GSFile.GDBMDatabaseFile(site_home_, cluster_name_);
    9591    if (!gdbm_src_.openDatabase(gdbm_db_file, GDBMWrapper.READER)) {
    96         System.err.println("Error: Could not open gdbm database!");
     92        System.err.println("Error: Could not open GDBM database!");
    9793        return false;
    9894    }
     
    120116    parent.setAttribute(GSXML.DOC_NODE_ID_ATT, parent_id);
    121117    if (OID.isTop(parent_id))
    122         parent.setAttribute(GSXML.DOC_NODE_TYPE_ATT, ROOT_NODE);
     118        parent.setAttribute(GSXML.DOC_NODE_TYPE_ATT, GSXML.NODE_TYPE_ROOT);
    123119    else
    124         parent.setAttribute(GSXML.DOC_NODE_TYPE_ATT, INTERIOR_NODE);
     120        parent.setAttribute(GSXML.DOC_NODE_TYPE_ATT, GSXML.NODE_TYPE_INTERIOR);
    125121
    126122    return parent;
     
    148144        // Record if the node is a leaf node or an internal node
    149145        if (isLeafNode(child_id))
    150         child.setAttribute(GSXML.DOC_NODE_TYPE_ATT, LEAF_NODE);
     146        child.setAttribute(GSXML.DOC_NODE_TYPE_ATT, GSXML.NODE_TYPE_LEAF);
    151147        else
    152         child.setAttribute(GSXML.DOC_NODE_TYPE_ATT, INTERIOR_NODE);
     148        child.setAttribute(GSXML.DOC_NODE_TYPE_ATT, GSXML.NODE_TYPE_INTERIOR);
    153149    }
    154150    }
     
    201197        if (param.getAttribute(GSXML.NAME_ATT) == "structure") {
    202198            String structure = GSXML.getValue(param);
    203             System.out.println("Structure desired: " + structure);
     199            // System.out.println("Structure desired: " + structure);
    204200
    205201            // This is NOT locale sensitive
     
    244240
    245241        // Add the document to the list
     242        // !! TO DO: This should probably be a documentNode rather than a document !!
    246243        Element doc = doc_.createElement(GSXML.DOCUMENT_ELEM);
    247244        doc_list.appendChild(doc);
     
    252249        current.setAttribute(GSXML.DOC_NODE_ID_ATT, doc_id);
    253250        if (OID.isTop(doc_id))
    254         current.setAttribute(GSXML.DOC_NODE_TYPE_ATT, ROOT_NODE);
     251        current.setAttribute(GSXML.DOC_NODE_TYPE_ATT, GSXML.NODE_TYPE_ROOT);
    255252        else if (isLeafNode(doc_id))
    256         current.setAttribute(GSXML.DOC_NODE_TYPE_ATT, LEAF_NODE);
     253        current.setAttribute(GSXML.DOC_NODE_TYPE_ATT, GSXML.NODE_TYPE_LEAF);
    257254        else
    258         current.setAttribute(GSXML.DOC_NODE_TYPE_ATT, INTERIOR_NODE);
     255        current.setAttribute(GSXML.DOC_NODE_TYPE_ATT, GSXML.NODE_TYPE_INTERIOR);
    259256
    260257        // Ancestors: continually add parent nodes until the root is reached
     
    357354
    358355    // Get the documents
    359     String[] doc_ids = GSXML.getDocumentNameList(content);
    360     for (int i = 0; i < doc_ids.length; i++) {
    361         String doc_id = doc_ids[i];
     356    Element request_doc_list = (Element) GSXML.getChildByTagName(content, GSXML.DOCUMENT_ELEM+GSXML.LIST_MODIFIER);
     357    NodeList request_docs = request_doc_list.getChildNodes();
     358    for (int i = 0; i < request_docs.getLength(); i++) {
     359        Element request_doc = (Element) request_docs.item(i);
     360        String doc_id = request_doc.getAttribute(GSXML.DOC_NODE_ID_ATT);
    362361        System.out.println("Retrieving metadata for " + doc_id + "...");
    363362
    364363        // Add the document to the list
    365         Element doc = doc_.createElement(GSXML.DOCUMENT_ELEM);
    366         doc_list.appendChild(doc);
    367         doc.setAttribute(GSXML.NAME_ATT, doc_id);
     364        Element doc_node = doc_.createElement(GSXML.DOC_NODE_ELEM);
     365        doc_list.appendChild(doc_node);
     366        doc_node.setAttribute(GSXML.DOC_NODE_ID_ATT, doc_id);
     367        doc_node.setAttribute(GSXML.DOC_NODE_TYPE_ATT,
     368                  request_doc.getAttribute(GSXML.DOC_NODE_TYPE_ATT));
    368369
    369370        // Add the requested metadata information
    370         Element doc_meta_list = GSXML.addMetaList(doc_, doc);
     371        Element doc_meta_list = GSXML.addMetaList(doc_, doc_node);
    371372        DBInfo info = gdbm_src_.getInfo(doc_id);
    372373        for (int m = 0; m < metadata_list.size(); m++) {
Note: See TracChangeset for help on using the changeset viewer.