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 23:35:47 -0800 (Fri, 24 Feb 2006) $'
8
 * '$Revision: 2924 $'
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
    /**
41
     * Create an squery parameters table using an already-initialized hashtable
42
     * 
43
     * @param docidList an array of document identifiers to search for
44
     * @param params the hashtable to add the query parameters to.
45
     * 
46
     */
47
    public static Hashtable createDocidQueryParams(String[] docidList, Hashtable params)
48
    {
49
        params = getDefaultQueryParams();
50
        if (docidList != null) {
51
            params.put("/eml/@packageId", docidList);
52
        }
53
        return params;
54
    }
55
    
56
    
57
    /**
58
     * Create an squery using some preset values for the query parameters, only
59
     * passing in the document ids to be searched.
60
     * 
61
     * @param docidList an array of document identifiers to search for
62
     */
63
    public static String createDocidQuery(String[] docidList)
64
    {
65
        String pathQuery = "";
66
        Hashtable params = getDefaultQueryParams();
67
        if (docidList != null) {
68
            params.put("/eml/@packageId", docidList);
69
        }
70
        
71
        pathQuery = DBQuery.createSQuery(params);
72
        return pathQuery;
73
    }
74
    
75
    /**
76
     * Create a paramter list containing default parameters for a query
77
     * 
78
     * @return Hashtable containing the default parameters
79
     */
80
    public static Hashtable getDefaultQueryParams()
81
    {
82
        Hashtable params = new Hashtable();
83
        
84
        String[] operator = new String[1];
85
        operator[0] = "UNION";
86
        params.put("operator", operator);
87
        
88
        String[] doctypes = new String[5];
89
        doctypes[0] = "eml://ecoinformatics.org/eml-2.0.1";
90
        doctypes[1] = "eml://ecoinformatics.org/eml-2.0.0";
91
        doctypes[2] = "-//ecoinformatics.org//eml-dataset-2.0.0beta6//EN";
92
        doctypes[3] = "-//ecoinformatics.org//eml-dataset-2.0.0beta4//EN";
93
        doctypes[4] = "metadata";
94
        params.put("returndoctype", doctypes);
95
        
96
        String[] fields = new String[11];
97
        fields[0]="originator/individualName/surName";
98
        fields[1]="originator/individualName/givenName";
99
        fields[2]="creator/individualName/surName";
100
        fields[3]="creator/individualName/givenName";
101
        fields[4]="originator/organizationName";
102
        fields[5]="creator/organizationName";
103
        fields[6]="dataset/title";
104
        fields[7]="keyword";
105
        fields[8]="idinfo/citation/citeinfo/title";
106
        fields[9]="idinfo/citation/citeinfo/origin";
107
        fields[10]="idinfo/keywords/theme/themekey";
108
        params.put("returnfield", fields);
109
        
110
        return params;
111
    }
112
    
113
    /**
114
     * Main method used for testing the class output
115
     * 
116
     * @param args no arguments used in this main method
117
     */
118
    public static void main(String[] args)
119
    {
120
        String CONFIG_DIR = "lib";
121
        String CONFIG_NAME = "metacat.properties";
122
        File dirPath = new File(CONFIG_DIR);
123
        File propertyFile = new File(dirPath, CONFIG_NAME);
124
        Options options = null;
125
        try {
126
            options = Options.initialize(propertyFile);
127
        } catch (IOException ioe) {
128
            System.err.println("Error in loading options: "
129
                    + ioe.getMessage());
130
        }
131
        
132
        String[] ids = new String[3];
133
        ids[0] = "ces_dataset.23.1";
134
        ids[1] = "knb-lter-vcr.97.1";
135
        ids[2] = "obfs.400.1";
136
        
137
        String pathquery = createDocidQuery(ids);
138
        System.out.println(pathquery);
139
    }
140

    
141
}
(29-29/66)