/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package de.cismet.cismap.commons.featureservice; import org.apache.log4j.Logger; import org.jdom.Element; import java.net.URI; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.Icon; import javax.swing.ImageIcon; import de.cismet.cismap.commons.LayerInfoProvider; import de.cismet.cismap.commons.features.FeatureServiceFeature; import de.cismet.cismap.commons.featureservice.factory.FeatureFactory; import de.cismet.cismap.commons.featureservice.factory.GMLFeatureFactory; import de.cismet.cismap.commons.wms.capabilities.Layer; /** * Document FeatureService that supports GML Documents. * * @author Sebastian Puhl * @author Pascal Dihé * @version $Revision$, $Date$ */ public class GMLFeatureService extends DocumentFeatureService<FeatureServiceFeature, String> implements LayerInfoProvider { //~ Static fields/initializers --------------------------------------------- private static final transient Logger LOG = Logger.getLogger(GMLFeatureService.class); public static final String GML_FEATURELAYER_TYPE = "GMLFeatureServiceLayer"; // NOI18N public static final Map<Integer, Icon> layerIcons = new HashMap<Integer, Icon>(); static { layerIcons.put( LAYER_ENABLED_VISIBLE, new ImageIcon( AbstractFeatureService.class.getResource( "/de/cismet/cismap/commons/gui/layerwidget/res/layerGml.png"))); // NOI18N layerIcons.put( LAYER_ENABLED_INVISIBLE, new ImageIcon( AbstractFeatureService.class.getResource( "/de/cismet/cismap/commons/gui/layerwidget/res/layerGmlInvisible.png"))); // NOI18N layerIcons.put( LAYER_DISABLED_VISIBLE, new ImageIcon( AbstractFeatureService.class.getResource( "/de/cismet/cismap/commons/gui/layerwidget/res/disabled/layerGml.png"))); // NOI18N layerIcons.put( LAYER_DISABLED_INVISIBLE, new ImageIcon( AbstractFeatureService.class.getResource( "/de/cismet/cismap/commons/gui/layerwidget/res/disabled/layerGmlInvisible.png"))); // NOI18N } //~ Constructors ----------------------------------------------------------- /** * Creates a new GMLFeatureService object. * * @param e DOCUMENT ME! * * @throws Exception DOCUMENT ME! */ public GMLFeatureService(final Element e) throws Exception { super(e); } /** * Creates a new GMLFeatureService object. * * @param name DOCUMENT ME! * @param documentURI DOCUMENT ME! * @param documentSize DOCUMENT ME! * @param attributes DOCUMENT ME! * * @throws Exception DOCUMENT ME! */ public GMLFeatureService(final String name, final URI documentURI, final long documentSize, final List<FeatureServiceAttribute> attributes) throws Exception { super(name, documentURI, documentSize, attributes); } /** * Creates a new GMLFeatureService object. * * @param gfs DOCUMENT ME! */ protected GMLFeatureService(final GMLFeatureService gfs) { super(gfs); } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @param type DOCUMENT ME! * * @return DOCUMENT ME! */ @Override public Icon getLayerIcon(final int type) { return layerIcons.get(type); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ @Override protected LayerProperties createLayerProperties() { final DefaultLayerProperties defaultLayerProperties = new DefaultLayerProperties(); // IDs of documents can be autogenerated (faster)! defaultLayerProperties.setIdExpression(null, LayerProperties.EXPRESSIONTYPE_UNDEFINED); defaultLayerProperties.setFeatureService(this); return defaultLayerProperties; } /** * DOCUMENT ME! * * @return DOCUMENT ME! * * @throws Exception DOCUMENT ME! */ @Override protected FeatureFactory createFeatureFactory() throws Exception { return new GMLFeatureFactory(this.getLayerProperties(), this.getDocumentURI(), this.maxSupportedFeatureCount, this.layerInitWorker); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ @Override public String getQuery() { // LOG.warn("unexpected call to getQuery, not supported by this service"); return null; } /** * DOCUMENT ME! * * @param query DOCUMENT ME! */ @Override public void setQuery(final String query) { LOG.warn("unexpected call to setQuery, not supported by this service:\n" + query); // NOI18N } /** * DOCUMENT ME! * * @throws Exception DOCUMENT ME! */ @Override protected void initConcreteInstance() throws Exception { // nothing to do here } /** * DOCUMENT ME! * * @param documentURI DOCUMENT ME! */ @Override public void setDocumentURI(final URI documentURI) { super.setDocumentURI(documentURI); if (this.getFeatureFactory() != null) { ((GMLFeatureFactory)this.getFeatureFactory()).setDocumentURI(documentURI); } } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ @Override protected String getFeatureLayerType() { return GML_FEATURELAYER_TYPE; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ @Override public Object clone() { LOG.info("cloning service " + this.getName()); // NOI18N return new GMLFeatureService(this); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ @Override public String getLayerURI() { return null; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ @Override public String getServerURI() { return documentURI.toString(); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ @Override public boolean isLayerQuerySelected() { return false; } /** * DOCUMENT ME! * * @param selected DOCUMENT ME! */ @Override public void setLayerQuerySelected(final boolean selected) { } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ @Override public boolean isQueryable() { return false; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ @Override public Layer getLayerInformation() { return null; } }