/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.cismap.commons.raster.wms; import org.apache.log4j.Logger; import java.awt.Image; import de.cismet.cismap.commons.BoundingBox; import de.cismet.cismap.commons.ServiceLayer; import de.cismet.cismap.commons.rasterservice.ImageRetrieval; import de.cismet.cismap.commons.rasterservice.MapService; import de.cismet.cismap.commons.retrieval.AbstractRetrievalService; import de.cismet.cismap.commons.retrieval.RetrievalListener; import de.cismet.tools.CurrentStackTrace; /** * DOCUMENT ME! * * @author thorsten.hell@cismet.de * @version $Revision$, $Date$ */ public abstract class AbstractWMS extends AbstractRetrievalService implements MapService, RetrievalListener, ServiceLayer { //~ Static fields/initializers --------------------------------------------- private static final transient Logger LOG = Logger.getLogger(AbstractWMS.class); //~ Instance fields -------------------------------------------------------- protected BoundingBox bb; protected boolean enabled = true; protected int height = 0; protected int width = 0; protected volatile ImageRetrieval ir; protected int layerPosition = 0; protected String name = null; protected float translucency = 1.0f; protected boolean visible = true; //~ Constructors ----------------------------------------------------------- /** * Creates a new instance of AbstractWMS. */ public AbstractWMS() { } //~ Methods ---------------------------------------------------------------- @Override public void setBoundingBox(final de.cismet.cismap.commons.BoundingBox bb) { this.bb = bb; } @Override public void setEnabled(final boolean enabled) { this.enabled = enabled; } @Override public void setSize(final int height, final int width) { this.height = height; this.width = width; } @Override public boolean isEnabled() { return enabled; } @Override public boolean canBeDisabled() { return true; } @Override public void retrievalStarted(final de.cismet.cismap.commons.retrieval.RetrievalEvent e) { this.fireRetrievalStarted(e); } @Override public void retrievalProgress(final de.cismet.cismap.commons.retrieval.RetrievalEvent e) { this.fireRetrievalProgress(e); } @Override public void retrievalError(final de.cismet.cismap.commons.retrieval.RetrievalEvent e) { LOG.warn("retrievalError", new CurrentStackTrace()); // NOI18N this.fireRetrievalError(e); } @Override public void retrievalComplete(final de.cismet.cismap.commons.retrieval.RetrievalEvent e) { // Test ob Bild bez\u00FCglich der Gr\u00F6\u00DFe auch dem angeforderten entspricht // ansonsten ist es sehr wahrscheinlich dass es sich um ein Fehlerbild handelt final Object o = e.getRetrievedObject(); if (o instanceof Image) { if ((Math.abs(((Image)o).getHeight(null) - height) > 1) || (Math.abs(((Image)o).getWidth(null) - width) > 1)) { e.setHasErrors(true); } else { e.setHasErrors(false); } } if ((ir == null) || ir.isAlive()) { this.fireRetrievalComplete(e); } } @Override public void retrievalAborted(final de.cismet.cismap.commons.retrieval.RetrievalEvent e) { this.fireRetrievalAborted(e); } @Override public int getLayerPosition() { return layerPosition; } @Override public String getName() { return name; } @Override public void setLayerPosition(final int layerPosition) { this.layerPosition = layerPosition; } @Override public void setName(final String name) { this.name = name; } @Override public float getTranslucency() { return translucency; } @Override public void setTranslucency(final float translucency) { this.translucency = translucency; } @Override public boolean isVisible() { return visible; } /** * DOCUMENT ME! * * @param visible DOCUMENT ME! */ public void setVisible(final boolean visible) { this.visible = visible; } }