Show
Ignore:
Timestamp:
11.09.2012 16:22:31 (7 years ago)
Author:
ak19
Message:

Uncommitted changes from ages back to fedoraGS3 classes to get greenstone to work as an interface to fedora repository backend.

Location:
other-projects/gs3-webservices-java-client/trunk/src
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • other-projects/gs3-webservices-java-client/trunk/src/GS3DemoClient/org/greenstone/gs3client/dlservices/FedoraServicesAPIA.java

    r22298 r26171  
    242242        return this.browseMetadataRetrieve(nodeIDs, metafields); 
    243243    } 
     244     
     245        
     246    // FOR NOW, add the new method that converts URLs to document identifiers(PIDs) here, 
     247    // since it is not used by GS3 classes 
     248    public String getDocIDforURL(String url, String collection) { 
     249    return this.getPIDforURL(url, collection); 
     250    } 
    244251     
    245252} 
  • other-projects/gs3-webservices-java-client/trunk/src/GS3Fedora/org/greenstone/fedora/services/FedoraConnection.java

    r22368 r26171  
    984984    } 
    985985     
     986 
     987    /** Used to obtain the dc:title value (hashID) of the DC stream of a digital 
     988     * object whose fedoraID is of a special sort: greenstone-http:<colname>-id. */ 
     989    protected String getDCTitle(String fedoraPID)  
     990    throws RemoteException, UnsupportedEncodingException,  
     991            SAXException, IOException 
     992    { 
     993    String title = ""; 
     994    MIMETypedStream dcdata = APIA.getDatastreamDissemination(fedoraPID, DC, null); 
     995    if(dcdata == null || dcdata.equals("")) { 
     996        return title; 
     997    } 
     998    String dcStream = new String(dcdata.getStream(), UTF8); 
     999     
     1000    InputSource source = new InputSource(new StringReader(dcStream)); 
     1001    Document doc = builder.parse(source); 
     1002    Element docEl = doc.getDocumentElement(); // docEl=<oai_dc:dc></oai_dc:dc> 
     1003    NodeList children = docEl.getElementsByTagName("dc:title"); 
     1004    if(children != null && children.getLength() > 0) { 
     1005        Node n = children.item(0); // <dc:title> 
     1006        Element e = (Element)n; 
     1007        title = FedoraCommons.getValue(e); 
     1008    } 
     1009    return title; 
     1010    } 
     1011 
    9861012    /** @return the title metadata for the given document sections.  
    9871013     * These titles are returned in the same order as the given docPIDs 
  • other-projects/gs3-webservices-java-client/trunk/src/GS3Fedora/org/greenstone/fedora/services/FedoraGS3Connection.java

    r22308 r26171  
    455455            // <documentNodeList> 
    456456         
    457         // <documentNode nodeID="docID"> - the docNode on which a structure   
     457        // <documentNode nodeID="docID"> - the docNode on which a metadata 
    458458        // retrieve is being performed 
    459459        Element docNode = doc.createElement(GSXML.DOC_NODE_ELEM); 
     
    23522352        } 
    23532353    } 
     2354 
     2355     
     2356    // FOR NOW, add the new method that converts URLs to document identifiers(PIDs) 
     2357    /** Given a URL that represents a fedoraPID, will look up the object. 
     2358     * If it exists, it will return the contents of the DC:Title of its datastream. 
     2359     * If it doesn't exist, it will return the URL as-is. 
     2360     * @param URL: the URL that (after modification) represents a fedoraPID to look up. 
     2361     * @param collection: the name of collection in which to search for the URL 
     2362     * representing a fedoraPID. 
     2363     * @return the string (representing a fedoraPID) stored in the DC:Title of the 
     2364     * URL-fedoraPID. If the URL-fedoraPID is not an object in the given collection, 
     2365     * then the parameter URL is returned. 
     2366    */ 
     2367    public String getPIDforURL(String url, String collection) { 
     2368    FedoraGS3RunException ex = null; // any RemoteException 
     2369 
     2370    // (1) convert url to the fedorapid 
     2371    // / -> _ and : -> - 
     2372    String fedoraPID = url.replaceAll("/", "_"); 
     2373    fedoraPID = fedoraPID.replaceAll(":", "-"); 
     2374    // prefix "greenstone-http:<colname>-" to the fedoraPID 
     2375    fedoraPID = GREENSTONE+_HTTP+COLON+collection+HYPHEN+fedoraPID; 
     2376    //LOG.error("### fedoraPID: " + fedoraPID); 
     2377 
     2378    // (2) Look up the datastream for the fedorapid 
     2379    String dcTitle = ""; 
     2380    try { 
     2381        dcTitle = getDCTitle(fedoraPID); 
     2382    } catch(Exception e) { 
     2383        LOG.error("Error retrieving dcTitle for PID " + fedoraPID + ": " + e); 
     2384        ex = new FedoraGS3RunException("When trying to retrieve dc:title for URL: " + url, e); 
     2385    } 
     2386    //String dc = this.getDC(fedoraPID); 
     2387    //LOG.error("### document ID (in dcTitle) found is: " + dcTitle); 
     2388 
     2389    // (3) if fedorapid exists, extract the dc:title content. 
     2390    // if it doesn't exist, return url 
     2391    if(dcTitle.equals("")) {         
     2392        return url; 
     2393    } else { 
     2394        // It represents a fedoraPID of its own, so prefix fedora namespace and return it. 
     2395        //return GREENSTONE+COLON+collection+HYPHEN+dcTitle; // NO. Handled in g2f-buildcol.pl 
     2396        return dcTitle+"-1"; 
     2397    } 
     2398    } 
    23542399     
    23552400    public static void main(String args[]) { 
  • other-projects/gs3-webservices-java-client/trunk/src/GS3Fedora/org/greenstone/fedora/services/FedoraGS3DL.java

    r22300 r26171  
    5454    public static final String COLLECTION = "collection"; 
    5555    public static final String _COLLECTION = "-"+COLLECTION; 
     56    public static final String _HTTP = "-http"; 
    5657     
    5758    public static final String WILDCARD = "*"; 
  • other-projects/gs3-webservices-java-client/trunk/src/GS3Fedora/org/greenstone/fedora/services/FedoraGS3Exception.java

    r15439 r26171  
    201201                    msg = " " + msg + ". "; 
    202202            } 
     203             
     204            LOG.error("### ERROR"); 
     205            LOG.error(msg, cause); 
    203206            return this.getClass().getCanonicalName()  
    204207                + msg + super.getMessage(); 
  • other-projects/gs3-webservices-java-client/trunk/src/GS3Fedora/org/greenstone/fedora/services/FedoraToGS3Interface.java

    r22300 r26171  
    296296    public String query(String collection, String service,  
    297297            Map nameValParamsMap);  
     298 
     299     
     300    /** Given a URL that represents a fedoraPID, will look up the object. 
     301     * If it exists, it will return the contents of the DC:Title of its datastream. 
     302     * If it doesn't exist, it will return the URL as-is. 
     303     * @param URL: the URL that (after modification) represents a fedoraPID to look up. 
     304     * @param collection: the name of collection in which to search for the URL 
     305     * representing a fedoraPID. 
     306     * @return the string (representing a fedoraPID) stored in the DC:Title of the 
     307     * URL-fedoraPID. If the URL-fedoraPID is not an object in the given collection, 
     308     * then the parameter URL is returned. 
     309    */ 
     310    public String getPIDforURL(String url, String collection); 
    298311}