001: /* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved.
002: * This code is licensed under the GPL 2.0 license, availible at the root
003: * application directory.
004: */
005: package org.vfny.geoserver.wms.responses.map.gif;
006:
007: import org.vfny.geoserver.global.WMS;
008: import org.vfny.geoserver.wms.GetMapProducer;
009: import org.vfny.geoserver.wms.GetMapProducerFactorySpi;
010: import java.util.Collections;
011: import java.util.Map;
012: import java.util.Set;
013:
014: /**
015: * DOCUMENT ME!
016: *
017: * @author Didier Richard, IGN-F *
018: * @author Simone Giannechini
019: * @version $Id: GifMapProducerFactory.java 6326 2007-03-15 18:36:40Z jdeolive $
020: */
021: public final class GifMapProducerFactory implements
022: GetMapProducerFactorySpi {
023: /** the only MIME type this map producer supports */
024: static final String MIME_TYPE = "image/gif";
025:
026: /**
027: * convenient singleton Set to expose the output format this producer
028: * supports
029: */
030: private static final Set SUPPORTED_FORMATS = Collections
031: .singleton(MIME_TYPE);
032:
033: /**
034: * Creates a new GifMapProducerFactory object.
035: */
036: public GifMapProducerFactory() {
037: super ();
038: }
039:
040: /**
041: * DOCUMENT ME!
042: *
043: * @return DOCUMENT ME!
044: */
045: public String getName() {
046: return "Graphics Interchange Format (GIF) map producer";
047: }
048:
049: /**
050: * Returns the Set of output format this producer supports
051: *
052: * @return Set of output format this producer supports (actually
053: * "image/gif")
054: */
055: public Set getSupportedFormats() {
056: return SUPPORTED_FORMATS;
057: }
058:
059: /**
060: *
061: * @return <code>true</code>
062: */
063: public boolean isAvailable() {
064: try {
065: Class
066: .forName("com.sun.media.imageioimpl.plugins.gif.GIFImageWriterSpi");
067:
068: return true;
069: } catch (ClassNotFoundException e) {
070: }
071:
072: return false;
073: }
074:
075: /**
076: * Returns wether the map producers created by this factory can create maps
077: * in the passed output format.
078: *
079: * @param mapFormat
080: * a MIME type string to check if this producer is able to
081: * handle.
082: *
083: * @return <code>true</code> if <code>mapFormat == "image/gif"</code>,
084: * <code>false</code> otherwise.
085: */
086: public boolean canProduce(String mapFormat) {
087: return MIME_TYPE.equals(mapFormat);
088: }
089:
090: /**
091: * DOCUMENT ME!
092: *
093: * @param mapFormat
094: * DOCUMENT ME!
095: *
096: * @return DOCUMENT ME!
097: *
098: * @throws IllegalArgumentException
099: * DOCUMENT ME!
100: */
101: public GetMapProducer createMapProducer(String mapFormat, WMS wms)
102: throws IllegalArgumentException {
103: if (!canProduce(mapFormat)) {
104: throw new IllegalArgumentException(mapFormat
105: + " not supported by this map producer");
106: }
107:
108: return new GIFMapProducer("image/gif", wms); // DJB: added "image/gif" or
109: // you'll get content encoded as
110: // image/png (the default)!!!
111: }
112:
113: /*
114: * (non-Javadoc)
115: *
116: * @see org.geotools.factory.Factory#getImplementationHints() This just
117: * returns java.util.Collections.EMPTY_MAP
118: */
119: public Map getImplementationHints() {
120: return java.util.Collections.EMPTY_MAP;
121: }
122: }
|