in endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/sql/MetadataFallback.java [109:237]
static Citation createCitation(final String key) {
CharSequence title;
CharSequence alternateTitle = null;
CharSequence edition = null;
String code = key;
String codeSpace = null;
String version = null;
CharSequence citedResponsibleParty = null;
PresentationForm presentationForm = null;
String copyFrom = null; // Copy citedResponsibleParty from those citations.
switch (key) {
case "ISO 19115-1": {
title = "Geographic Information — Metadata Part 1: Fundamentals";
edition = "ISO 19115-1:2014";
code = "19115-1";
codeSpace = "ISO";
version = "2014";
citedResponsibleParty = "International Organization for Standardization";
presentationForm = PresentationForm.DOCUMENT_DIGITAL;
break;
}
case "ISO 19115-2": {
title = "Geographic Information — Metadata Part 2: Extensions for imagery and gridded data";
edition = "ISO 19115-2:2019";
code = "19115-2";
codeSpace = "ISO";
version = "2019";
copyFrom = "ISO 19115-1";
presentationForm = PresentationForm.DOCUMENT_DIGITAL;
break;
}
case "WMS": {
title = "Web Map Server";
alternateTitle = "WMS";
edition = version = "1.3";
codeSpace = "OGC";
copyFrom = "OGC";
presentationForm = PresentationForm.DOCUMENT_DIGITAL;
break;
}
case Constants.OGC: {
title = "OGC Naming Authority";
citedResponsibleParty = "Open Geospatial Consortium";
presentationForm = PresentationForm.DOCUMENT_DIGITAL;
break;
}
case "WMO": {
title = "WMO Information System (WIS)";
citedResponsibleParty = "World Meteorological Organization";
presentationForm = PresentationForm.DOCUMENT_DIGITAL;
break;
}
case Constants.IOGP: { // Not in public API (see Citations.IOGP javadoc)
title = "IOGP Surveying and Positioning Guidance Note 7";
copyFrom = Constants.EPSG;
presentationForm = PresentationForm.DOCUMENT_DIGITAL;
break;
}
case Constants.EPSG: {
title = "EPSG Geodetic Parameter Dataset";
alternateTitle = "EPSG Dataset";
codeSpace = Constants.IOGP;
citedResponsibleParty = "International Association of Oil & Gas producers";
presentationForm = PresentationForm.TABLE_DIGITAL;
break;
}
case Constants.SIS: {
title = "Apache Spatial Information System";
codeSpace = "Apache";
break;
}
case "ISBN": {
title = "International Standard Book Number";
alternateTitle = key;
code = null;
break;
}
case "ISSN": {
title = "International Standard Serial Number";
alternateTitle = key;
code = null;
break;
}
case "PROJ": {
title = "PROJ coordinate transformation software library";
codeSpace = "OSGeo";
break;
}
case Constants.GDAL: {
title = "Geospatial Data Abstraction Library";
alternateTitle = "GDAL";
codeSpace = "OSGeo";
break;
}
case "Unidata": {
title = "Unidata netCDF library";
code = null;
break;
}
case "IHO S-57": {
title = code = "S-57";
codeSpace = "IHO";
version = "3.1";
presentationForm = PresentationForm.DOCUMENT_DIGITAL;
break;
}
default: return null;
}
/*
* Do not use the 'c.getFoo().add(foo)' pattern below. Use the 'c.setFoo(singleton(foo))' pattern instead.
* This is because this method may be invoked during XML serialization, in which case some getter methods
* may return null (for preventing JAXB to marshal some empty elements).
*/
final DefaultCitation c = new DefaultCitation(title);
if (alternateTitle != null) c.setAlternateTitles(singleton(Types.toInternationalString(alternateTitle)));
if (edition != null) c.setEdition(Types.toInternationalString(edition));
if (code != null) c.setIdentifiers(singleton(new DefaultIdentifier(codeSpace, code, version)));
if (presentationForm != null) c.setPresentationForms(singleton(presentationForm));
if (citedResponsibleParty != null) {
final DefaultResponsibleParty r = new DefaultResponsibleParty(Role.PRINCIPAL_INVESTIGATOR);
r.setParties(singleton(new DefaultOrganisation(citedResponsibleParty, null, null, null)));
c.setCitedResponsibleParties(singleton(r));
}
if (copyFrom != null) {
c.setCitedResponsibleParties(createCitation(copyFrom).getCitedResponsibleParties());
}
c.transitionTo(DefaultCitation.State.FINAL);
return c;
}