Search in sources :

Example 11 with DocumentComparator

use of org.apache.sis.test.xml.DocumentComparator in project geotoolkit by Geomatys.

the class ProvidersXmlTest method testMarshallingWithSLD.

/**
 * Test for the marshalling process of a {@link MapContext}.
 *
 * @throws JAXBException
 */
@Test
public void testMarshallingWithSLD() throws JAXBException, Exception {
    final List<MapItem> mapLayers2 = new ArrayList<>();
    final StyledLayerDescriptor sld = new StyledLayerDescriptor();
    final UserStyle us = new UserStyle();
    final DescriptionType title = new DescriptionType();
    title.setTitle("test_sld");
    us.setDescription(title);
    final FeatureTypeStyleType fts = new FeatureTypeStyleType();
    fts.setName("ft_test");
    us.getFeatureTypeStyleOrCoverageStyleOrOnlineResource().add(fts);
    final UserLayer ul = new UserLayer();
    ul.getUserStyle().add(us);
    sld.getNamedLayerOrUserLayer().add(ul);
    mapLayers2.add(new MapLayer(new DataReference("postgis_test:my_otherlayer"), sld));
    mapLayers2.add(new MapLayer(new DataReference("coverage:my_thirdlayer"), new StyleReference("my_newstyle")));
    final List<MapItem> mapItems = new ArrayList<>();
    mapItems.add(new MapItem(mapLayers2));
    final MapLayer ml = new MapLayer(new DataReference("postgis_test:my_layer"), new StyleReference("my_style"));
    mapItems.add(new MapItem());
    mapItems.add(ml);
    final MapItem mapItem = new MapItem(mapItems);
    final MapContext mapContext = new MapContext(mapItem);
    final StringWriter sw = new StringWriter();
    marshaller.marshal(mapContext, sw);
    final String result = sw.toString();
    try {
        sw.close();
    } catch (IOException e) {
        fail("Unable to close the writer");
    }
    assertNotNull(result);
    assertFalse(result.isEmpty());
    DocumentComparator comparator = new DocumentComparator(RESULT_MARSHALLING_WITH_SLD, result.trim());
    comparator.ignoredAttributes.add("http://www.w3.org/2000/xmlns:*");
    comparator.compare();
}
Also used : UserStyle(org.geotoolkit.sld.xml.v110.UserStyle) DescriptionType(org.geotoolkit.se.xml.v110.DescriptionType) ArrayList(java.util.ArrayList) IOException(java.io.IOException) StyledLayerDescriptor(org.geotoolkit.sld.xml.v110.StyledLayerDescriptor) StringWriter(java.io.StringWriter) DocumentComparator(org.apache.sis.test.xml.DocumentComparator) FeatureTypeStyleType(org.geotoolkit.se.xml.v110.FeatureTypeStyleType) UserLayer(org.geotoolkit.sld.xml.v110.UserLayer)

Example 12 with DocumentComparator

use of org.apache.sis.test.xml.DocumentComparator in project geotoolkit by Geomatys.

the class SmlXMLBindingTest method SystemMarshalingTest.

/**
 * Test simple Record Marshalling.
 *
 * @throws java.lang.Exception
 */
@Test
public void SystemMarshalingTest() throws Exception {
    SensorML.Member member = new SensorML.Member();
    SystemType system = new SystemType();
    system.setId("urn-ogc-object-feature-Sensor-IFREMER-13471-09-CTD-1");
    List<String> kw = new ArrayList<String>();
    kw.add("OCEANS");
    kw.add("OCEANS:OCEAN TEMPERATURE");
    kw.add("OCEANS:OCEAN PRESSURE");
    kw.add("OCEANS:SALINITY/DENSITY");
    kw.add("Instruments/Sensors:In Situ/Laboratory Instruments:Conductivity Sensors");
    Keywords keywords = new Keywords(new KeywordList(URI.create("urn:x-nasa:def:gcmd:keywords"), kw));
    system.setKeywords(keywords);
    CodeSpacePropertyType cs = new CodeSpacePropertyType("urn:x-ogc:dictionary::sensorTypes");
    Classifier cl2 = new Classifier("sensorType", new Term(cs, "CTD", "urn:x-ogc:def:classifier:OGC:sensorType"));
    List<Classifier> cls = new ArrayList<Classifier>();
    cls.add(cl2);
    ClassifierList claList = new ClassifierList(null, cls);
    Classification classification = new Classification(claList);
    system.setClassification(classification);
    List<Identifier> identifiers = new ArrayList<Identifier>();
    Identifier id1 = new Identifier("uniqueID", new Term("urn:ogc:object:feature:Sensor:IFREMER:13471-09-CTD-1", "urn:ogc:def:identifierType:OGC:uniqueID"));
    Identifier id2 = new Identifier("shortName", new Term("Microcat_CT_SBE37", "urn:x-ogc:def:identifier:OGC:shortName"));
    cs = new CodeSpacePropertyType("urn:x-ogc:def:identifier:SBE:modelNumber");
    Identifier id3 = new Identifier("modelNumber", new Term(cs, "", "urn:x-ogc:def:identifier:OGC:modelNumber"));
    cs = new CodeSpacePropertyType("urn:x-ogc:def:identifier:SBE:serialNumber");
    Identifier id4 = new Identifier("serialNumber", new Term(cs, "", "urn:x-ogc:def:identifier:OGC:serialNumber"));
    identifiers.add(id1);
    identifiers.add(id2);
    identifiers.add(id3);
    identifiers.add(id4);
    IdentifierList identifierList = new IdentifierList(null, identifiers);
    Identification identification = new Identification(identifierList);
    system.setIdentification(identification);
    Address address1 = new Address("1808 136th Place NE", "Bellevue", "Washington", "98005", "USA", null);
    Phone phone1 = new Phone("+1 (425) 643-9866", "+1 (425) 643-9954");
    ContactInfo contactInfo1 = new ContactInfo(phone1, address1);
    contactInfo1.setOnlineResource(new OnlineResource("http://www.seabird.com"));
    ResponsibleParty resp1 = new ResponsibleParty(null, "Sea-Bird Electronics, Inc.", null, contactInfo1);
    Contact contact1 = new Contact(null, resp1);
    contact1.setArcrole("urn:x-ogc:def:classifiers:OGC:contactType:manufacturer");
    system.setContact(Arrays.asList(contact1));
    List<ComponentPropertyType> compos = new ArrayList<ComponentPropertyType>();
    ComponentType compo1 = new ComponentType();
    compo1.setId("urn-ogc-object-feature-Sensor-IFREMER-13471-1017-PSAL-2.0");
    List<IoComponentPropertyType> ios1 = new ArrayList<IoComponentPropertyType>();
    ios1.add(new IoComponentPropertyType("CNDC", new ObservableProperty("urn:x-ogc:def:phenomenon:OGC:CNDC")));
    ios1.add(new IoComponentPropertyType("TEMP", new ObservableProperty("urn:x-ogc:def:phenomenon:OGC:TEMP")));
    ios1.add(new IoComponentPropertyType("PRES", new ObservableProperty("urn:x-ogc:def:phenomenon:OGC:PRES")));
    Inputs inputs1 = new Inputs(ios1);
    compo1.setInputs(inputs1);
    QuantityType q = new QuantityType("urn:x-ogc:def:phenomenon:OGC:PSAL", new UomPropertyType("P.S.U", null), null);
    q.setParameterName(new CodeType("#sea_water_electrical_conductivity", "http://cf-pcmdi.llnl.gov/documents/cf-standard-names/standard-name-table/11/standard-name-table"));
    IoComponentPropertyType io1 = new IoComponentPropertyType("computedPSAL", q);
    Outputs outputs1 = new Outputs(Arrays.asList(io1));
    compo1.setOutputs(outputs1);
    compos.add(new ComponentPropertyType("IFREMER-13471-1017-PSAL-2.0", sml101Factory.createComponent(compo1)));
    ComponentType compo2 = new ComponentType();
    compo2.setId("urn-ogc-object-feature-Sensor-IFREMER-13471-1017-CNDC-2.0");
    List<IoComponentPropertyType> ios2 = new ArrayList<IoComponentPropertyType>();
    ios2.add(new IoComponentPropertyType("CNDC", new ObservableProperty("urn:x-ogc:def:phenomenon:OGC:CNDC")));
    Inputs inputs2 = new Inputs(ios2);
    compo2.setInputs(inputs2);
    QuantityType q2 = new QuantityType("urn:x-ogc:def:phenomenon:OGC:CNDC", new UomPropertyType("mhos/m", null), null);
    q2.setParameterName(new CodeType("#sea_water_electrical_conductivity", "http://cf-pcmdi.llnl.gov/documents/cf-standard-names/standard-name-table/11/standard-name-table"));
    IoComponentPropertyType io2 = new IoComponentPropertyType("measuredCNDC", q2);
    Outputs outputs2 = new Outputs(Arrays.asList(io2));
    compo2.setOutputs(outputs2);
    compos.add(new ComponentPropertyType("IFREMER-13471-1017-CNDC-2.0", sml101Factory.createComponent(compo2)));
    ComponentType compo3 = new ComponentType();
    compo3.setId("urn-ogc-object-feature-Sensor-IFREMER-13471-1017-PRES-2.0");
    compo3.setDescription("Conductivity detector connected to the SBE37SMP Recorder");
    List<IoComponentPropertyType> ios3 = new ArrayList<IoComponentPropertyType>();
    ios3.add(new IoComponentPropertyType("PRES", new ObservableProperty("urn:x-ogc:def:phenomenon:OGC:PRES")));
    Inputs inputs3 = new Inputs(ios3);
    compo3.setInputs(inputs3);
    UomPropertyType uom3 = new UomPropertyType("dBar", null);
    uom3.setTitle("decibar=10000 pascals");
    QuantityType q3 = new QuantityType("urn:x-ogc:def:phenomenon:OGC:PRES", uom3, null);
    q3.setParameterName(new CodeType("#sea_water_pressure", "http://cf-pcmdi.llnl.gov/documents/cf-standard-names/standard-name-table/11/standard-name-table"));
    IoComponentPropertyType io3 = new IoComponentPropertyType("measuredPRES", q3);
    Outputs outputs3 = new Outputs(Arrays.asList(io3));
    compo3.setOutputs(outputs3);
    compos.add(new ComponentPropertyType("IFREMER-13471-1017-PRES-2.0", sml101Factory.createComponent(compo3)));
    ComponentType compo4 = new ComponentType();
    compo4.setId("urn-ogc-object-feature-Sensor-IFREMER-13471-1017-TEMP-2.0");
    compo4.setDescription(" Temperature detector connected to the SBE37SMP Recorder");
    List<IoComponentPropertyType> ios4 = new ArrayList<IoComponentPropertyType>();
    ios4.add(new IoComponentPropertyType("TEMP", new ObservableProperty("urn:x-ogc:def:phenomenon:OGC:TEMP")));
    Inputs inputs4 = new Inputs(ios4);
    compo4.setInputs(inputs4);
    UomPropertyType uom4 = new UomPropertyType("Cel", null);
    uom4.setTitle("Celsius degree");
    QuantityType q4 = new QuantityType("urn:x-ogc:def:phenomenon:OGC:TEMP", uom4, null);
    q4.setParameterName(new CodeType("#sea_water_temperature", "http://cf-pcmdi.llnl.gov/documents/cf-standard-names/standard-name-table/11/standard-name-table"));
    IoComponentPropertyType io4 = new IoComponentPropertyType("measuredTEMP", q4);
    Outputs outputs4 = new Outputs(Arrays.asList(io4));
    compo4.setOutputs(outputs4);
    List<DataComponentPropertyType> params4 = new ArrayList<DataComponentPropertyType>();
    List<DataComponentPropertyType> fields4 = new ArrayList<DataComponentPropertyType>();
    QuantityRange qr = new QuantityRange(new UomPropertyType("Cel", null), Arrays.asList(-5.0, 35.0));
    qr.setDefinition("urn:x-ogc:def:sensor:dynamicRange");
    fields4.add(new DataComponentPropertyType("dynamicRange", null, qr));
    QuantityType qr2 = new QuantityType("urn:x-ogc:def:sensor:gain", null, 1.0);
    fields4.add(new DataComponentPropertyType("gain", null, qr2));
    QuantityType qr3 = new QuantityType("urn:x-ogc:def:sensor:offset", null, 0.0);
    fields4.add(new DataComponentPropertyType("offset", null, qr3));
    DataRecordType record = new DataRecordType("urn:x-ogc:def:sensor:linearCalibration", fields4);
    DataComponentPropertyType recordProp = new DataComponentPropertyType(record, "calibration");
    recordProp.setRole("urn:x-ogc:def:sensor:steadyState");
    params4.add(recordProp);
    params4.add(new DataComponentPropertyType("accuracy", "urn:x-ogc:def:sensor:OGC:accuracy", new QuantityType("urn:x-ogc:def:sensor:OGC:absoluteAccuracy", new UomPropertyType("Cel", null), 0.0020)));
    ParameterList parameterList4 = new ParameterList(params4);
    Parameters parameters4 = new Parameters(parameterList4);
    compo4.setParameters(parameters4);
    compo4.setMethod(new MethodPropertyType("urn:x-ogc:def:process:1.0:detector"));
    compos.add(new ComponentPropertyType("IFREMER-13471-1017-TEMP-2.0", sml101Factory.createComponent(compo4)));
    ComponentList componentList = new ComponentList(compos);
    Components components = new Components(componentList);
    system.setComponents(components);
    Interface i1 = new Interface("RS232", null);
    List<Interface> interfaceL = new ArrayList<Interface>();
    interfaceL.add(i1);
    InterfaceList interfaceList = new InterfaceList(null, interfaceL);
    Interfaces interfaces = new Interfaces(interfaceList);
    system.setInterfaces(interfaces);
    system.setDescription("The SBE 37-SMP MicroCAT is a high-accuracy conductivity and temperature (pressure optional) recorder with internal battery and memory, serial communication or Inductive Modem and pump (optional). Designed for moorings or other long duration, fixed-site deployments, the MicroCAT includes a standard serial interface and nonvolatile FLASH memory. Construction is of titanium and other non-corroding materials to ensure long life with minimum maintenance, and depth capability is 7000 meters (23,000 feet).");
    member.setProcess(sml101Factory.createSystem(system));
    SensorML sensor = new SensorML("1.0.1", Arrays.asList(member));
    Marshaller m = SensorMLMarshallerPool.getInstance().acquireMarshaller();
    StringWriter sw = new StringWriter();
    m.marshal(sensor, sw);
    String result = sw.toString();
    InputStream in = SmlXMLBindingTest.class.getResourceAsStream("/org/geotoolkit/sml/system101.xml");
    StringWriter out = new StringWriter();
    byte[] buffer = new byte[1024];
    int size;
    while ((size = in.read(buffer, 0, 1024)) > 0) {
        out.write(new String(buffer, 0, size));
    }
    String expResult = out.toString();
    final DocumentComparator comparator = new DocumentComparator(expResult, result) {

        @Override
        protected strictfp void compareAttributeNode(Attr expected, Node actual) {
            super.compareAttributeNode(expected, actual);
        }
    };
    comparator.ignoredAttributes.add("http://www.w3.org/2000/xmlns:*");
    comparator.ignoredAttributes.add("http://www.w3.org/2001/XMLSchema-instance:schemaLocation");
    comparator.compare();
    SensorMLMarshallerPool.getInstance().recycle(m);
}
Also used : Address(org.geotoolkit.sml.xml.v101.Address) Node(org.w3c.dom.Node) ArrayList(java.util.ArrayList) SystemType(org.geotoolkit.sml.xml.v101.SystemType) InterfaceList(org.geotoolkit.sml.xml.v101.InterfaceList) IdentifierList(org.geotoolkit.sml.xml.v101.IdentifierList) Attr(org.w3c.dom.Attr) Components(org.geotoolkit.sml.xml.v101.Components) Identifier(org.geotoolkit.sml.xml.v101.Identifier) ObservableProperty(org.geotoolkit.swe.xml.v101.ObservableProperty) Classification(org.geotoolkit.sml.xml.v101.Classification) ContactInfo(org.geotoolkit.sml.xml.v101.ContactInfo) Parameters(org.geotoolkit.sml.xml.v101.Parameters) ClassifierList(org.geotoolkit.sml.xml.v101.ClassifierList) Term(org.geotoolkit.sml.xml.v101.Term) IoComponentPropertyType(org.geotoolkit.sml.xml.v101.IoComponentPropertyType) OnlineResource(org.geotoolkit.sml.xml.v101.OnlineResource) QuantityType(org.geotoolkit.swe.xml.v101.QuantityType) Outputs(org.geotoolkit.sml.xml.v101.Outputs) ParameterList(org.geotoolkit.sml.xml.v101.ParameterList) DataRecordType(org.geotoolkit.swe.xml.v101.DataRecordType) Keywords(org.geotoolkit.sml.xml.v101.Keywords) DataComponentPropertyType(org.geotoolkit.swe.xml.v101.DataComponentPropertyType) ComponentPropertyType(org.geotoolkit.sml.xml.v101.ComponentPropertyType) IoComponentPropertyType(org.geotoolkit.sml.xml.v101.IoComponentPropertyType) Identification(org.geotoolkit.sml.xml.v101.Identification) ComponentList(org.geotoolkit.sml.xml.v101.ComponentList) Classifier(org.geotoolkit.sml.xml.v101.Classifier) UomPropertyType(org.geotoolkit.swe.xml.v101.UomPropertyType) StringWriter(java.io.StringWriter) Phone(org.geotoolkit.sml.xml.v101.Phone) DocumentComparator(org.apache.sis.test.xml.DocumentComparator) CodeSpacePropertyType(org.geotoolkit.swe.xml.v101.CodeSpacePropertyType) DataComponentPropertyType(org.geotoolkit.swe.xml.v101.DataComponentPropertyType) Inputs(org.geotoolkit.sml.xml.v101.Inputs) ComponentType(org.geotoolkit.sml.xml.v101.ComponentType) Marshaller(javax.xml.bind.Marshaller) InputStream(java.io.InputStream) QuantityRange(org.geotoolkit.swe.xml.v101.QuantityRange) ResponsibleParty(org.geotoolkit.sml.xml.v101.ResponsibleParty) SensorML(org.geotoolkit.sml.xml.v101.SensorML) MethodPropertyType(org.geotoolkit.sml.xml.v101.MethodPropertyType) Contact(org.geotoolkit.sml.xml.v101.Contact) Interfaces(org.geotoolkit.sml.xml.v101.Interfaces) KeywordList(org.geotoolkit.sml.xml.v101.KeywordList) CodeType(org.geotoolkit.gml.xml.v311.CodeType) Interface(org.geotoolkit.sml.xml.v101.Interface)

Aggregations

DocumentComparator (org.apache.sis.test.xml.DocumentComparator)12 StringWriter (java.io.StringWriter)7 Test (org.junit.Test)5 ArrayList (java.util.ArrayList)4 Marshaller (javax.xml.bind.Marshaller)4 IOException (java.io.IOException)3 InputStream (java.io.InputStream)2 MarshallerPool (org.apache.sis.xml.MarshallerPool)2 InternationalString (org.opengis.util.InternationalString)2 ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 Path (java.nio.file.Path)1 Date (java.util.Date)1 JAXBElement (javax.xml.bind.JAXBElement)1 Unmarshaller (javax.xml.bind.Unmarshaller)1 Duration (javax.xml.datatype.Duration)1 ParserConfigurationException (javax.xml.parsers.ParserConfigurationException)1 Multiplicity (org.apache.sis.internal.jaxb.gco.Multiplicity)1 DefaultAddress (org.apache.sis.metadata.iso.citation.DefaultAddress)1 DefaultCitation (org.apache.sis.metadata.iso.citation.DefaultCitation)1