/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.cismap.commons; import org.jdom.DataConversionException; import org.jdom.Element; import java.util.Iterator; import java.util.List; import java.util.TreeMap; import java.util.Vector; import de.cismet.cismap.commons.features.FeatureCollection; import de.cismet.cismap.commons.featureservice.SimplePostgisFeatureService; import de.cismet.cismap.commons.featureservice.SimpleUpdateablePostgisFeatureService; import de.cismet.cismap.commons.featureservice.WebFeatureService; import de.cismet.cismap.commons.raster.wms.simple.SimpleWMS; import de.cismet.cismap.commons.rasterservice.MapService; import de.cismet.tools.configuration.Configurable; import de.cismet.tools.configuration.NoWriteError; /** * DOCUMENT ME! * * @author thorsten.hell@cismet.de * @version $Revision$, $Date$ */ @Deprecated public class DefaultMappingModel implements MappingModel, Configurable { //~ Static fields/initializers --------------------------------------------- public static final int UP = -1; public static final int DOWN = 1; //~ Instance fields -------------------------------------------------------- TreeMap mapServices = new TreeMap(); TreeMap featureServices = new TreeMap(); FeatureCollection featureCollection; Vector mappingModelListeners = new Vector(); BoundingBox initialBoundingBox; private final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass()); //~ Constructors ----------------------------------------------------------- /** * Creates a new instance of DefaultMappingModel. */ public DefaultMappingModel() { } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @param rs DOCUMENT ME! * * @return DOCUMENT ME! */ public int moveRasterServiceUp(final MapService rs) { return moveRasterService(rs, UP); } /** * DOCUMENT ME! * * @param rs DOCUMENT ME! * * @return DOCUMENT ME! */ public int moveRasterServiceDown(final MapService rs) { return moveRasterService(rs, DOWN); } /** * DOCUMENT ME! * * @param rs DOCUMENT ME! * @param step DOCUMENT ME! * * @return DOCUMENT ME! */ public int moveRasterService(final MapService rs, final int step) { return moveObjectInTreeMap(mapServices, rs, step); } /** * DOCUMENT ME! * * @param tm DOCUMENT ME! * @param o DOCUMENT ME! * @param step DOCUMENT ME! * * @return DOCUMENT ME! */ private int moveObjectInTreeMap(final TreeMap tm, final Object o, final int step) { try { if (log.isDebugEnabled()) { log.debug("moveObjectInTreeMap"); // NOI18N } final Vector v = new Vector(tm.values()); final int currentPosition = v.indexOf(o); final int newPosition = currentPosition + step; final Object objectToBeShifted = v.get(newPosition); v.set(newPosition, o); v.set(currentPosition, objectToBeShifted); tm.clear(); for (int i = 0; i < v.size(); ++i) { tm.put(i, v.get(i)); } return newPosition; } catch (Exception e) { log.warn("No moving", e); // NOI18N return -1; } } // public static void main(String[] args) { // DefaultMappingModel dm = new DefaultMappingModel(); // TreeMap tm = new TreeMap(); // tm.put(3, "C"); // tm.put(4, "D"); // tm.put(5, "E"); // tm.put(1, "A"); // tm.put(2, "B"); // System.out.println(tm); // // dm.moveObjectInTreeMap(tm, "A", DOWN); // System.out.println(tm); // } // public void putFeatureService(int position, de.cismet.cismap.commons.featureservice.FeatureService featureService) { // featureServices.put(new Integer(position), featureService); // } @Override public void addMappingModelListener(final MappingModelListener mml) { if (!(mappingModelListeners.contains(mml))) { mappingModelListeners.add(mml); } } // public void removeFeatureService(de.cismet.cismap.commons.featureservice.FeatureService featureService) { // } @Override public void removeMappingModelListener(final MappingModelListener mml) { mappingModelListeners.remove(mml); } /** * public void setFeatureCollection(de.cismet.cismap.commons.features.FeatureCollection featureCollection) { * this.featureCollection=featureCollection; featureCollection.addFeatureCollectionListener(this); }. * * @param bb DOCUMENT ME! */ public void setInitialBoundingBox(final BoundingBox bb) { initialBoundingBox = bb; } /** * DOCUMENT ME! * * @param rasterService DOCUMENT ME! */ public void removeMapService(final de.cismet.cismap.commons.rasterservice.MapService rasterService) { mapServices.remove(rasterService); } /** * DOCUMENT ME! * * @param position DOCUMENT ME! * @param rasterService DOCUMENT ME! */ public void putMapService(final int position, final de.cismet.cismap.commons.rasterservice.MapService rasterService) { mapServices.put(new Integer(position), rasterService); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ @Deprecated public de.cismet.cismap.commons.features.FeatureCollection getFeatureCollection() { return featureCollection; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public TreeMap getMapServices() { return featureServices; } @Override public BoundingBox getInitialBoundingBox() { return initialBoundingBox; } @Override public TreeMap getRasterServices() { return mapServices; } // public void selectionChanged(MappingModelEvent mme) { // Iterator it=mappingModelListeners.iterator(); // while (it.hasNext()) { // Object o=it.next(); // if (o instanceof MappingModelListener) { // ((MappingModelListener)o).selectionChanged(mme); // } // else { // //TODO Loggerausgabe // } // } // } // // public void featureCollectionChanged(MappingModelEvent mme) { // log.debug("DefaultMappingModel:featureCollectionChanged()"); // Iterator it=mappingModelListeners.iterator(); // while (it.hasNext()) { // Object o=it.next(); // if (o instanceof MappingModelListener) { // log.debug("MappingModelListener:featureCollectionChanged()"); // ((MappingModelListener)o).featureCollectionChanged(mme); // } // else { // //TODO Loggerausgabe // } // } // } // TODO @Override public void addLayer(final RetrievalServiceLayer layer) { } @Override public void removeLayer(final RetrievalServiceLayer layer) { } @Override public void configure(final Element parent) { final Element prefs = parent.getChild("cismapMappingPreferences"); // NOI18N final XBoundingBox xBox = null; // // // while (it.hasNext()) { // // //SimpleRasterServices // prefs = parent.getChild("cismapActiveLayerConfiguration"); // List simpleWmsList = prefs.getChild("rasterLayers").getChildren("simpleWms"); // it = simpleWmsList.iterator(); // while (it.hasNext()) { // Object o = it.next(); // if (o instanceof Element) { // Element el = (Element) o; // // } // } // // //SimplePostgisServices // List simplePostgisFeatureServiceList = prefs.getChild("featureLayers").getChildren("simplePostgisFeatureService"); // it = simplePostgisFeatureServiceList.iterator(); // while (it.hasNext()) { // Object o = it.next(); // if (o instanceof Element) { // Element el = (Element) o; // // } // } // // //SimpleWebFeatureServices // List simpleWFSFeatureServiceList = prefs.getChild("featureLayers").getChildren("simpleWebFeatureService"); // it = simpleWFSFeatureServiceList.iterator(); // while (it.hasNext()) { // Object o = it.next(); // if (o instanceof Element) { // // } // } // } } @Override public void masterConfigure(final Element parent) { if (log.isDebugEnabled()) { log.debug("masterConfigure im DefaultmappingModel:" + parent); // NOI18N } Element prefs = parent.getChild("cismapMappingPreferences"); // NOI18N Iterator<Element> it = prefs.getChildren("home").iterator(); // NOI18N XBoundingBox xBox = null; while (it.hasNext()) { final Element elem = it.next(); final String srs = elem.getAttribute("srs").getValue(); // NOI18N boolean metric = false; try { metric = elem.getAttribute("metric").getBooleanValue(); // NOI18N } catch (DataConversionException dce) { log.warn("Metric has invalid syntax", dce); // NOI18N } boolean defaultVal = false; try { defaultVal = elem.getAttribute("default").getBooleanValue(); // NOI18N } catch (DataConversionException dce) { log.warn("defaulthas invalid syntax", dce); // NOI18N } if (defaultVal) { try { xBox = new XBoundingBox(elem, srs, metric); setInitialBoundingBox(xBox); } catch (Throwable t) { log.fatal("The home bounding box cannot be set. This will probably fail :-7", t); // NOI18N } } } // failure because there could be several boundingBoxes getInitialBoundingBox(); // SimpleRasterServices prefs = parent.getChild("cismapActiveLayerConfiguration"); // NOI18N final List simpleWmsList = prefs.getChild("rasterLayers").getChildren("simpleWms"); // NOI18N it = simpleWmsList.iterator(); while (it.hasNext()) { final Object o = it.next(); if (o instanceof Element) { final Element el = (Element)o; try { boolean skip = false; try { skip = el.getAttribute("skip").getBooleanValue(); // NOI18N } catch (Exception skipException) { } if (!skip) { final SimpleWMS swms = new SimpleWMS(el); mapServices.put(new Integer(swms.getLayerPosition()), swms); if (log.isDebugEnabled()) { log.debug("Rasterservice added:" + swms + "(" + swms.getLayerPosition() + ")"); // NOI18N } } } catch (Exception ex) { log.warn("Read Preferences. Error. create SimpleWMS ", ex); // NOI18N } } } // SimplePostgisServices final List simplePostgisFeatureServiceList = prefs.getChild("featureLayers") .getChildren("simplePostgisFeatureService"); // NOI18N it = simplePostgisFeatureServiceList.iterator(); while (it.hasNext()) { if (log.isDebugEnabled()) { log.debug("new SimplePostgisService"); // NOI18N } final Object o = it.next(); if (o instanceof Element) { final Element el = (Element)o; try { if (log.isDebugEnabled()) { log.debug("SimplePostgisFeatureService added"); // NOI18N } boolean skip = false; boolean updateable = false; try { skip = el.getAttribute("skip").getBooleanValue(); // NOI18N } catch (Exception skipException) { } try { updateable = el.getAttribute("updateable").getBooleanValue(); // NOI18N } catch (Exception skipException) { } if (!skip) { SimplePostgisFeatureService spfs = null; if (updateable) { spfs = new SimpleUpdateablePostgisFeatureService(el); } else { spfs = new SimplePostgisFeatureService(el); } featureServices.put(new Integer(spfs.getLayerPosition()), spfs); } } catch (Exception ex) { log.warn("Read Preferences. Error. Create SimplePostgisFeatureService ", ex); // NOI18N } } } // //SimpleWebFeatureServices // List simpleWFSFeatureServiceList = prefs.getChild("featureLayers").getChildren("simpleWebFeatureService"); // it = simpleWFSFeatureServiceList.iterator(); // while (it.hasNext()) { // Object o = it.next(); // if (o instanceof Element) { // try { // boolean skip = false; // boolean updateable = false; // try { // skip = ((Element) o).getAttribute("skip").getBooleanValue(); // } catch (Exception skipException) { // } // try { // updateable = ((Element) o).getAttribute("updateable").getBooleanValue(); // } catch (Exception skipException) { // } // if (!skip) { // SimpleWebFeatureService swfs = null; // if (updateable) { // //TODO IMPLEMENT ? // //spfs = new SimpleUpdateablePostgisFeatureService(el); // } else { // swfs = new SimpleWebFeatureService(((Element) o)); // //TODO failure static position // putFeatureService(swfs.getLayerPosition(), swfs); // } // //featureServices.put(new Integer(swfs.getLayerPosition()),swfs); // log.debug("SimpleWebFeatureService hinzugef\u00FCgt"); // } // } catch (Exception ex) { // log.warn("Preferences Auslesen. Fehler. SimpleWebFeatureService erzeugen ", ex); // } // } // } } @Override public Element getConfiguration() throws NoWriteError { return null; } @Override public TreeMap getFeatureServices() { return this.featureServices; } @Override public Crs getSrs() { throw new UnsupportedOperationException("Not supported yet."); } }