/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package de.cismet.cismap.commons.preferences;
import org.jdom.Element;
import java.util.Iterator;
import java.util.List;
import java.util.TreeMap;
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;
/**
* DOCUMENT ME!
*
* @version $Revision$, $Date$
*/
public class LayersPreferences {
//~ Instance fields --------------------------------------------------------
final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass());
private final CismapPreferences cismapPreferences;
private TreeMap rasterServices = new TreeMap();
private TreeMap featureServices = new TreeMap();
private boolean appFeatureLayerEnabled = true;
private float appFeatureLayerTranslucency = 0.9f;
private String appFeatureLayerName = ""; // NOI18N
//~ Constructors -----------------------------------------------------------
/**
* Creates a new LayersPreferences object.
*
* @param cismapPreferences DOCUMENT ME!
* @param parent DOCUMENT ME!
*/
public LayersPreferences(final CismapPreferences cismapPreferences, final Element parent) {
this.cismapPreferences = cismapPreferences;
try {
appFeatureLayerEnabled = parent.getChild("appFeatureLayer").getAttribute("enabled").getBooleanValue();
} catch (Exception e) {
this.cismapPreferences.log.warn("Read preferences. Error. appFeatureLayer.enabled ", e);
} // NOI18N
try {
appFeatureLayerTranslucency = parent.getChild("appFeatureLayer").getAttribute("translucency")
.getFloatValue();
} catch (Exception e) {
this.cismapPreferences.log.warn("Read preferences. Error. appFeatureLayer.translucency ", e);
} // NOI18N
try {
appFeatureLayerName = parent.getChild("appFeatureLayer").getAttribute("name").getValue();
} catch (Exception e) {
this.cismapPreferences.log.warn("Read preferences. Error. appFeatureLayer.name ", e);
} // NOI18N
final List simpleWmsList = parent.getChild("rasterLayers").getChildren("simpleWms"); // NOI18N
Iterator 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();
} catch (Exception skipException) {
} // NOI18N
if (!skip) {
final SimpleWMS swms = new SimpleWMS(el);
rasterServices.put(new Integer(swms.getLayerPosition()), swms);
}
} catch (Exception ex) {
log.warn("Read preferences. Error. SimpleWMS erzeugen ", ex); // NOI18N
}
}
}
final List simplePostgisFeatureServiceList = parent.getChild("featureLayers")
.getChildren("simplePostgisFeatureService"); // NOI18N
it = simplePostgisFeatureServiceList.iterator();
while (it.hasNext()) {
final Object o = it.next();
if (o instanceof Element) {
final Element el = (Element)o;
if (log.isDebugEnabled()) {
log.debug("parsing '" + el.getName() + "' layer preferences"); // NOI18N
}
try {
if (log.isDebugEnabled()) {
log.debug("SimplePostgisFeatureService added"); // NOI18N
}
boolean skip = false;
boolean updateable = false;
try {
skip = el.getAttribute("skip").getBooleanValue();
} catch (Exception skipException) {
} // NOI18N
try {
updateable = el.getAttribute("updateable").getBooleanValue();
} catch (Exception skipException) {
} // NOI18N
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
}
}
}
final List simplePostgisWebServiceList = parent.getChild("featureLayers")
.getChildren("simpleWebFeatureService"); // NOI18N
it = simplePostgisWebServiceList.iterator();
while (it.hasNext()) {
final Object o = it.next();
if (o instanceof Element) {
final Element el = (Element)o;
try {
boolean skip = false;
boolean updateable = false;
try {
skip = el.getAttribute("skip").getBooleanValue();
} catch (Exception skipException) {
} // NOI18N
try {
updateable = el.getAttribute("updateable").getBooleanValue();
} catch (Exception skipException) {
} // NOI18N
if (!skip) {
WebFeatureService swfs = null;
if (updateable) {
// TODO IMPLEMENT ?
// spfs = new SimpleUpdateablePostgisFeatureService(el);
} else {
swfs = new WebFeatureService(el);
}
featureServices.put(new Integer(swfs.getLayerPosition()), swfs);
if (log.isDebugEnabled()) {
log.debug("SimpleWebFeatureService added"); // NOI18N
}
}
} catch (Exception ex) {
log.warn("Read preferences. Error. SimpleWebFeatureService erzeugen ", ex); // NOI18N
}
}
}
}
//~ Methods ----------------------------------------------------------------
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public TreeMap getRasterServices() {
return rasterServices;
}
/**
* DOCUMENT ME!
*
* @param rasterServices DOCUMENT ME!
*/
public void setRasterServices(final TreeMap rasterServices) {
this.rasterServices = rasterServices;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public TreeMap getFeatureServices() {
return featureServices;
}
/**
* DOCUMENT ME!
*
* @param featureServices DOCUMENT ME!
*/
public void setFeatureServices(final TreeMap featureServices) {
this.featureServices = featureServices;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public boolean isAppFeatureLayerEnabled() {
return appFeatureLayerEnabled;
}
/**
* DOCUMENT ME!
*
* @param appFeatureLayerEnabled DOCUMENT ME!
*/
public void setAppFeatureLayerEnabled(final boolean appFeatureLayerEnabled) {
this.appFeatureLayerEnabled = appFeatureLayerEnabled;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public float getAppFeatureLayerTranslucency() {
return appFeatureLayerTranslucency;
}
/**
* DOCUMENT ME!
*
* @param appFeatureLayerTranslucency DOCUMENT ME!
*/
public void setAppFeatureLayerTranslucency(final float appFeatureLayerTranslucency) {
this.appFeatureLayerTranslucency = appFeatureLayerTranslucency;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public String getAppFeatureLayerName() {
return appFeatureLayerName;
}
/**
* DOCUMENT ME!
*
* @param appFeatureLayerName DOCUMENT ME!
*/
public void setAppFeatureLayerName(final String appFeatureLayerName) {
this.appFeatureLayerName = appFeatureLayerName;
}
}