All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.vfny.geoserver.global.dto.DataDTO Maven / Gradle / Ivy

The newest version!
/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org.  All rights reserved.
 * This code is licensed under the GPL 2.0 license, availible at the root
 * application directory.
 */

/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org.  All rights reserved.
 * This code is licensed under the GPL 2.0 license, availible at the root
 * application directory.
 */
package org.vfny.geoserver.global.dto;

import java.util.HashMap;
import java.util.Map;
import java.util.NoSuchElementException;


/**
 * Data Transfer Object used to represent GeoServer Catalog information.
 *
 * 

* Represents an instance of the catalog.xml file in the configuration of the * server, along with associated configuration files for the feature types. *

* *

* Data Transfer object are used to communicate between the GeoServer * application and its configuration and persistent layers. As such the class * is final - to allow for its future use as an on-the-wire message. *

* *

* Example: *

*

 * DataDTO dDto = new DataDTO();
 * Map m = new HashMap();
 * NameSpaceInfoDTO ns = new NameSpaceInfoDTO();
 * ns.setUri("dzwiers.refractions.net");
 * m.put("nsDave",ns);
 * dDto.setNameSpaces(m);
 * ns = new NameSpaceInfoDTO();
 * ns.setUri("jgarnett.refractions.net");
 * ns.setDefault(true);
 * dDto.addNameSpace("nsJody"ns);
 * dDto.setDefaultNameSpace(ns);
 * ...
 * 
* * @author dzwiers, Refractions Research, Inc. * @author $Author: Alessio Fabiani ([email protected]) $ (last modification) * @author $Author: Simone Giannecchini ([email protected]) $ (last modification) * @version $Id: DataDTO.java 6326 2007-03-15 18:36:40Z jdeolive $ * * @see DataSource * @see FeatureTypeInfo * @see StyleConfig */ public final class DataDTO implements DataTransferObject { /** * DataStoreInfoDTO referenced by key "dataStoreID". * * @see org.vfny.geoserver.global.dto.DataStoreInfoDTO * * @uml.property name="dataStores" * @uml.associationEnd elementType="java.lang.String" qualifier="key:java.lang.String * org.vfny.geoserver.global.dto.DataStoreInfoDTO" multiplicity="(0 -1)" ordering= * "ordered" */ private Map dataStores; /** * CoverageStoreInfoDTO referenced by key "formatID". * * @see org.vfny.geoserver.global.dto.CoverageStoreInfoDTO * * @uml.property name="formats" * @uml.associationEnd elementType="java.lang.String" qualifier="getFormatId:java.lang.String * org.vfny.geoserver.global.dto.CoverageStoreInfoDTO" multiplicity="(0 -1)" ordering="ordered" */ private Map formats; /** * NamespaceDTO referenced by key "prefix". * * @see org.vfny.geoserver.global.dto.NameSpaceInfoDTO * * @uml.property name="nameSpaces" * @uml.associationEnd elementType="java.lang.String" qualifier="key:java.lang.String * org.vfny.geoserver.global.dto.NameSpaceInfoDTO" multiplicity="(0 -1)" ordering= * "ordered" */ private Map nameSpaces; /** * FeatureTypesInfoDTO referenced by key * "dataStoreID.typeName" * * @see org.vfny.geoserver.global.dto.FeatureTypeInfoDTO * * @uml.property name="featuresTypes" * @uml.associationEnd elementType="org.vfny.geoserver.global.dto.AttributeTypeInfoDTO" * qualifier="key:java.lang.String org.vfny.geoserver.global.dto.FeatureTypeInfoDTO" * multiplicity="(0 -1)" ordering="ordered" */ private Map featuresTypes; /** * * @uml.property name="coverages" * @uml.associationEnd qualifier="key:java.lang.String org.vfny.geoserver.global.dto.DataTransferObject" * multiplicity="(0 1)" */ private Map coverages; /** * StyleDTO referenced by key "id" * * @see org.vfny.geoserver.global.dto.StyleDTO * * @uml.property name="styles" * @uml.associationEnd qualifier="key:java.lang.String org.vfny.geoserver.global.dto.DataTransferObject" * multiplicity="(0 1)" */ private Map styles; /** * The default namespace for the server instance. * *

* This may be null if a default has not been defined. the * config files is supposed to use the "first" Namespace when a default is * not defined - but we have lost all sense of order by placing this in a * Map. For 99% of the time when no default has been provided it is * because there is only one Namespace for the application. *

* * @see org.vfny.geoserver.global.dto.NameSpaceInfo * * @uml.property name="defaultNameSpacePrefix" multiplicity="(0 1)" */ private String defaultNameSpacePrefix; /** * Data constructor. * *

* does nothing *

*/ public DataDTO() { } /** * Creates a duplicate of the provided DataDTO using deep copy. * *

* Creates a copy of the Data provided. If the Data provided is null then * default values are used. All the datastructures are cloned. *

* * @param dto The catalog to copy. * * @throws NullPointerException DOCUMENT ME! */ public DataDTO(DataDTO dto) { if (dto == null) { throw new NullPointerException("Non null DataDTO required"); } try { dataStores = CloneLibrary.clone(dto.getDataStores()); } catch (Exception e) { dataStores = new HashMap(); } try { formats = CloneLibrary.clone(dto.getFormats()); } catch (Exception e) { formats = new HashMap(); } try { nameSpaces = CloneLibrary.clone(dto.getNameSpaces()); } catch (Exception e) { nameSpaces = new HashMap(); } try { featuresTypes = CloneLibrary.clone(dto.getFeaturesTypes()); } catch (Exception e) { featuresTypes = new HashMap(); } try { coverages = CloneLibrary.clone(dto.getCoverages()); } catch (Exception e) { coverages = new HashMap(); } try { styles = CloneLibrary.clone(dto.getStyles()); } catch (Exception e) { styles = new HashMap(); } defaultNameSpacePrefix = dto.getDefaultNameSpacePrefix(); } /** * Implement clone as a Deep copy. * * @return A copy of this Data * * @see java.lang.Object#clone() */ public Object clone() { return new DataDTO(this); } /** * Implement equals as part of the Object contract. * *

* Recursively tests to determine if the object passed in is a copy of this * object. *

* * @param other The Data object to test. * * @return true when the object passed is the same as this object. * * @see java.lang.Object#equals(java.lang.Object) */ public boolean equals(Object other) { if ((other == null) || !(other instanceof DataDTO)) { return false; } DataDTO c = (DataDTO) other; boolean r = true; if (dataStores != null) { r = r && EqualsLibrary.equals(dataStores, c.getDataStores()); } else if (c.getDataStores() != null) { return false; } if (formats != null) { r = r && EqualsLibrary.equals(formats, c.getFormats()); } else if (c.getFormats() != null) { return false; } if (nameSpaces != null) { r = r && EqualsLibrary.equals(nameSpaces, c.getNameSpaces()); } else if (c.getNameSpaces() != null) { return false; } if (featuresTypes != null) { r = r && EqualsLibrary.equals(featuresTypes, c.getFeaturesTypes()); } else if (c.getFeaturesTypes() != null) { return false; } if (coverages != null) { r = r && EqualsLibrary.equals(coverages, c.getCoverages()); } else if (c.getCoverages() != null) { return false; } if (styles != null) { r = r && EqualsLibrary.equals(styles, c.getStyles()); } else if (c.getStyles() != null) { return false; } if (defaultNameSpacePrefix != null) { r = r && defaultNameSpacePrefix.equals(c.getDefaultNameSpacePrefix()); } else if (c.getDefaultNameSpacePrefix() != null) { return false; } return r; } /** * Implement hashCode as part of the Object contract. * * @return Service hashcode or 0 * * @see java.lang.Object#hashCode() */ public int hashCode() { int r = 1; if (dataStores != null) { r *= dataStores.hashCode(); } if (formats != null) { r *= formats.hashCode(); } if (nameSpaces != null) { r *= nameSpaces.hashCode(); } if (featuresTypes != null) { r *= featuresTypes.hashCode(); } if (styles != null) { r *= styles.hashCode(); } if (coverages != null) { r *= coverages.hashCode(); } return r; } /** * Retrive a Map of DataStoreInfoDTO by "dataStoreID". * * @return Map of DataStoreInfoDTO by "dataStoreID" * * @uml.property name="dataStores" */ public Map getDataStores() { return dataStores; } /** * Retrive a Map of CoverageStoreInfoDTO by "formatID". * * @return Map of CoverageStoreInfoDTO by "formatID" * * @uml.property name="formats" */ public Map getFormats() { return formats; } /** * Return the getDefaultNameSpace. * *

* May consider just returning the "prefix" of the default Namespace here. * It is unclear what happens when we are starting out with a Empty * DataDTO class. *

* * @return Default namespace or null * * @uml.property name="defaultNameSpacePrefix" */ public String getDefaultNameSpacePrefix() { return defaultNameSpacePrefix; } /** * Retrive Map of FeatureTypeInfoDTO by "dataStoreID.typeName". * * @return Map of FeatureTypeInfoDTO by "dataStoreID.typeName" * * @uml.property name="featuresTypes" */ public Map getFeaturesTypes() { return featuresTypes; } /** * Map of NamespaceDTO by "prefix". * * @return Map of NamespaceDTO by "prefix". * * @uml.property name="nameSpaces" */ public Map getNameSpaces() { return nameSpaces; } /** * Retrive Map of StyleDTO by "something?". Key is Style.id * * @return Map of StyleDTO by "something"? * * @uml.property name="styles" */ public Map getStyles() { return styles; } /** * Replace DataStoreInfoDTO map. * * @param map Map of DataStoreInfoDTO by "dataStoreID" * * @throws NullPointerException DOCUMENT ME! * * @uml.property name="dataStores" */ public void setDataStores(Map map) { if (map == null) { throw new NullPointerException( "DataStores map must not be null. Use Collections.EMPTY_MAP if you must"); } dataStores = new HashMap(map); if (map != null) { dataStores = map; } } /** * Replace CoverageStoreInfoDTO map. * * @param map Map of CoverageStoreInfoDTO by "formatID" * * @throws NullPointerException DOCUMENT ME! * * @uml.property name="formats" */ public void setFormats(Map map) { if (map == null) { throw new NullPointerException( "Formats map must not be null. Use Collections.EMPTY_MAP if you must"); } formats = new HashMap(map); if (map != null) { formats = map; } } /** * Sets the default namespace. * *

* Note the provided namespace must be present in the namespace map. *

* * @param dnsp the default namespace prefix. * * @throws NoSuchElementException DOCUMENT ME! * * @uml.property name="defaultNameSpacePrefix" */ public void setDefaultNameSpacePrefix(String dnsp) { defaultNameSpacePrefix = dnsp; if (!nameSpaces.containsKey(dnsp)) { throw new NoSuchElementException("Invalid NameSpace Prefix for Default"); } } /** * Set the FeatureTypeInfoDTO map. * *

* The dataStoreID used for the map must be in datastores. *

* * @param map of FeatureTypeInfoDTO by "dataStoreID.typeName" * * @throws NullPointerException DOCUMENT ME! * * @uml.property name="featuresTypes" */ public void setFeaturesTypes(Map map) { if (map == null) { throw new NullPointerException( "FeatureTypeInfoDTO map must not be null. Use Collections.EMPTY_MAP if you must"); } featuresTypes = map; } /** * Sets the NameSpaceInfoDTO map. * *

* The default prefix is not changed by this operation. *

* * @param map of NameSpaceInfoDTO by "prefix" * * @throws NullPointerException DOCUMENT ME! * * @uml.property name="nameSpaces" */ public void setNameSpaces(Map map) { if (map == null) { throw new NullPointerException( "NameSpaceDTO map must not be null. Use Collections.EMPTY_MAP if you must"); } nameSpaces = map; } /** * Set map of StyleDTO by "something?". * * @param map Map of StyleDTO by "someKey"? * * @throws NullPointerException DOCUMENT ME! * * @uml.property name="styles" */ public void setStyles(Map map) { if (map == null) { throw new NullPointerException( "StyleInfoDTO map must not be null. Use Collections.EMPTY_MAP if you must"); } styles = map; } /** * @return Returns the coverages. * * @uml.property name="coverages" */ public Map getCoverages() { return coverages; } /** * @param coverages The coverages to set. * * @uml.property name="coverages" */ public void setCoverages(Map coverages) { if (coverages == null) { throw new NullPointerException( "CoverageInfoDTO map must not be null. Use Collections.EMPTY_MAP if you must"); } this.coverages = coverages; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy