/** * Copyright (c) Codice Foundation * * This 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 3 of the * License, or any later version. * * This program 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. A copy of the GNU Lesser General Public License * is distributed along with this program and can be found at * <http://www.gnu.org/licenses/lgpl.html>. * **/ package org.codice.ddf.spatial.ogc.csw.catalog.common; import java.util.Arrays; import java.util.List; import javax.xml.namespace.QName; import ddf.catalog.data.Metacard; import ddf.catalog.data.impl.AttributeDescriptorImpl; import ddf.catalog.data.impl.BasicTypes; import ddf.catalog.data.impl.MetacardTypeImpl; public class CswRecordMetacardType extends MetacardTypeImpl { /** * Used as prefix on attribute names that clash with basic Metacard attribute names e.g., * "title" vs. "csw.title" */ public static final String CSW_ATTRIBUTE_PREFIX = "csw."; public static final String CSW_NAMESPACE_URI = "http://www.opengis.net/cat/csw/2.0.2"; public static final String CSW_METACARD_TYPE_NAME = "csw.record"; public static final String CSW_IDENTIFIER = "identifier"; /** Substitution name for "identifier" */ public static final String CSW_BIBLIOGRAPHIC_CITATION = "bibliographicCitation"; public static final String CSW_TITLE = CSW_ATTRIBUTE_PREFIX + "title"; /** Substitution name for "title" */ public static final String CSW_ALTERNATIVE = "alternative"; public static final String CSW_TYPE = "type"; public static final String CSW_SUBJECT = "subject"; public static final String CSW_FORMAT = "format"; /** Substitution name for "format" */ public static final String CSW_EXTENT = "extent"; /** Substitution name for "format" */ public static final String CSW_MEDIUM = "medium"; public static final String CSW_RELATION = "relation"; /** Substitution name for "relation" */ public static final String CSW_CONFORMS_TO = "conformsTo"; /** Substitution name for "relation" */ public static final String CSW_HAS_FORMAT = "hasFormat"; /** Substitution name for "relation" */ public static final String CSW_HAS_PART = "hasPart"; /** Substitution name for "relation" */ public static final String CSW_HAS_VERSION = "hasVersion"; /** Substitution name for "relation" */ public static final String CSW_IS_FORMAT_OF = "isFormatOf"; /** Substitution name for "relation" */ public static final String CSW_IS_PART_OF = "isPartOf"; /** Substitution name for "relation" */ public static final String CSW_IS_REFERENCED_BY = "isReferencedBy"; /** Substitution name for "relation" */ public static final String CSW_IS_REPLACED_BY = "isReplacedBy"; /** Substitution name for "relation" */ public static final String CSW_IS_REQUIRED_BY = "isRequiredBy"; /** Substitution name for "relation" */ public static final String CSW_IS_VERSION_OF = "isVersionOf"; /** Substitution name for "relation" */ public static final String CSW_REFERENCES = "references"; /** Substitution name for "relation" */ public static final String CSW_REPLACES = "replaces"; /** Substitution name for "relation" */ public static final String CSW_REQUIRES = "requires"; public static final String CSW_DATE = "date"; /** Substitution name for "date" */ public static final String CSW_MODIFIED = CSW_ATTRIBUTE_PREFIX + "modified"; /** Substitution name for "date" */ public static final String CSW_CREATED = CSW_ATTRIBUTE_PREFIX + "created"; /** Substitution name for "date" */ public static final String CSW_DATE_ACCEPTED = "dateAccepted"; /** Substitution name for "date" */ public static final String CSW_DATE_COPYRIGHTED = "dateCopyrighted"; /** Substitution name for "date" */ public static final String CSW_DATE_SUBMITTED = "dateSubmitted"; /** Substitution name for "date" */ public static final String CSW_ISSUED = "issued"; /** Substitution name for "date" */ public static final String CSW_VALID = "valid"; // Synonyms: abstract, tableOfContents public static final String CSW_DESCRIPTION = "description"; /** Substitution name for "description" */ public static final String CSW_ABSTRACT = "abstract"; /** Substitution name for "description" */ public static final String CSW_TABLE_OF_CONTENTS = "tableOfContents"; // coverage: temporal and/or spatial info public static final String CSW_COVERAGE = "coverage"; public static final String CSW_SPATIAL = "spatial"; public static final String CSW_TEMPORAL = "temporal"; public static final String OWS_BOUNDING_BOX = "BoundingBox"; public static final String CSW_CREATOR = "creator"; public static final String CSW_PUBLISHER = "publisher"; public static final String CSW_CONTRIBUTOR = "contributor"; public static final String CSW_LANGUAGE = "language"; public static final String CSW_RIGHTS = "rights"; /** Substitution name for "rights" */ public static final String CSW_ACCESS_RIGHTS = "accessRights"; /** Substitution name for "rights" */ public static final String CSW_LICENSE = "license"; public static final String CSW_SOURCE = "source"; public static final String CSW_RESOURCE_URI = "resource-uri"; public static final QName CSW_IDENTIFIER_QNAME; public static final QName CSW_BIBLIOGRAPHIC_CITATION_QNAME; public static final QName CSW_TITLE_QNAME; public static final QName CSW_ALTERNATIVE_QNAME; public static final QName CSW_TYPE_QNAME; public static final QName CSW_SUBJECT_QNAME; public static final QName CSW_FORMAT_QNAME; public static final QName CSW_EXTENT_QNAME; public static final QName CSW_MEDIUM_QNAME; public static final QName CSW_RELATION_QNAME; public static final QName CSW_CONFORMS_TO_QNAME; public static final QName CSW_HAS_FORMAT_QNAME; public static final QName CSW_HAS_PART_QNAME; public static final QName CSW_HAS_VERSION_QNAME; public static final QName CSW_IS_FORMAT_OF_QNAME; public static final QName CSW_IS_PART_OF_QNAME; public static final QName CSW_IS_REFERENCED_BY_QNAME; public static final QName CSW_IS_REPLACED_BY_QNAME; public static final QName CSW_IS_REQUIRED_BY_QNAME; public static final QName CSW_IS_VERSION_OF_QNAME; public static final QName CSW_REFERENCES_QNAME; public static final QName CSW_REPLACES_QNAME; public static final QName CSW_REQUIRES_QNAME; public static final QName CSW_DATE_QNAME; public static final QName CSW_MODIFIED_QNAME; public static final QName CSW_CREATED_QNAME; public static final QName CSW_DATE_ACCEPTED_QNAME; public static final QName CSW_DATE_COPYRIGHTED_QNAME; public static final QName CSW_DATE_SUBMITTED_QNAME; public static final QName CSW_ISSUED_QNAME; public static final QName CSW_VALID_QNAME; public static final QName CSW_DESCRIPTION_QNAME; public static final QName CSW_ABSTRACT_QNAME; public static final QName CSW_TABLE_OF_CONTENTS_QNAME; public static final QName CSW_COVERAGE_QNAME; public static final QName CSW_SPATIAL_QNAME; public static final QName CSW_TEMPORAL_QNAME; public static final QName OWS_BOUNDING_BOX_QNAME; public static final QName CSW_CREATOR_QNAME; public static final QName CSW_PUBLISHER_QNAME; public static final QName CSW_CONTRIBUTOR_QNAME; public static final QName CSW_LANGUAGE_QNAME; public static final QName CSW_RIGHTS_QNAME; public static final QName CSW_ACCESS_RIGHTS_QNAME; public static final QName CSW_LICENSE_QNAME; public static final QName CSW_SOURCE_QNAME; public static final List<QName> REQUIRED_FIELDS; public static final List<QName> BRIEF_CSW_RECORD_FIELDS; public static final List<QName> SUMMARY_CSW_RECORD_FIELDS; public static final List<QName> FULL_CSW_RECORD_FIELDS; /** * Indicates CSW Metacard Type's attribute is queryable, i.e., is indexed. */ public static final boolean QUERYABLE = true; /** * Indicates CSW Metacard Type's attribute is not queryable, i.e., is not indexed. */ public static final boolean NON_QUERYABLE = false; private static final long serialVersionUID = 1L; static { CSW_TITLE_QNAME = createDublinCoreQName(CswConstants.CSW_TITLE); CSW_MODIFIED_QNAME = createDublinCoreTermQName(CswConstants.CSW_MODIFIED); CSW_CREATED_QNAME = createDublinCoreTermQName(CswConstants.CSW_CREATED); CSW_IDENTIFIER_QNAME = createDublinCoreQName(CSW_IDENTIFIER); CSW_TYPE_QNAME = createDublinCoreQName(CSW_TYPE); CSW_SUBJECT_QNAME = createDublinCoreQName(CSW_SUBJECT); CSW_FORMAT_QNAME = createDublinCoreQName(CSW_FORMAT); CSW_RELATION_QNAME = createDublinCoreQName(CSW_RELATION); CSW_DATE_QNAME = createDublinCoreQName(CSW_DATE); CSW_DESCRIPTION_QNAME = createDublinCoreQName(CSW_DESCRIPTION); CSW_COVERAGE_QNAME = createDublinCoreQName(CSW_COVERAGE); CSW_CREATOR_QNAME = createDublinCoreQName(CSW_CREATOR); CSW_PUBLISHER_QNAME = createDublinCoreQName(CSW_PUBLISHER); CSW_CONTRIBUTOR_QNAME = createDublinCoreQName(CSW_CONTRIBUTOR); CSW_LANGUAGE_QNAME = createDublinCoreQName(CSW_LANGUAGE); CSW_RIGHTS_QNAME = createDublinCoreQName(CSW_RIGHTS); CSW_SOURCE_QNAME = createDublinCoreQName(CSW_SOURCE); CSW_ALTERNATIVE_QNAME = createDublinCoreTermQName(CSW_ALTERNATIVE); CSW_BIBLIOGRAPHIC_CITATION_QNAME = createDublinCoreTermQName(CSW_BIBLIOGRAPHIC_CITATION); CSW_EXTENT_QNAME = createDublinCoreTermQName(CSW_EXTENT); CSW_MEDIUM_QNAME = createDublinCoreTermQName(CSW_MEDIUM); CSW_CONFORMS_TO_QNAME = createDublinCoreTermQName(CSW_CONFORMS_TO); CSW_HAS_FORMAT_QNAME = createDublinCoreTermQName(CSW_HAS_FORMAT); CSW_HAS_PART_QNAME = createDublinCoreTermQName(CSW_HAS_PART); CSW_HAS_VERSION_QNAME = createDublinCoreTermQName(CSW_HAS_VERSION); CSW_IS_FORMAT_OF_QNAME = createDublinCoreTermQName(CSW_IS_FORMAT_OF); CSW_IS_PART_OF_QNAME = createDublinCoreTermQName(CSW_IS_PART_OF); CSW_IS_REFERENCED_BY_QNAME = createDublinCoreTermQName(CSW_IS_REFERENCED_BY); CSW_IS_REPLACED_BY_QNAME = createDublinCoreTermQName(CSW_IS_REPLACED_BY); CSW_IS_REQUIRED_BY_QNAME = createDublinCoreTermQName(CSW_IS_REQUIRED_BY); CSW_IS_VERSION_OF_QNAME = createDublinCoreTermQName(CSW_IS_VERSION_OF); CSW_REFERENCES_QNAME = createDublinCoreTermQName(CSW_REFERENCES); CSW_REPLACES_QNAME = createDublinCoreTermQName(CSW_REPLACES); CSW_REQUIRES_QNAME = createDublinCoreTermQName(CSW_REQUIRES); CSW_DATE_ACCEPTED_QNAME = createDublinCoreTermQName(CSW_DATE_ACCEPTED); CSW_DATE_COPYRIGHTED_QNAME = createDublinCoreTermQName(CSW_DATE_COPYRIGHTED); CSW_DATE_SUBMITTED_QNAME = createDublinCoreTermQName(CSW_DATE_SUBMITTED); CSW_ISSUED_QNAME = createDublinCoreTermQName(CSW_ISSUED); CSW_VALID_QNAME = createDublinCoreTermQName(CSW_VALID); CSW_ABSTRACT_QNAME = createDublinCoreTermQName(CSW_ABSTRACT); CSW_TABLE_OF_CONTENTS_QNAME = createDublinCoreTermQName(CSW_TABLE_OF_CONTENTS); CSW_SPATIAL_QNAME = createDublinCoreTermQName(CSW_SPATIAL); CSW_TEMPORAL_QNAME = createDublinCoreTermQName(CSW_TEMPORAL); CSW_ACCESS_RIGHTS_QNAME = createDublinCoreTermQName(CSW_ACCESS_RIGHTS); CSW_LICENSE_QNAME = createDublinCoreTermQName(CSW_LICENSE); OWS_BOUNDING_BOX_QNAME = new QName(CswConstants.OWS_NAMESPACE, OWS_BOUNDING_BOX, CswConstants.OWS_NAMESPACE_PREFIX); REQUIRED_FIELDS = Arrays.asList(CSW_IDENTIFIER_QNAME, CSW_TITLE_QNAME); BRIEF_CSW_RECORD_FIELDS = Arrays .asList(CSW_IDENTIFIER_QNAME, CSW_TITLE_QNAME, CSW_TYPE_QNAME, OWS_BOUNDING_BOX_QNAME); SUMMARY_CSW_RECORD_FIELDS = Arrays .asList(CSW_IDENTIFIER_QNAME, CSW_TITLE_QNAME, CSW_TYPE_QNAME, CSW_SUBJECT_QNAME, CSW_FORMAT_QNAME, CSW_RELATION_QNAME, CSW_MODIFIED_QNAME, CSW_ABSTRACT_QNAME, CSW_SPATIAL_QNAME, OWS_BOUNDING_BOX_QNAME); FULL_CSW_RECORD_FIELDS = Arrays .asList(CSW_IDENTIFIER_QNAME, CSW_BIBLIOGRAPHIC_CITATION_QNAME, CSW_TITLE_QNAME, CSW_ALTERNATIVE_QNAME, CSW_TYPE_QNAME, CSW_SUBJECT_QNAME, CSW_FORMAT_QNAME, CSW_EXTENT_QNAME, CSW_MEDIUM_QNAME, CSW_RELATION_QNAME, CSW_CONFORMS_TO_QNAME, CSW_HAS_FORMAT_QNAME, CSW_HAS_PART_QNAME, CSW_HAS_VERSION_QNAME, CSW_IS_FORMAT_OF_QNAME, CSW_IS_PART_OF_QNAME, CSW_IS_REFERENCED_BY_QNAME, CSW_IS_REPLACED_BY_QNAME, CSW_IS_REQUIRED_BY_QNAME, CSW_IS_VERSION_OF_QNAME, CSW_REFERENCES_QNAME, CSW_REPLACES_QNAME, CSW_REQUIRES_QNAME, CSW_DATE_QNAME, CSW_MODIFIED_QNAME, CSW_CREATED_QNAME, CSW_DATE_ACCEPTED_QNAME, CSW_DATE_COPYRIGHTED_QNAME, CSW_DATE_SUBMITTED_QNAME, CSW_ISSUED_QNAME, CSW_VALID_QNAME, CSW_DESCRIPTION_QNAME, CSW_ABSTRACT_QNAME, CSW_TABLE_OF_CONTENTS_QNAME, CSW_COVERAGE_QNAME, CSW_SPATIAL_QNAME, CSW_TEMPORAL_QNAME, OWS_BOUNDING_BOX_QNAME, CSW_CREATOR_QNAME, CSW_PUBLISHER_QNAME, CSW_CONTRIBUTOR_QNAME, CSW_LANGUAGE_QNAME, CSW_RIGHTS_QNAME, CSW_ACCESS_RIGHTS_QNAME, CSW_LICENSE_QNAME, CSW_SOURCE_QNAME, OWS_BOUNDING_BOX_QNAME); } public CswRecordMetacardType() { super(CSW_METACARD_TYPE_NAME, null); addDdfMetacardAttributes(); addCswBriefRecordAttributes(); addCswSummaryRecordSpecificAttributes(); addCswFullRecordSpecificAttributes(); } public CswRecordMetacardType(String sourceId) { super(sourceId + "." + CSW_METACARD_TYPE_NAME, null); addDdfMetacardAttributes(); addCswBriefRecordAttributes(); addCswSummaryRecordSpecificAttributes(); addCswFullRecordSpecificAttributes(); } private static QName createDublinCoreQName(final String field) { return new QName(CswConstants.DUBLIN_CORE_SCHEMA, field, CswConstants.DUBLIN_CORE_NAMESPACE_PREFIX); } private static QName createDublinCoreTermQName(final String field) { return new QName(CswConstants.DUBLIN_CORE_TERMS_SCHEMA, field, CswConstants.DUBLIN_CORE_TERMS_NAMESPACE_PREFIX); } private void addDdfMetacardAttributes() { // Single unique ID required by DDF Metacard descriptors.add(new AttributeDescriptorImpl(Metacard.ID, NON_QUERYABLE /* indexed */, false /* stored */, false /* tokenized */, false /* multivalued */, BasicTypes.STRING_TYPE)); // Single/primary metacard title required by DDF Metacard descriptors.add(new AttributeDescriptorImpl(Metacard.TITLE, QUERYABLE /* indexed */, false /* stored */, false /* tokenized */, false /* multivalued */, BasicTypes.STRING_TYPE)); // Original metadata descriptors.add(new AttributeDescriptorImpl(Metacard.METADATA, NON_QUERYABLE /* indexed */, false /* stored */, false /* tokenized */, false /* multivalued */, BasicTypes.STRING_TYPE)); // Single/primary effective date descriptors.add(new AttributeDescriptorImpl(Metacard.EFFECTIVE, NON_QUERYABLE /* indexed */, false /* stored */, false /* tokenized */, false /* multivalued */, BasicTypes.DATE_TYPE)); // Single/primary modified date descriptors .add(new AttributeDescriptorImpl(Metacard.MODIFIED, QUERYABLE /* indexed */, false /* stored */, false /* tokenized */, false /* multivalued */, BasicTypes.DATE_TYPE)); // Single/primary created date descriptors.add(new AttributeDescriptorImpl(Metacard.CREATED, QUERYABLE /* indexed */, false /* stored */, false /* tokenized */, false /* multivalued */, BasicTypes.DATE_TYPE)); // URI where Metacard's resource is located descriptors .add(new AttributeDescriptorImpl(Metacard.RESOURCE_URI, NON_QUERYABLE /* indexed */, false /* stored */, false /* tokenized */, false /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(Metacard.CONTENT_TYPE, QUERYABLE /* indexed */, false /* stored */, false /* tokenized */, false /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(Metacard.THUMBNAIL, NON_QUERYABLE /* indexed */, false /* stored */, false /* tokenized */, false /* multivalued */, BasicTypes.BINARY_TYPE)); descriptors .add(new AttributeDescriptorImpl(Metacard.GEOGRAPHY, QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, false /* multivalued */, BasicTypes.GEO_TYPE)); descriptors .add(new AttributeDescriptorImpl(Metacard.EXPIRATION, QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, false /* multivalued */, BasicTypes.DATE_TYPE)); descriptors.add(new AttributeDescriptorImpl(Metacard.CONTENT_TYPE_VERSION, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, false /* multivalued */, BasicTypes.STRING_TYPE)); descriptors .add(new AttributeDescriptorImpl(Metacard.TARGET_NAMESPACE, QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, false /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(Metacard.RESOURCE_SIZE, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, false /* multivalued */, BasicTypes.STRING_TYPE)); } private void addCswBriefRecordAttributes() { descriptors.add(new AttributeDescriptorImpl(CSW_IDENTIFIER, QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_BIBLIOGRAPHIC_CITATION, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_TITLE, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors .add(new AttributeDescriptorImpl(CSW_ALTERNATIVE, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_TYPE, QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, false /* multivalued */, BasicTypes.STRING_TYPE)); descriptors .add(new AttributeDescriptorImpl(OWS_BOUNDING_BOX, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.GEO_TYPE)); } private void addCswSummaryRecordSpecificAttributes() { descriptors.add(new AttributeDescriptorImpl(CSW_SUBJECT, QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_FORMAT, QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); // Substitution name for "format" descriptors.add(new AttributeDescriptorImpl(CSW_EXTENT, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); // Substitution name for "format" descriptors.add(new AttributeDescriptorImpl(CSW_MEDIUM, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_RELATION, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); addRelationSubstitutionNames(); descriptors.add(new AttributeDescriptorImpl(CSW_DATE, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.DATE_TYPE)); addDateSubstitutionNames(); descriptors .add(new AttributeDescriptorImpl(CSW_DESCRIPTION, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); // Substitution name for "description" descriptors.add(new AttributeDescriptorImpl(CSW_ABSTRACT, QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_SPATIAL, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_COVERAGE, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_TEMPORAL, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); } private void addCswFullRecordSpecificAttributes() { descriptors.add(new AttributeDescriptorImpl(CSW_RIGHTS, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); // Substitution name for "rights" descriptors.add(new AttributeDescriptorImpl(CSW_ACCESS_RIGHTS, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); // Substitution name for "rights" descriptors.add(new AttributeDescriptorImpl(CSW_LICENSE, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_LANGUAGE, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_CREATOR, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_PUBLISHER, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors .add(new AttributeDescriptorImpl(CSW_CONTRIBUTOR, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_SOURCE, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); } private void addRelationSubstitutionNames() { descriptors .add(new AttributeDescriptorImpl(CSW_CONFORMS_TO, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors .add(new AttributeDescriptorImpl(CSW_HAS_FORMAT, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_HAS_PART, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors .add(new AttributeDescriptorImpl(CSW_HAS_VERSION, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors .add(new AttributeDescriptorImpl(CSW_IS_FORMAT_OF, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors .add(new AttributeDescriptorImpl(CSW_IS_PART_OF, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors .add(new AttributeDescriptorImpl(CSW_IS_REFERENCED_BY, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_IS_REPLACED_BY, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_IS_REQUIRED_BY, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_IS_VERSION_OF, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors .add(new AttributeDescriptorImpl(CSW_REFERENCES, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_REPLACES, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_REQUIRES, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); } private void addDateSubstitutionNames() { // Since CSW schema specifies date elements as SimpleLiteral (which is // anyText) // and not xsd:date, all date attributes are treated as a STRING_TYPE descriptors.add(new AttributeDescriptorImpl(CSW_MODIFIED, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_CREATED, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_DATE_ACCEPTED, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors .add(new AttributeDescriptorImpl(CSW_DATE_COPYRIGHTED, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_DATE_SUBMITTED, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_ISSUED, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); descriptors.add(new AttributeDescriptorImpl(CSW_VALID, NON_QUERYABLE /* indexed */, true /* stored */, false /* tokenized */, true /* multivalued */, BasicTypes.STRING_TYPE)); } public String getNamespaceURI() { return CSW_NAMESPACE_URI; } }