001: //$HeadURL: $
002: /*---------------- FILE HEADER ------------------------------------------
003: This file is part of deegree.
004: Copyright (C) 2001-2008 by:
005: Department of Geography, University of Bonn
006: http://www.giub.uni-bonn.de/deegree/
007: lat/lon GmbH
008: http://www.lat-lon.de
009:
010: This library is free software; you can redistribute it and/or
011: modify it under the terms of the GNU Lesser General Public
012: License as published by the Free Software Foundation; either
013: version 2.1 of the License, or (at your option) any later version.
014: This library is distributed in the hope that it will be useful,
015: but WITHOUT ANY WARRANTY; without even the implied warranty of
016: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017: Lesser General Public License for more details.
018: You should have received a copy of the GNU Lesser General Public
019: License along with this library; if not, write to the Free Software
020: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
021: Contact:
022:
023: Andreas Poth
024: lat/lon GmbH
025: Aennchenstr. 19
026: 53177 Bonn
027: Germany
028: E-Mail: poth@lat-lon.de
029:
030: Prof. Dr. Klaus Greve
031: Department of Geography
032: University of Bonn
033: Meckenheimer Allee 166
034: 53115 Bonn
035: Germany
036: E-Mail: greve@giub.uni-bonn.de
037: ---------------------------------------------------------------------------*/
038:
039: package org.deegree.ogcwebservices.csw.discovery;
040:
041: import java.net.URI;
042: import java.net.URISyntaxException;
043: import java.util.Map;
044:
045: import org.deegree.framework.log.ILogger;
046: import org.deegree.framework.log.LoggerFactory;
047: import org.deegree.i18n.Messages;
048: import org.deegree.ogcwebservices.OGCRequestFactory;
049: import org.deegree.ogcwebservices.OGCWebServiceException;
050: import org.deegree.ogcwebservices.csw.AbstractCSWRequest;
051: import org.deegree.ogcwebservices.csw.CSWExceptionCode;
052:
053: /**
054: * The <code>GetRepositoryItem</code> class encapsulates the data of a request for a repository
055: * item.
056: *
057: * @author <a href="mailto:bezema@lat-lon.de">Rutger Bezema</a>
058: *
059: * @author last edited by: $Author:$
060: *
061: * @version $Revision:$, $Date:$
062: *
063: */
064:
065: public class GetRepositoryItem extends AbstractCSWRequest {
066:
067: /**
068: *
069: */
070: private static final long serialVersionUID = 6140080070986019397L;
071:
072: private static ILogger LOG = LoggerFactory
073: .getLogger(GetRepositoryItem.class);
074:
075: private URI reposItem;
076:
077: private String service;
078:
079: /**
080: * Creates a new <code>GetRepositoryItem</code> instance.
081: *
082: * @param id
083: * @param version
084: * @param vendorSpecificParameters
085: * @param reposItem
086: * some uri identifying some ebrim extrinsic object
087: */
088: public GetRepositoryItem(String id, String version,
089: Map<String, String> vendorSpecificParameters, URI reposItem) {
090: super (version, id, vendorSpecificParameters);
091: this .service = OGCRequestFactory.CSW_SERVICE_NAME_EBRIM;
092: this .reposItem = reposItem;
093: }
094:
095: /**
096: * @param id
097: * of the request
098: * @param version
099: * of the csw
100: */
101: public GetRepositoryItem(String id, String version) {
102: super (version, id, null);
103: }
104:
105: /**
106: * Creates a new <code>GetRepositoryItem</code> instance from the values stored in the
107: * submitted Map. Keys (parameter names) in the Map must be uppercase.
108: *
109: * @TODO evaluate vendorSpecificParameter
110: *
111: * @param kvp
112: * Map containing the parameters
113: * @return a GetRepositoryItem instance with given id and values from the kvp
114: * @exception OGCWebServiceException
115: */
116: public static GetRepositoryItem create(Map<String, String> kvp)
117: throws OGCWebServiceException {
118:
119: String service = getRequiredParam("SERVICE", kvp);
120: if (!OGCRequestFactory.CSW_SERVICE_NAME_EBRIM.equals(service)) {
121: throw new OGCWebServiceException(Messages.getMessage(
122: "CSW_INVALID_REQUEST_PARAM", "service",
123: OGCRequestFactory.CSW_SERVICE_NAME_EBRIM, service),
124: CSWExceptionCode.WRS_INVALIDREQUEST);
125: }
126:
127: String request = getRequiredParam("REQUEST", kvp);
128: if (!"GetRepositoryItem".equals(request)) {
129: throw new OGCWebServiceException(Messages.getMessage(
130: "CSW_INVALID_REQUEST_PARAM", "request",
131: "GetRepositoryItem", request),
132: CSWExceptionCode.WRS_INVALIDREQUEST);
133: }
134:
135: String requestID = getParam("REQUESTID", kvp, "0");
136:
137: String id = getRequiredParam("ID", kvp);
138: URI reposItem = null;
139: try {
140: reposItem = new URI(id);
141: } catch (URISyntaxException urise) {
142: throw new OGCWebServiceException(Messages.getMessage(
143: "CSW_INVALID_REQUEST_PARAM", "id",
144: "some kind of valid repository URI", id),
145: CSWExceptionCode.WRS_INVALIDREQUEST);
146: }
147: LOG.logDebug("GetRepositoryItem id=" + reposItem);
148:
149: // for GetRepositoryItem default version is 2.0.1 because ebRIM profile set up
150: // on CSW 2.0.1 specification
151: String version = getParam("REQUESTID", kvp, "2.0.1");
152:
153: return new GetRepositoryItem(requestID, version, kvp, reposItem);
154: }
155:
156: /**
157: * @return the value 'urn:x-ogc:specification:cswebrim:Service:OGC-CSW:ebRIM'
158: */
159: @Override
160: public String getServiceName() {
161: return service;
162: }
163:
164: /**
165: * @return the requested repository Item's id.
166: */
167: public URI getRepositoryItemID() {
168: return reposItem;
169: }
170: }
|