Changeset 4708


Ignore:
Timestamp:
2003-06-18T12:02:14+12:00 (21 years ago)
Author:
kjdon
Message:

workign on document type stuff - so that xslt knows what type of display to use

File:
1 edited

Legend:

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

    r4247 r4708  
    281281
    282282
    283     /** Creates a new documentNode element containing ID and type */
    284     protected Element createDocumentNodeElement(String doc_id)
     283    /** Creates a new documentNode element containing ID, node type
     284     * and docType*/
     285    protected Element createDocumentNodeElement(String node_id)
    285286    {
    286287    Element doc_node = doc_.createElement(GSXML.DOC_NODE_ELEM);
    287     doc_node.setAttribute(GSXML.NODE_ID_ATT, doc_id);
    288     if (OID.isTop(doc_id))
     288    doc_node.setAttribute(GSXML.NODE_ID_ATT, node_id);
     289
     290    String top_id = OID.getTop(node_id);
     291    boolean is_top = (top_id.equals(node_id) ? true : false);
     292   
     293    DBInfo info = gdbm_src_.getInfo(node_id);
     294    String children = info.getInfo("contains");
     295    boolean is_leaf = (children.equals("") ? true : false);
     296
     297    // set teh node type att
     298    if (is_top) {
    289299        doc_node.setAttribute(GSXML.NODE_TYPE_ATT, GSXML.NODE_TYPE_ROOT);
    290     else if (isLeafNode(doc_id))
     300    } else if (is_leaf) {
    291301        doc_node.setAttribute(GSXML.NODE_TYPE_ATT, GSXML.NODE_TYPE_LEAF);
    292     else
     302    } else {
    293303        doc_node.setAttribute(GSXML.NODE_TYPE_ATT, GSXML.NODE_TYPE_INTERIOR);
     304    }
     305
     306    // set teh doc type att
     307    if (is_top && is_leaf) { // a single section document
     308        doc_node.setAttribute(GSXML.DOC_TYPE_ATT, "simple");
     309        return doc_node;
     310    }
     311
     312    if (!is_top) { // we need to look at the top info
     313        info = gdbm_src_.getInfo(top_id);
     314    }
     315
     316    String childtype = info.getInfo("childtype");
     317    if (childtype.equals("Paged")) {
     318        doc_node.setAttribute(GSXML.DOC_TYPE_ATT, "paged");
     319    } else {
     320        doc_node.setAttribute(GSXML.DOC_TYPE_ATT, "hierarchy");
     321    }
    294322    return doc_node;
    295323    }
    296 
     324   
     325    /** returns the document type of a node - if the node is a subnode, it returns teh type of teh top document node. for now, only does paged and hierarchical, but eventually will have more types */
     326    protected String getDocType(String node_id) {
     327
     328    String doc_id = OID.getTop(node_id);
     329    DBInfo info = gdbm_src_.getInfo(doc_id);
     330    String child_type = info.getInfo("childtype");
     331    if (child_type.equals("Paged")) {
     332        return "paged";
     333    }
     334    return "hierarchy";
     335   
     336    }
    297337
    298338    /** Returns true if the OID specifies a leaf node, false otherwise
Note: See TracChangeset for help on using the changeset viewer.