package org.deegree.ogcwebservices.wcs.describecoverage; import java.io.IOException; import java.net.URL; import java.util.HashMap; import java.util.Map; import org.deegree.framework.util.NetWorker; import org.deegree.model.crs.UnknownCRSException; import org.xml.sax.SAXException; /** * @version $Revision: 1.6 $ * @author <a href="mailto:poth@lat-lon.de">Andreas Poth </a> * @author last edited by: $Author: poth $ * * @version 1.0. $Revision: 1.6 $, $Date: 2006/11/27 09:07:52 $ * * @since 2.0 */ public class CoverageDescription { private CoverageOffering[] coverageOffering = new CoverageOffering[0]; private Map map = new HashMap(100); private String version = "1.0.0"; /** * creates a <tt>CoverageDescription</tt> from a DOM document assigen by * the passed URL * * @return created <tt>CoverageDescription</tt> * @exception IOException * @exception SAXException * @exception InvalidCoverageDescriptionExcpetion */ public static CoverageDescription createCoverageDescription(URL url) throws IOException, SAXException, InvalidCoverageDescriptionExcpetion { CoverageDescriptionDocument covDescDoc = new CoverageDescriptionDocument(); if (url == null) { throw new InvalidCoverageDescriptionExcpetion("location URL for " + "a coverage description document is null"); } if (!NetWorker.existsURL(url)) { throw new InvalidCoverageDescriptionExcpetion("location URL: " + url + "for a coverage description document doesn't exist"); } covDescDoc.load(url); return new CoverageDescription( covDescDoc ); } /** * @param covDescDoc * @exception InvalidCoverageDescriptionExcpetion */ public CoverageDescription(CoverageDescriptionDocument covDescDoc) throws InvalidCoverageDescriptionExcpetion { setVersion(covDescDoc.getVersion()); try { setCoverageOfferings(covDescDoc.getCoverageOfferings()); } catch ( UnknownCRSException e ) { throw new InvalidCoverageDescriptionExcpetion( e.getMessage() ); } } /** * @param coverageOffering */ public CoverageDescription(CoverageOffering[] coverageOffering, String version) { setVersion(version); setCoverageOfferings(coverageOffering); } /** * @return Returns the coverageOffering. */ public CoverageOffering[] getCoverageOfferings() { return coverageOffering; } /** * returns a <tt>CoverageOffering</tt> identified by its name. if no * <tt>CoverageOffering</tt> is known by a <tt>CoverageDescription</tt> * with the passed name, <tt>null</tt> will be returned. * * @param name * @return */ public CoverageOffering getCoverageOffering(String name) { return (CoverageOffering) map.get(name); } /** * @param coverageOffering * The coverageOffering to set. */ public void setCoverageOfferings(CoverageOffering[] coverageOffering) { if (coverageOffering == null) { coverageOffering = new CoverageOffering[0]; } map.clear(); for (int i = 0; i < coverageOffering.length; i++) { map.put(coverageOffering[i].getName(), coverageOffering[i]); } this.coverageOffering = coverageOffering; } /** * * @uml.property name="version" */ public String getVersion() { return version; } /** * * @uml.property name="version" */ public void setVersion(String version) { this.version = version; } } /******************************************************************************* * Changes to this class. What the people have been up to: $Log: * CoverageDescription.java,v $ Revision 1.2 2005/01/18 22:08:55 poth no message * * Revision 1.11 2004/07/12 11:14:19 ap no message * * Revision 1.10 2004/07/12 06:12:11 ap no message * * Revision 1.9 2004/07/05 06:15:00 ap no message * * Revision 1.8 2004/06/28 06:26:52 ap no message * * Revision 1.7 2004/06/25 15:34:52 ap no message * * Revision 1.6 2004/05/31 07:37:45 ap no message * * Revision 1.5 2004/05/26 15:31:36 ap no message * * Revision 1.4 2004/05/26 10:47:46 ap no message * * Revision 1.3 2004/05/25 15:13:23 ap no message * * Revision 1.2 2004/05/25 07:19:13 ap no message * * Revision 1.1 2004/05/24 06:54:39 ap no message * * ******************************************************************************/