/*
* Geotoolkit - An Open Source Java GIS Toolkit
* http://www.geotoolkit.org
*
* (C) 2008 - 2011, Geomatys
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotoolkit.csw.xml;
import java.util.ArrayList;
import java.util.List;
import javax.xml.namespace.QName;
/**
*
* @author Guilhem legal (Geomatys)
* @module
*/
public class TypeNames {
private TypeNames() {}
/**
* a QName for csw:Record type
*/
public static final QName RECORD_QNAME = new QName("http://www.opengis.net/cat/csw/2.0.2", "Record");
/**
* a QName for gmd:MD_Metadata type
*/
public static final QName METADATA_QNAME = new QName("http://www.isotc211.org/2005/gmd", "MD_Metadata");
/**
* a QName for gfc:MD_Metadata type
*/
public static final QName FEATCAT_QNAME = new QName("http://www.isotc211.org/2005/gfc", "FC_FeatureCatalogue");
/**
* a QName for gmd:Dataset type
*/
public static final QName DATASET_QNAME = new QName("http://www.isotc211.org/2005/gmd", "Dataset");
/**
* a QName for csw:Capabilities type
*/
public static final QName CAPABILITIES_QNAME = new QName("http://www.opengis.net/cat/csw/2.0.2", "Capabilities");
/**
* Some DublinCore Qnames
*/
public static final QName TITLE_QNAME = new QName("http://www.purl.org/dc/elements/1.1/", "title");
public static final QName DATE_QNAME = new QName("http://www.purl.org/dc/elements/1.1/", "date");
public static final QName DESCRIPTION_QNAME = new QName("http://www.purl.org/dc/elements/1.1/", "description");
public static final QName TYPE_QNAME = new QName("http://www.purl.org/dc/elements/1.1/", "type");
public static final QName IDENTIFIER_QNAME = new QName("http://www.purl.org/dc/elements/1.1/", "identifier");
public static final QName FORMAT_QNAME = new QName("http://www.purl.org/dc/elements/1.1/", "format");
public static final QName MODIFIED_QNAME = new QName("http://www.purl.org/dc/terms/", "modified");
public static final QName ABSTRACT_QNAME = new QName("http://www.purl.org/dc/terms/", "abstract");
public static final QName CREATED_QNAME = new QName("http://www.purl.org/dc/terms/", "created");
public static final QName WGS84_BOUNDINGBOX_QNAME = new QName("http://www.opengis.net/ows", "WGS84BoundingBox");
public static final QName BOUNDINGBOX_QNAME = new QName("http://www.opengis.net/ows", "BoundingBox");
/**
* some QName for ebrim 3.0 types
*/
public static final QName EXTRINSIC_OBJECT_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "ExtrinsicObject");
public static final QName REGISTRY_PACKAGE_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "RegistryPackage");
public static final QName SPECIFICATION_LINK_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "SpecificationLink");
public static final QName REGISTRY_OBJECT_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "RegistryObject");
public static final QName ASSOCIATION_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "Association");
public static final QName ADHOC_QUERY_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "AdhocQuery");
public static final QName USER_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "User");
public static final QName CLASSIFICATION_NODE_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "ClassificationNode");
public static final QName AUDITABLE_EVENT_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "AuditableEvent");
public static final QName FEDERATION_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "Federation");
public static final QName SUBSCRIPTION_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "Subscription");
public static final QName OBJECT_REF_LIST_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "ObjectRefList");
public static final QName CLASSIFICATION_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "Classification");
public static final QName PERSON_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "Person");
public static final QName SERVICE_BINDING_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "ServiceBinding");
public static final QName NOTIFICATION_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "Notification");
public static final QName CLASSIFICATION_SCHEME_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "ClassificationScheme");
public static final QName SERVICE_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "Service");
public static final QName EXTERNAL_IDENTIFIER_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "ExternalIdentifier");
public static final QName REGISTRY_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "Registry");
public static final QName ORGANIZATION_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "Organization");
public static final QName EXTERNAL_LINK_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", "ExternalLink");
public static final QName WRS_EXTRINSIC_OBJECT_QNAME = new QName("http://www.opengis.net/cat/wrs/1.0", "ExtrinsicObject");
/**
* some QName for ebrim 2.5 types
*/
public static final QName EXTRINSIC_OBJECT_25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "ExtrinsicObject");
public static final QName FEDERATION25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "Federation");
public static final QName EXTERNAL_LINK25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "ExternalLink");
public static final QName CLASSIFICATION_NODE25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "ClassificationNode");
public static final QName USER25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "User");
public static final QName CLASSIFICATION25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "Classification");
public static final QName REGISTRY_PACKAGE25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "RegistryPackage");
public static final QName REGISTRY_OBJECT25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "RegistryObject");
public static final QName ASSOCIATION25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "Association");
public static final QName REGISTRY_ENTRY25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "RegistryEntry");
public static final QName CLASSIFICATION_SCHEME25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "ClassificationScheme");
public static final QName ORGANIZATION25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "Organization");
public static final QName EXTERNAL_IDENTIFIER25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "ExternalIdentifier");
public static final QName SPECIFICATION_LINK25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "SpecificationLink");
public static final QName REGISTRY25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "Registry");
public static final QName SERVICE_BINDING25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "ServiceBinding");
public static final QName SERVICE25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "Service");
public static final QName AUDITABLE_EVENT25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "AuditableEvent");
public static final QName SUBSCRIPTION25_QNAME = new QName("urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5", "Subscription");
public static final QName GEOMETRY09_QNAME = new QName("http://www.opengis.net/cat/wrs", "Geometry");
public static final QName APPLICATION_MODULE09_QNAME = new QName("http://www.opengis.net/cat/wrs", "ApplicationModule");
public static final QName WRS_EXTRINSIC_OBJECT09_QNAME = new QName("http://www.opengis.net/cat/wrs", "WRSExtrinsicObject");
/**
* Returns QName from specified string value
* @TODO must be more generic
*
* @param key {@code String} key that should be qname localPart
* @return {@link QName} if localPart matches the specified key
* @throws IllegalArgumentException if key does not match any qname
*/
public static final QName valueOf(final String key)throws IllegalArgumentException{
if("csw:Record".equalsIgnoreCase(key) || "Record".equalsIgnoreCase(key)){
return RECORD_QNAME;
}
if("gmd:MD_Metadata".equalsIgnoreCase(key)){
return METADATA_QNAME;
}
if("gfc:FC_FeatureCatalogue".equalsIgnoreCase(key)){
return FEATCAT_QNAME;
}
if("gmd:Dataset".equalsIgnoreCase(key)){
return DATASET_QNAME;
}
throw new IllegalArgumentException("Cannot get TypeNames for '" + key + "' there is no QName for this value.");
}
//iso 19115 typeNames
public static final List<QName> ISO_TYPE_NAMES = new ArrayList<QName>();
static {
ISO_TYPE_NAMES.add(METADATA_QNAME);
}
//iso 19110 typeNames
public static final List<QName> FC_TYPE_NAMES = new ArrayList<QName>();
static {
ISO_TYPE_NAMES.add(FEATCAT_QNAME);
}
//dublin core typeNames
public static final List<QName> DC_TYPE_NAMES = new ArrayList<QName>();
static {
DC_TYPE_NAMES.add(RECORD_QNAME);
}
//ebrim v3.0 typeNames
public static final List<QName> EBRIM30_TYPE_NAMES = new ArrayList<QName>();
static {
EBRIM30_TYPE_NAMES.add(ADHOC_QUERY_QNAME);
EBRIM30_TYPE_NAMES.add(ASSOCIATION_QNAME);
EBRIM30_TYPE_NAMES.add(AUDITABLE_EVENT_QNAME);
EBRIM30_TYPE_NAMES.add(CLASSIFICATION_NODE_QNAME);
EBRIM30_TYPE_NAMES.add(CLASSIFICATION_SCHEME_QNAME);
EBRIM30_TYPE_NAMES.add(CLASSIFICATION_QNAME);
EBRIM30_TYPE_NAMES.add(EXTERNAL_IDENTIFIER_QNAME);
EBRIM30_TYPE_NAMES.add(EXTERNAL_LINK_QNAME);
EBRIM30_TYPE_NAMES.add(EXTRINSIC_OBJECT_QNAME);
EBRIM30_TYPE_NAMES.add(FEDERATION_QNAME);
EBRIM30_TYPE_NAMES.add(NOTIFICATION_QNAME);
EBRIM30_TYPE_NAMES.add(OBJECT_REF_LIST_QNAME);
EBRIM30_TYPE_NAMES.add(PERSON_QNAME);
EBRIM30_TYPE_NAMES.add(ORGANIZATION_QNAME);
EBRIM30_TYPE_NAMES.add(REGISTRY_OBJECT_QNAME);
EBRIM30_TYPE_NAMES.add(REGISTRY_PACKAGE_QNAME);
EBRIM30_TYPE_NAMES.add(REGISTRY_QNAME);
EBRIM30_TYPE_NAMES.add(SERVICE_BINDING_QNAME);
EBRIM30_TYPE_NAMES.add(SERVICE_QNAME);
EBRIM30_TYPE_NAMES.add(SPECIFICATION_LINK_QNAME);
EBRIM30_TYPE_NAMES.add(SUBSCRIPTION_QNAME);
EBRIM30_TYPE_NAMES.add(USER_QNAME);
EBRIM30_TYPE_NAMES.add(WRS_EXTRINSIC_OBJECT_QNAME);
}
//ebrim v2.5 typenames
public static final List<QName> EBRIM25_TYPE_NAMES = new ArrayList<QName>();
static {
EBRIM25_TYPE_NAMES.add(EXTRINSIC_OBJECT_25_QNAME);
EBRIM25_TYPE_NAMES.add(FEDERATION25_QNAME);
EBRIM25_TYPE_NAMES.add(EXTERNAL_LINK25_QNAME);
EBRIM25_TYPE_NAMES.add(CLASSIFICATION_NODE25_QNAME);
EBRIM25_TYPE_NAMES.add(USER25_QNAME);
EBRIM25_TYPE_NAMES.add(CLASSIFICATION25_QNAME);
EBRIM25_TYPE_NAMES.add(REGISTRY_PACKAGE25_QNAME);
EBRIM25_TYPE_NAMES.add(REGISTRY_OBJECT25_QNAME);
EBRIM25_TYPE_NAMES.add(ASSOCIATION25_QNAME);
EBRIM25_TYPE_NAMES.add(REGISTRY_ENTRY25_QNAME);
EBRIM25_TYPE_NAMES.add(CLASSIFICATION_SCHEME25_QNAME);
EBRIM25_TYPE_NAMES.add(ORGANIZATION25_QNAME);
EBRIM25_TYPE_NAMES.add(EXTERNAL_IDENTIFIER25_QNAME);
EBRIM25_TYPE_NAMES.add(SPECIFICATION_LINK25_QNAME);
EBRIM25_TYPE_NAMES.add(REGISTRY25_QNAME);
EBRIM25_TYPE_NAMES.add(SERVICE_BINDING25_QNAME);
EBRIM25_TYPE_NAMES.add(SERVICE25_QNAME);
EBRIM25_TYPE_NAMES.add(AUDITABLE_EVENT25_QNAME);
EBRIM25_TYPE_NAMES.add(SUBSCRIPTION25_QNAME);
EBRIM25_TYPE_NAMES.add(GEOMETRY09_QNAME);
EBRIM25_TYPE_NAMES.add(APPLICATION_MODULE09_QNAME);
EBRIM25_TYPE_NAMES.add(WRS_EXTRINSIC_OBJECT09_QNAME);
}
/**
* Return true if the specified list of QNames contains an ebrim V2.5 QName.
*
* @param qnames A list of QNames.
* @return true if the list contains at least one ebrim V2.5 QName.
*/
public static final boolean containsOneOfEbrim25(final List<QName> qnames) {
if (qnames.contains(EXTRINSIC_OBJECT_25_QNAME)
|| qnames.contains(FEDERATION25_QNAME)
|| qnames.contains(EXTERNAL_LINK25_QNAME)
|| qnames.contains(CLASSIFICATION_NODE25_QNAME)
|| qnames.contains(USER25_QNAME)
|| qnames.contains(CLASSIFICATION25_QNAME)
|| qnames.contains(REGISTRY_PACKAGE25_QNAME)
|| qnames.contains(REGISTRY_OBJECT25_QNAME)
|| qnames.contains(ASSOCIATION25_QNAME)
|| qnames.contains(REGISTRY_ENTRY25_QNAME)
|| qnames.contains(CLASSIFICATION_SCHEME25_QNAME)
|| qnames.contains(ORGANIZATION25_QNAME)
|| qnames.contains(EXTERNAL_IDENTIFIER25_QNAME)
|| qnames.contains(SPECIFICATION_LINK25_QNAME)
|| qnames.contains(REGISTRY25_QNAME)
|| qnames.contains(SERVICE_BINDING25_QNAME)
|| qnames.contains(SERVICE25_QNAME)
|| qnames.contains(AUDITABLE_EVENT25_QNAME)
|| qnames.contains(SUBSCRIPTION25_QNAME)
|| qnames.contains(GEOMETRY09_QNAME)
|| qnames.contains(APPLICATION_MODULE09_QNAME)
|| qnames.contains(WRS_EXTRINSIC_OBJECT09_QNAME))
return true;
return false;
}
/**
* Return true if the specified list of QNames contains an ebrim V3.0 QName.
*
* @param qnames A list of QNames.
* @return true if the list contains at least one ebrim V3.0 QName.
*/
public static final boolean containsOneOfEbrim30(final List<QName> qnames) {
if (qnames.contains(ADHOC_QUERY_QNAME)
|| qnames.contains(ASSOCIATION_QNAME)
|| qnames.contains(AUDITABLE_EVENT_QNAME)
|| qnames.contains(CLASSIFICATION_NODE_QNAME)
|| qnames.contains(CLASSIFICATION_SCHEME_QNAME)
|| qnames.contains(CLASSIFICATION_QNAME)
|| qnames.contains(EXTERNAL_IDENTIFIER_QNAME)
|| qnames.contains(EXTERNAL_LINK_QNAME)
|| qnames.contains(EXTRINSIC_OBJECT_QNAME)
|| qnames.contains(FEDERATION_QNAME)
|| qnames.contains(NOTIFICATION_QNAME)
|| qnames.contains(OBJECT_REF_LIST_QNAME)
|| qnames.contains(PERSON_QNAME)
|| qnames.contains(ORGANIZATION_QNAME)
|| qnames.contains(REGISTRY_OBJECT_QNAME)
|| qnames.contains(REGISTRY_PACKAGE_QNAME)
|| qnames.contains(REGISTRY_QNAME)
|| qnames.contains(SERVICE_BINDING_QNAME)
|| qnames.contains(SERVICE_QNAME)
|| qnames.contains(SPECIFICATION_LINK_QNAME)
|| qnames.contains(SUBSCRIPTION_QNAME)
|| qnames.contains(USER_QNAME)
|| qnames.contains(WRS_EXTRINSIC_OBJECT_QNAME))
return true;
return false;
}
}