001: //$HeadURL: https://sushibar/svn/deegree/base/trunk/resources/eclipse/svn_classfile_header_template.xml $
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.wms;
040:
041: import java.util.LinkedList;
042:
043: import org.deegree.datatypes.QualifiedName;
044: import org.deegree.framework.xml.XMLFragment;
045: import org.deegree.framework.xml.XMLTools;
046: import org.deegree.i18n.Messages;
047: import org.deegree.ogcwebservices.OGCWebServiceException;
048: import org.deegree.ogcwebservices.wms.capabilities.Layer;
049: import org.deegree.ogcwebservices.wms.configuration.AbstractDataSource;
050: import org.deegree.ogcwebservices.wms.configuration.LocalWFSDataSource;
051: import org.deegree.ogcwebservices.wms.configuration.WMSConfigurationType;
052: import org.deegree.ogcwebservices.wms.operation.DescribeLayer;
053: import org.deegree.ogcwebservices.wms.operation.DescribeLayerResult;
054: import org.w3c.dom.Element;
055:
056: /**
057: * <code>DescribeLayerHandler</code>
058: *
059: * @author <a href="mailto:schmitz@lat-lon.de">Andreas Schmitz</a>
060: * @author last edited by: $Author:$
061: *
062: * @version $Revision:$, $Date:$
063: */
064: public class DescribeLayerHandler {
065:
066: /**
067: * @param request
068: * @param configuration
069: * @return a result object with the XML result
070: * @throws OGCWebServiceException
071: */
072: public DescribeLayerResult perform(DescribeLayer request,
073: WMSConfigurationType configuration)
074: throws OGCWebServiceException {
075: String[] layers = request.getLayers();
076:
077: LinkedList<Layer> ls = new LinkedList<Layer>();
078: // check layers for existance
079: for (String l : layers) {
080: Layer layer = configuration.getLayer(l);
081: if (layer == null) {
082: throw new OGCWebServiceException(Messages.getMessage(
083: "WMS_UNKNOWNLAYER", l));
084: }
085: ls.add(layer);
086: }
087:
088: XMLFragment doc = new XMLFragment(new QualifiedName(
089: "WMS_DescribeLayerResponse"));
090: Element root = doc.getRootElement();
091: root.setAttribute("version", "1.1.1");
092:
093: for (Layer l : ls) {
094: Element lay = XMLTools.appendElement(root, null,
095: "LayerDescription");
096: lay.setAttribute("name", l.getName());
097: AbstractDataSource[] ds = l.getDataSource();
098: if (ds != null) {
099: for (AbstractDataSource d : ds) {
100: if (d instanceof LocalWFSDataSource) {
101: // lay.setAttribute( "wfs", "unknown" );
102: LocalWFSDataSource wfsds = (LocalWFSDataSource) d;
103: Element e = XMLTools.appendElement(lay, null,
104: "Query");
105: QualifiedName qn = wfsds.getName();
106: e.setAttribute("xmlns:" + qn.getPrefix(), qn
107: .getNamespace().toASCIIString());
108: e
109: .setAttribute("typeName", qn
110: .getPrefixedName());
111: }
112: }
113: }
114: }
115:
116: return new DescribeLayerResult(request, doc);
117: }
118:
119: }
|