Search in sources :

Example 1 with ServiceType

use of org.geotoolkit.service.ServiceType in project geotoolkit by Geomatys.

the class WmsXmlBindingTest method inpsireExtensionmarshallingTest.

/**
 * Test simple Record Marshalling.
 */
@Test
public void inpsireExtensionmarshallingTest() throws Exception {
    ExtendedCapabilitiesType ext = new ExtendedCapabilitiesType();
    NameFactory nameFactory = new DefaultNameFactory();
    ObjectFactory factory = new ObjectFactory();
    ext.setResourceType(ScopeCode.SERVICE);
    ext.setSpatialDataService(new ServiceType(nameFactory.createLocalName(null, "view")));
    ext.setResourcelocator(new DefaultOnlineResource(URI.create("http://javacestpasdlamenthealeau.com")));
    ext.setMetadataUrl(new DefaultOnlineResource(URI.create("http://javacestdurocknroll.com")));
    DefaultExtent extent = new DefaultExtent();
    DefaultTemporalExtent tempExt = new DefaultTemporalExtent();
    NamedIdentifier periodName = new NamedIdentifier(null, "period");
    final Map<String, Object> periodProp = new HashMap<>();
    periodProp.put(IdentifiedObject.NAME_KEY, periodName);
    NamedIdentifier name = new NamedIdentifier(null, "period instant");
    final Map<String, Object> properties = new HashMap<>();
    properties.put(IdentifiedObject.NAME_KEY, name);
    DefaultPeriod period = new DefaultPeriod(periodProp, new DefaultInstant(properties, new Date(120000000)), new DefaultInstant(properties, new Date(120000001)));
    // period.setBegining(new DefaultInstant(properties, new DefaultPosition(new Date(120000000))));
    // period.setEnding(new DefaultInstant(properties, new DefaultPosition(new Date(120000001))));
    // org.apache.sis.internal.jaxb.gml.GMLAdapter.IDs.setUUID(period, "extent");
    tempExt.setExtent(period);
    extent.setTemporalElements(Arrays.asList(tempExt));
    ext.setTemporalRefererence(extent);
    DefaultConformanceResult cresult = new DefaultConformanceResult(HardCodedCitations.EPSG, new DefaultInternationalString("see the referenced specification"), true);
    ext.setConformity(cresult);
    ResponsibleParty party = DefaultResponsibleParty.castOrCopy(HardCodedCitations.EPSG.getCitedResponsibleParties().iterator().next());
    ext.setMetadataPointOfContact(party);
    ext.setMetadataDate(new Date(82800000));
    DefaultKeywords key = new DefaultKeywords(new SimpleInternationalString("something"));
    ext.setInpireKeywords(key);
    List<LanguageType> langs = new ArrayList<>();
    langs.add(new LanguageType("FR"));
    langs.add(new LanguageType("EN", true));
    LanguagesType languages = new LanguagesType(langs);
    ext.setLanguages(languages);
    ext.setCurrentLanguage("FR");
    JAXBElement<ExtendedCapabilitiesType> jbExtendedCap = factory.createExtendedCapabilities(ext);
    Capability capability = new Capability(null, null, null, jbExtendedCap);
    StringWriter sw = new StringWriter();
    marshaller.marshal(capability, sw);
    String result = sw.toString();
    String expResult = "<wms:Capability xmlns:wms=\"http://www.opengis.net/wms\"" + " xmlns:gmd=\"http://www.isotc211.org/2005/gmd\"" + " xmlns:gco=\"http://www.isotc211.org/2005/gco\"" + " xmlns:srv=\"http://www.isotc211.org/2005/srv\"" + " xmlns:inspire_vs=\"http://inspira.europa.eu/networkservice/view/1.0\"" + " xmlns:gml=\"http://www.opengis.net/gml/3.2\">" + '\n' + "    <inspire_vs:ExtendedCapabilities>" + '\n' + "        <inspire_vs:Resourcelocator>" + '\n' + "            <gmd:linkage>" + '\n' + "                <gmd:URL>http://javacestpasdlamenthealeau.com</gmd:URL>" + '\n' + "            </gmd:linkage>" + '\n' + "        </inspire_vs:Resourcelocator>" + '\n' + "        <inspire_vs:MetadataUrl>" + '\n' + "            <gmd:linkage>" + '\n' + "                <gmd:URL>http://javacestdurocknroll.com</gmd:URL>" + '\n' + "            </gmd:linkage>" + '\n' + "        </inspire_vs:MetadataUrl>" + '\n' + "        <inspire_vs:ResourceType>" + '\n' + "            <gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\">Service</gmd:MD_ScopeCode>" + '\n' + "        </inspire_vs:ResourceType>" + '\n' + "        <inspire_vs:TemporalRefererence>" + '\n' + "            <gmd:EX_Extent>" + '\n' + "                <gmd:temporalElement>" + '\n' + "                    <gmd:EX_TemporalExtent>" + '\n' + "                        <gmd:extent>" + '\n' + "                            <gml:TimePeriod>" + '\n' + "                                <gml:beginPosition>1970-01-02T10:20:00+01:00</gml:beginPosition>" + '\n' + "                                <gml:endPosition>1970-01-02T10:20:00.001+01:00</gml:endPosition>" + '\n' + "                            </gml:TimePeriod>" + '\n' + "                        </gmd:extent>" + '\n' + "                    </gmd:EX_TemporalExtent>" + '\n' + "                </gmd:temporalElement>" + '\n' + "            </gmd:EX_Extent>" + '\n' + "        </inspire_vs:TemporalRefererence>" + '\n' + "        <inspire_vs:Conformity>" + '\n' + "            <gmd:DQ_ConformanceResult>" + '\n' + "                <gmd:specification>" + '\n' + "                    <gmd:CI_Citation>" + '\n' + "                        <gmd:title>" + '\n' + "                            <gco:CharacterString>EPSG Geodetic Parameter Dataset</gco:CharacterString>" + '\n' + "                        </gmd:title>" + '\n' + "                        <gmd:identifier>" + '\n' + "                            <gmd:MD_Identifier>" + '\n' + "                                <gmd:code>" + '\n' + "                                    <gco:CharacterString>EPSG</gco:CharacterString>" + '\n' + "                                </gmd:code>" + '\n' + "                            </gmd:MD_Identifier>" + '\n' + "                        </gmd:identifier>" + '\n' + "                        <gmd:citedResponsibleParty>" + '\n' + "                            <gmd:CI_ResponsibleParty>" + '\n' + "                                <gmd:organisationName>" + '\n' + "                                    <gco:CharacterString>International Association of Oil &amp; Gas Producers</gco:CharacterString>" + '\n' + "                                </gmd:organisationName>" + '\n' + "                                <gmd:contactInfo>\n" + "                                    <gmd:CI_Contact>\n" + "                                        <gmd:onlineResource>\n" + "                                            <gmd:CI_OnlineResource>\n" + "                                                <gmd:linkage>\n" + "                                                    <gmd:URL>https://epsg.org/</gmd:URL>\n" + "                                                </gmd:linkage>\n" + "                                                <gmd:function>\n" + "                                                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\">Information</gmd:CI_OnLineFunctionCode>\n" + "                                                </gmd:function>\n" + "                                            </gmd:CI_OnlineResource>\n" + "                                        </gmd:onlineResource>\n" + "                                    </gmd:CI_Contact>\n" + "                                </gmd:contactInfo>\n" + "                                <gmd:role>" + '\n' + "                                    <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeListValue=\"principalInvestigator\">Principal investigator</gmd:CI_RoleCode>" + '\n' + "                                </gmd:role>" + '\n' + "                            </gmd:CI_ResponsibleParty>" + '\n' + "                        </gmd:citedResponsibleParty>" + '\n' + "                        <gmd:presentationForm>" + '\n' + "                            <gmd:CI_PresentationFormCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\" codeListValue=\"tableDigital\">Table digital</gmd:CI_PresentationFormCode>" + '\n' + "                        </gmd:presentationForm>" + '\n' + "                    </gmd:CI_Citation>" + '\n' + "                </gmd:specification>" + '\n' + "                <gmd:explanation>" + '\n' + "                    <gco:CharacterString>see the referenced specification</gco:CharacterString>" + '\n' + "                </gmd:explanation>" + '\n' + "                <gmd:pass>" + '\n' + "                    <gco:Boolean>true</gco:Boolean>" + '\n' + "                </gmd:pass>" + '\n' + "            </gmd:DQ_ConformanceResult>" + '\n' + "        </inspire_vs:Conformity>" + '\n' + "        <inspire_vs:MetadataPointOfContact>" + '\n' + "            <gmd:CI_ResponsibleParty>" + '\n' + "                <gmd:organisationName>" + '\n' + "                    <gco:CharacterString>International Association of Oil &amp; Gas Producers</gco:CharacterString>" + '\n' + "                </gmd:organisationName>" + '\n' + "                <gmd:contactInfo>\n" + "                    <gmd:CI_Contact>\n" + "                        <gmd:onlineResource>\n" + "                            <gmd:CI_OnlineResource>\n" + "                                <gmd:linkage>\n" + "                                    <gmd:URL>https://epsg.org/</gmd:URL>\n" + "                                </gmd:linkage>\n" + "                                <gmd:function>\n" + "                                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\">Information</gmd:CI_OnLineFunctionCode>\n" + "                                </gmd:function>\n" + "                            </gmd:CI_OnlineResource>\n" + "                        </gmd:onlineResource>\n" + "                    </gmd:CI_Contact>\n" + "                </gmd:contactInfo>\n" + "                <gmd:role>" + '\n' + "                    <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeListValue=\"principalInvestigator\">Principal investigator</gmd:CI_RoleCode>" + '\n' + "                </gmd:role>" + '\n' + "            </gmd:CI_ResponsibleParty>" + '\n' + "        </inspire_vs:MetadataPointOfContact>" + '\n' + "        <inspire_vs:MetadataDate>" + '\n' + "            <gco:Date>1970-01-02</gco:Date>" + '\n' + "        </inspire_vs:MetadataDate>" + '\n' + "        <inspire_vs:SpatialDataService>" + '\n' + "            <srv:serviceType>" + '\n' + "                <gco:LocalName>view</gco:LocalName>" + '\n' + "            </srv:serviceType>" + '\n' + "        </inspire_vs:SpatialDataService>" + '\n' + "        <inspire_vs:InpireKeywords>" + '\n' + "            <gmd:keyword>" + '\n' + "                <gco:CharacterString>something</gco:CharacterString>" + '\n' + "            </gmd:keyword>" + '\n' + "        </inspire_vs:InpireKeywords>" + '\n' + "        <inspire_vs:Languages>" + '\n' + "            <inspire_vs:Language>FR</inspire_vs:Language>" + '\n' + "            <inspire_vs:Language default=\"true\">EN</inspire_vs:Language>" + '\n' + "        </inspire_vs:Languages>" + '\n' + "        <inspire_vs:currentLanguage>FR</inspire_vs:currentLanguage>" + '\n' + "    </inspire_vs:ExtendedCapabilities>" + '\n' + "</wms:Capability>" + '\n';
    // org.apache.sis.internal.jaxb.gml.GMLAdapter.IDs.removeUUID(period);
    assertXmlEquals(expResult, result, "http://www.w3.org/2000/xmlns:*");
}
Also used : LanguagesType(org.geotoolkit.inspire.xml.vs.LanguagesType) HashMap(java.util.HashMap) DefaultInternationalString(org.apache.sis.util.DefaultInternationalString) ArrayList(java.util.ArrayList) SimpleInternationalString(org.apache.sis.util.SimpleInternationalString) DefaultInternationalString(org.apache.sis.util.DefaultInternationalString) DefaultOnlineResource(org.apache.sis.metadata.iso.citation.DefaultOnlineResource) ExtendedCapabilitiesType(org.geotoolkit.inspire.xml.vs.ExtendedCapabilitiesType) LanguageType(org.geotoolkit.inspire.xml.vs.LanguageType) ObjectFactory(org.geotoolkit.inspire.xml.vs.ObjectFactory) DefaultExtent(org.apache.sis.metadata.iso.extent.DefaultExtent) StringWriter(java.io.StringWriter) ServiceType(org.geotoolkit.service.ServiceType) NamedIdentifier(org.apache.sis.referencing.NamedIdentifier) DefaultNameFactory(org.apache.sis.util.iso.DefaultNameFactory) DefaultTemporalExtent(org.apache.sis.metadata.iso.extent.DefaultTemporalExtent) DefaultConformanceResult(org.apache.sis.metadata.iso.quality.DefaultConformanceResult) Capability(org.geotoolkit.wms.xml.v130.Capability) DefaultInstant(org.geotoolkit.temporal.object.DefaultInstant) ResponsibleParty(org.opengis.metadata.citation.ResponsibleParty) DefaultResponsibleParty(org.apache.sis.metadata.iso.citation.DefaultResponsibleParty) Date(java.util.Date) DefaultKeywords(org.apache.sis.metadata.iso.identification.DefaultKeywords) DefaultPeriod(org.geotoolkit.temporal.object.DefaultPeriod) SimpleInternationalString(org.apache.sis.util.SimpleInternationalString) IdentifiedObject(org.opengis.referencing.IdentifiedObject) NameFactory(org.opengis.util.NameFactory) DefaultNameFactory(org.apache.sis.util.iso.DefaultNameFactory)

Example 2 with ServiceType

use of org.geotoolkit.service.ServiceType in project geotoolkit by Geomatys.

the class WmsXmlBindingTest method inpsireExtensionUnmarshallingTest.

/**
 * Test simple Record Marshalling.
 */
@Test
public void inpsireExtensionUnmarshallingTest() throws Exception {
    String xml = "<wms:Capability xmlns:wms=\"http://www.opengis.net/wms\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:sld=\"http://www.opengis.net/sld\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:inspire_vs=\"http://inspira.europa.eu/networkservice/view/1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + '\n' + "    <inspire_vs:ExtendedCapabilities>" + '\n' + "        <inspire_vs:Resourcelocator>" + '\n' + "            <gmd:linkage>" + '\n' + "                <gmd:URL>http://javacestpasdlamenthealeau.com</gmd:URL>" + '\n' + "            </gmd:linkage>" + '\n' + "        </inspire_vs:Resourcelocator>" + '\n' + "        <inspire_vs:MetadataUrl>" + '\n' + "            <gmd:linkage>" + '\n' + "                <gmd:URL>http://javacestdurocknroll.com</gmd:URL>" + '\n' + "            </gmd:linkage>" + '\n' + "        </inspire_vs:MetadataUrl>" + '\n' + "        <inspire_vs:ResourceType>" + '\n' + "            <gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\"/>" + '\n' + "        </inspire_vs:ResourceType>" + '\n' + "        <inspire_vs:TemporalRefererence>" + '\n' + "            <gmd:EX_Extent>" + '\n' + "                <gmd:temporalElement>" + '\n' + "                    <gmd:EX_TemporalExtent>" + '\n' + "                        <gmd:extent>" + '\n' + "                            <gml:TimePeriod>" + '\n' + "                                <gml:beginPosition>1970-01-02T10:20:00+01:00</gml:beginPosition>" + '\n' + "                                <gml:endPosition>1970-01-02T10:20:01.000+01:00</gml:endPosition>" + '\n' + "                            </gml:TimePeriod>" + '\n' + "                        </gmd:extent>" + '\n' + "                    </gmd:EX_TemporalExtent>" + '\n' + "                </gmd:temporalElement>" + '\n' + "            </gmd:EX_Extent>" + '\n' + "        </inspire_vs:TemporalRefererence>" + '\n' + "        <inspire_vs:Conformity>" + '\n' + "            <gmd:DQ_ConformanceResult>" + '\n' + "                <gmd:specification>" + '\n' + "                    <gmd:CI_Citation>" + '\n' + "                        <gmd:title>" + '\n' + "                            <gco:CharacterString>European Petroleum Survey Group</gco:CharacterString>" + '\n' + "                        </gmd:title>" + '\n' + "                        <gmd:alternateTitle>" + '\n' + "                            <gco:CharacterString>EPSG</gco:CharacterString>" + '\n' + "                        </gmd:alternateTitle>" + '\n' + "                        <gmd:identifier>" + '\n' + "                            <gmd:MD_Identifier>" + '\n' + "                                <gmd:code>" + '\n' + "                                    <gco:CharacterString>EPSG</gco:CharacterString>" + '\n' + "                                </gmd:code>" + '\n' + "                            </gmd:MD_Identifier>" + '\n' + "                        </gmd:identifier>" + '\n' + "                        <gmd:citedResponsibleParty>" + '\n' + "                            <gmd:CI_ResponsibleParty>" + '\n' + "                                <gmd:organisationName>" + '\n' + "                                    <gco:CharacterString>European Petroleum Survey Group</gco:CharacterString>" + '\n' + "                                </gmd:organisationName>" + '\n' + "                                <gmd:contactInfo>" + '\n' + "                                    <gmd:CI_Contact>" + '\n' + "                                        <gmd:onlineResource>" + '\n' + "                                            <gmd:CI_OnlineResource>" + '\n' + "                                                <gmd:linkage>" + '\n' + "                                                    <gmd:URL>https://epsg.org/</gmd:URL>" + '\n' + "                                                </gmd:linkage>" + '\n' + "                                                <gmd:function>" + '\n' + "                                                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\"/>" + '\n' + "                                                </gmd:function>" + '\n' + "                                            </gmd:CI_OnlineResource>" + '\n' + "                                        </gmd:onlineResource>" + '\n' + "                                    </gmd:CI_Contact>" + '\n' + "                                </gmd:contactInfo>" + '\n' + "                                <gmd:role>" + '\n' + "                                    <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeListValue=\"principalInvestigator\"/>" + '\n' + "                                </gmd:role>" + '\n' + "                            </gmd:CI_ResponsibleParty>" + '\n' + "                        </gmd:citedResponsibleParty>" + '\n' + "                        <gmd:presentationForm>" + '\n' + "                            <gmd:CI_PresentationFormCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\" codeListValue=\"tableDigital\"/>" + '\n' + "                        </gmd:presentationForm>" + '\n' + "                    </gmd:CI_Citation>" + '\n' + "                </gmd:specification>" + '\n' + "                <gmd:explanation>" + '\n' + "                    <gco:CharacterString>see the referenced specification</gco:CharacterString>" + '\n' + "                </gmd:explanation>" + '\n' + "                <gmd:pass>" + '\n' + "                    <gco:Boolean>true</gco:Boolean>" + '\n' + "                </gmd:pass>" + '\n' + "            </gmd:DQ_ConformanceResult>" + '\n' + "        </inspire_vs:Conformity>" + '\n' + "        <inspire_vs:MetadataPointOfContact>" + '\n' + "            <gmd:CI_ResponsibleParty>" + '\n' + "                <gmd:organisationName>" + '\n' + "                    <gco:CharacterString>European Petroleum Survey Group</gco:CharacterString>" + '\n' + "                </gmd:organisationName>" + '\n' + "                <gmd:contactInfo>" + '\n' + "                    <gmd:CI_Contact>" + '\n' + "                        <gmd:onlineResource>" + '\n' + "                            <gmd:CI_OnlineResource>" + '\n' + "                                <gmd:linkage>" + '\n' + "                                    <gmd:URL>https://epsg.org/</gmd:URL>" + '\n' + "                                </gmd:linkage>" + '\n' + "                                <gmd:function>" + '\n' + "                                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\"/>" + '\n' + "                                </gmd:function>" + '\n' + "                            </gmd:CI_OnlineResource>" + '\n' + "                        </gmd:onlineResource>" + '\n' + "                    </gmd:CI_Contact>" + '\n' + "                </gmd:contactInfo>" + '\n' + "                <gmd:role>" + '\n' + "                    <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeListValue=\"principalInvestigator\"/>" + '\n' + "                </gmd:role>" + '\n' + "            </gmd:CI_ResponsibleParty>" + '\n' + "        </inspire_vs:MetadataPointOfContact>" + '\n' + "        <inspire_vs:MetadataDate>" + '\n' + "            <gco:Date>1970-01-02</gco:Date>" + '\n' + "        </inspire_vs:MetadataDate>" + '\n' + "        <inspire_vs:SpatialDataService>" + '\n' + "            <srv:serviceType>" + '\n' + "                <gco:LocalName>view</gco:LocalName>" + '\n' + "            </srv:serviceType>" + '\n' + "        </inspire_vs:SpatialDataService>" + '\n' + "        <inspire_vs:InpireKeywords>" + '\n' + "            <gmd:keyword>" + '\n' + "                <gco:CharacterString>something</gco:CharacterString>" + '\n' + "            </gmd:keyword>" + '\n' + "        </inspire_vs:InpireKeywords>" + '\n' + "        <inspire_vs:Languages>" + '\n' + "            <inspire_vs:Language>FR</inspire_vs:Language>" + '\n' + "            <inspire_vs:Language default=\"true\">EN</inspire_vs:Language>" + '\n' + "        </inspire_vs:Languages>" + '\n' + "        <inspire_vs:currentLanguage>FR</inspire_vs:currentLanguage>" + '\n' + "    </inspire_vs:ExtendedCapabilities>" + '\n' + "</wms:Capability>" + '\n';
    ExtendedCapabilitiesType ext = new ExtendedCapabilitiesType();
    NameFactory nameFactory = new DefaultNameFactory();
    ObjectFactory factory = new ObjectFactory();
    ext.setResourceType(ScopeCode.SERVICE);
    ext.setSpatialDataService(new ServiceType(nameFactory.createLocalName(null, "view")));
    ext.setResourcelocator(new DefaultOnlineResource(URI.create("http://javacestpasdlamenthealeau.com")));
    ext.setMetadataUrl(new DefaultOnlineResource(URI.create("http://javacestdurocknroll.com")));
    DefaultExtent extent = new DefaultExtent();
    DefaultTemporalExtent tempExt = new DefaultTemporalExtent();
    NamedIdentifier periodName = new NamedIdentifier(null, "period");
    final Map<String, Object> periodProp = new HashMap<>();
    periodProp.put(IdentifiedObject.NAME_KEY, periodName);
    NamedIdentifier instantName = new NamedIdentifier(null, "period instant");
    final Map<String, Object> properties = new HashMap<>();
    properties.put(IdentifiedObject.NAME_KEY, instantName);
    DefaultPeriod period = new DefaultPeriod(periodProp, new DefaultInstant(properties, new Date(120000000)), new DefaultInstant(properties, new Date(120001000)));
    tempExt.setExtent(period);
    extent.setTemporalElements(Arrays.asList(tempExt));
    ext.setTemporalRefererence(extent);
    DefaultResponsibleParty rp = new DefaultResponsibleParty(Role.PRINCIPAL_INVESTIGATOR);
    rp.setOrganisationName(new SimpleInternationalString("European Petroleum Survey Group"));
    DefaultOnlineResource or = new DefaultOnlineResource(URI.create("https://epsg.org/"));
    or.setFunction(OnLineFunction.INFORMATION);
    DefaultContact ct = new DefaultContact(or);
    rp.setContactInfo(ct);
    DefaultCitation citation = new DefaultCitation();
    citation.setCitedResponsibleParties(Arrays.asList(rp));
    citation.setTitle(rp.getOrganisationName());
    citation.setAlternateTitles(Arrays.asList(new SimpleInternationalString("EPSG")));
    citation.setIdentifiers(Arrays.asList(new DefaultIdentifier("EPSG")));
    citation.setPresentationForms(Arrays.asList(PresentationForm.TABLE_DIGITAL));
    DefaultConformanceResult cresult = new DefaultConformanceResult(citation, new DefaultInternationalString("see the referenced specification"), true);
    ext.setConformity(cresult);
    ResponsibleParty party = DefaultResponsibleParty.castOrCopy(HardCodedCitations.EPSG.getCitedResponsibleParties().iterator().next());
    ext.setMetadataPointOfContact(party);
    ext.setMetadataDate(new Date(82800000));
    DefaultKeywords key = new DefaultKeywords(new SimpleInternationalString("something"));
    ext.setInpireKeywords(key);
    List<LanguageType> langs = new ArrayList<>();
    langs.add(new LanguageType("FR"));
    langs.add(new LanguageType("EN", true));
    LanguagesType languages = new LanguagesType(langs);
    ext.setLanguages(languages);
    ext.setCurrentLanguage("FR");
    JAXBElement<ExtendedCapabilitiesType> jbExtendedCap = factory.createExtendedCapabilities(ext);
    Capability expResult = new Capability(null, null, null, jbExtendedCap);
    final Object unmarshalled = unmarshaller.unmarshal(new StringReader(xml));
    assertNotNull(unmarshalled);
    assertTrue(unmarshalled instanceof Capability);
    Capability result = (Capability) unmarshalled;
    // The Unmarshaller replaced automatically the DefaultInternationalString by a
    // SimpleInternationalString because it detected that there is only one locale.
    // Perform the same change in our expected result in order to allow comparison.
    cresult.setExplanation(new SimpleInternationalString(cresult.getExplanation().toString()));
    final ExtendedCapabilitiesType expCapabilities = expResult.getInspireExtendedCapabilities();
    final ExtendedCapabilitiesType capabilities = result.getInspireExtendedCapabilities();
    final ConformanceResult expConformity = expCapabilities.getConformity();
    final ConformanceResult conformity = capabilities.getConformity();
    final Citation expSpecification = expConformity.getSpecification();
    final Citation specification = conformity.getSpecification();
    final Extent expTemporal = expCapabilities.getTemporalRefererence();
    final Extent temporal = capabilities.getTemporalRefererence();
    final TemporalExtent expTemporalExtent = getSingleton(expTemporal.getTemporalElements());
    final TemporalExtent temporalExtent = getSingleton(temporal.getTemporalElements());
    final Period expExtentPeriod = (Period) expTemporalExtent.getExtent();
    final Period extentPeriod = (Period) temporalExtent.getExtent();
    assertEquals(expConformity.getExplanation().toString(), conformity.getExplanation().toString());
    assertEquals(expSpecification.getCollectiveTitle(), specification.getCollectiveTitle());
    assertEquals(expSpecification.getCitedResponsibleParties(), specification.getCitedResponsibleParties());
    assertEquals(expSpecification.getAlternateTitles(), specification.getAlternateTitles());
    assertEquals(expSpecification, specification);
    assertEquals(expConformity, conformity);
    assertEquals(expCapabilities.getResourceType(), capabilities.getResourceType());
    assertEquals(expTemporal.getDescription(), temporal.getDescription());
    assertEquals(expExtentPeriod.getBeginning().getDate(), extentPeriod.getBeginning().getDate());
    assertEquals(expExtentPeriod.getEnding().getDate(), extentPeriod.getEnding().getDate());
    if (expExtentPeriod.getClass() == extentPeriod.getClass()) {
        /*
             * The time period created by this test case is an instance of org.geotoolkit.temporal.object.DefaultPeriod
             * while the unmarshalled period is an instance of org.geotoolkit.gml.xml.v311.TimePeriodType. This is okay
             * since DefaultPeriod does not have JAXB annotation. But it prevents us to compare the objects further.
             */
        assertEquals(expExtentPeriod, extentPeriod);
        assertEquals(expTemporalExtent, temporalExtent);
        assertEquals(expTemporal, temporal);
        assertEquals(expCapabilities, capabilities);
        assertEquals(expResult, result);
    }
}
Also used : LanguagesType(org.geotoolkit.inspire.xml.vs.LanguagesType) HashMap(java.util.HashMap) DefaultCitation(org.apache.sis.metadata.iso.citation.DefaultCitation) DefaultTemporalExtent(org.apache.sis.metadata.iso.extent.DefaultTemporalExtent) TemporalExtent(org.opengis.metadata.extent.TemporalExtent) DefaultExtent(org.apache.sis.metadata.iso.extent.DefaultExtent) Extent(org.opengis.metadata.extent.Extent) DefaultInternationalString(org.apache.sis.util.DefaultInternationalString) ArrayList(java.util.ArrayList) SimpleInternationalString(org.apache.sis.util.SimpleInternationalString) DefaultInternationalString(org.apache.sis.util.DefaultInternationalString) DefaultOnlineResource(org.apache.sis.metadata.iso.citation.DefaultOnlineResource) ExtendedCapabilitiesType(org.geotoolkit.inspire.xml.vs.ExtendedCapabilitiesType) DefaultContact(org.apache.sis.metadata.iso.citation.DefaultContact) LanguageType(org.geotoolkit.inspire.xml.vs.LanguageType) DefaultConformanceResult(org.apache.sis.metadata.iso.quality.DefaultConformanceResult) ConformanceResult(org.opengis.metadata.quality.ConformanceResult) ObjectFactory(org.geotoolkit.inspire.xml.vs.ObjectFactory) DefaultExtent(org.apache.sis.metadata.iso.extent.DefaultExtent) ServiceType(org.geotoolkit.service.ServiceType) NamedIdentifier(org.apache.sis.referencing.NamedIdentifier) DefaultNameFactory(org.apache.sis.util.iso.DefaultNameFactory) DefaultTemporalExtent(org.apache.sis.metadata.iso.extent.DefaultTemporalExtent) DefaultConformanceResult(org.apache.sis.metadata.iso.quality.DefaultConformanceResult) StringReader(java.io.StringReader) DefaultIdentifier(org.apache.sis.metadata.iso.DefaultIdentifier) Citation(org.opengis.metadata.citation.Citation) DefaultCitation(org.apache.sis.metadata.iso.citation.DefaultCitation) DefaultResponsibleParty(org.apache.sis.metadata.iso.citation.DefaultResponsibleParty) Capability(org.geotoolkit.wms.xml.v130.Capability) DefaultInstant(org.geotoolkit.temporal.object.DefaultInstant) DefaultPeriod(org.geotoolkit.temporal.object.DefaultPeriod) Period(org.opengis.temporal.Period) ResponsibleParty(org.opengis.metadata.citation.ResponsibleParty) DefaultResponsibleParty(org.apache.sis.metadata.iso.citation.DefaultResponsibleParty) Date(java.util.Date) DefaultTemporalExtent(org.apache.sis.metadata.iso.extent.DefaultTemporalExtent) TemporalExtent(org.opengis.metadata.extent.TemporalExtent) DefaultKeywords(org.apache.sis.metadata.iso.identification.DefaultKeywords) DefaultPeriod(org.geotoolkit.temporal.object.DefaultPeriod) SimpleInternationalString(org.apache.sis.util.SimpleInternationalString) IdentifiedObject(org.opengis.referencing.IdentifiedObject) NameFactory(org.opengis.util.NameFactory) DefaultNameFactory(org.apache.sis.util.iso.DefaultNameFactory)

Aggregations

ArrayList (java.util.ArrayList)2 Date (java.util.Date)2 HashMap (java.util.HashMap)2 DefaultOnlineResource (org.apache.sis.metadata.iso.citation.DefaultOnlineResource)2 DefaultResponsibleParty (org.apache.sis.metadata.iso.citation.DefaultResponsibleParty)2 DefaultExtent (org.apache.sis.metadata.iso.extent.DefaultExtent)2 DefaultTemporalExtent (org.apache.sis.metadata.iso.extent.DefaultTemporalExtent)2 DefaultKeywords (org.apache.sis.metadata.iso.identification.DefaultKeywords)2 DefaultConformanceResult (org.apache.sis.metadata.iso.quality.DefaultConformanceResult)2 NamedIdentifier (org.apache.sis.referencing.NamedIdentifier)2 DefaultInternationalString (org.apache.sis.util.DefaultInternationalString)2 SimpleInternationalString (org.apache.sis.util.SimpleInternationalString)2 DefaultNameFactory (org.apache.sis.util.iso.DefaultNameFactory)2 ExtendedCapabilitiesType (org.geotoolkit.inspire.xml.vs.ExtendedCapabilitiesType)2 LanguageType (org.geotoolkit.inspire.xml.vs.LanguageType)2 LanguagesType (org.geotoolkit.inspire.xml.vs.LanguagesType)2 ObjectFactory (org.geotoolkit.inspire.xml.vs.ObjectFactory)2 ServiceType (org.geotoolkit.service.ServiceType)2 DefaultInstant (org.geotoolkit.temporal.object.DefaultInstant)2 DefaultPeriod (org.geotoolkit.temporal.object.DefaultPeriod)2