Project

General

Profile

1
/**
2
 *  '$RCSfile$'
3
 *  Copyright: 2006 Regents of the University of California and the
4
 *             National Center for Ecological Analysis and Synthesis
5
 *
6
 *   '$Author: jones $'
7
 *     '$Date: 2006-02-24 13:16:56 -0800 (Fri, 24 Feb 2006) $'
8
 * '$Revision: 2916 $'
9
 *
10
 * This program is free software; you can redistribute it and/or modify
11
 * it under the terms of the GNU General Public License as published by
12
 * the Free Software Foundation; either version 2 of the License, or
13
 * (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 * GNU General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU General Public License
21
 * along with this program; if not, write to the Free Software
22
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
23
 */
24
package edu.ucsb.nceas.metacat;
25

    
26
import java.io.File;
27
import java.io.IOException;
28
import java.util.Hashtable;
29

    
30
import edu.ucsb.nceas.utilities.Options;
31

    
32
/**
33
 * Generate a pathquery document representing a metacat query for a list of 
34
 * document IDs.
35
 */
36
public class DocumentIdQuery
37
{
38

    
39
    /**
40
     * Create an squery using some preset values for the query parameters, only
41
     * passing in the document ids to be searched.
42
     * 
43
     * @param docidList an arrany of document identifiers to search for
44
     */
45
    public static String createDocidQuery(String[] docidList)
46
    {
47
        String pathQuery = "";
48
        Hashtable params = getDefaultQueryParams();
49
        if (docidList != null) {
50
            params.put("/eml/@packageId", docidList);
51
        }
52
        
53
        pathQuery = DBQuery.createSQuery(params);
54
        return pathQuery;
55
    }
56
    
57
    /**
58
     * Create a paramter list containing default parameters for a query
59
     * 
60
     * @return Hashtable containing the default parameters
61
     */
62
    public static Hashtable getDefaultQueryParams()
63
    {
64
        Hashtable params = new Hashtable();
65
        
66
        String[] operator = new String[1];
67
        operator[0] = "UNION";
68
        params.put("operator", operator);
69
        
70
        String[] doctypes = new String[4];
71
        doctypes[0] = "eml://ecoinformatics.org/eml-2.0.1";
72
        doctypes[1] = "eml://ecoinformatics.org/eml-2.0.0";
73
        doctypes[2] = "-//ecoinformatics.org//eml-dataset-2.0.0beta6//EN";
74
        doctypes[3] = "-//ecoinformatics.org//eml-dataset-2.0.0beta4//EN";
75
        params.put("returndoctype", doctypes);
76
        
77
        String[] fields = new String[8];
78
        fields[0]="originator/individualName/surName";
79
        fields[1]="originator/individualName/givenName";
80
        fields[2]="creator/individualName/surName";
81
        fields[3]="creator/individualName/givenName";
82
        fields[4]="originator/organizationName";
83
        fields[5]="creator/organizationName";
84
        fields[6]="dataset/title";
85
        fields[7]="keyword";
86
        params.put("returnfield", fields);
87
        
88
        return params;
89
    }
90
    
91
    /**
92
     * Main method used for testing the class output
93
     * 
94
     * @param args no arguments used in this main method
95
     */
96
    public static void main(String[] args)
97
    {
98
        String CONFIG_DIR = "lib";
99
        String CONFIG_NAME = "metacat.properties";
100
        File dirPath = new File(CONFIG_DIR);
101
        File propertyFile = new File(dirPath, CONFIG_NAME);
102
        Options options = null;
103
        try {
104
            options = Options.initialize(propertyFile);
105
        } catch (IOException ioe) {
106
            System.err.println("Error in loading options: "
107
                    + ioe.getMessage());
108
        }
109
        
110
        String[] ids = new String[3];
111
        ids[0] = "ces_dataset.23.1";
112
        ids[1] = "knb-lter-vcr.97.1";
113
        ids[2] = "obfs.400.1";
114
        
115
        String pathquery = createDocidQuery(ids);
116
        System.out.println(pathquery);
117
    }
118

    
119
}
(29-29/65)