Search in sources :

Example 1 with Instance

use of eu.esdihumboldt.hale.common.instance.model.Instance in project hale by halestudio.

the class XLSInstanceIOTest method test.

/**
 * Exports the instances created by
 * {@link XLSInstanceWriterTestExamples#createInstanceCollection} into a
 * temporary XLS file by executing {@link XLSInstanceWriter#execute}.
 * Afterwards, the schema is read by {@link XLSSchemaReader} and the
 * instances are loaded by {@link XLSInstanceReader}. Each of the imported
 * instances are compared with the original instances. In addtion, a
 * different set of instances is compared with the imported instances.
 */
@Test
public void test() {
    // set instances to xls instance writer
    XLSInstanceWriter writer = new XLSInstanceWriter();
    InstanceCollection instances = XLSInstanceWriterTestExamples.createInstanceCollection();
    IContentType contentType = HalePlatform.getContentTypeManager().getContentType("eu.esdihumboldt.hale.io.xls.xls");
    writer.setParameter(InstanceTableIOConstants.SOLVE_NESTED_PROPERTIES, Value.of(false));
    File tempDir = Files.createTempDir();
    File tempFile = new File(tempDir, "data.xls");
    writer.setInstances(instances);
    try {
        // write instances to a temporary XLS file
        writer.setTarget(new FileIOSupplier(tempFile));
        writer.setContentType(contentType);
        IOReport report = writer.execute(null);
        assertTrue(report.isSuccess());
    } catch (IOProviderConfigurationException | IOException e) {
        fail("Execution of xls instance writer failed.");
    }
    // read the schema from the temporary XLS file
    XLSSchemaReader schemaReader = new XLSSchemaReader();
    schemaReader.setContentType(contentType);
    schemaReader.setSource(new FileIOSupplier(tempFile));
    schemaReader.setParameter(CommonSchemaConstants.PARAM_TYPENAME, Value.of("ItemType"));
    schemaReader.setParameter(InstanceTableIOConstants.SOLVE_NESTED_PROPERTIES, Value.of(false));
    schemaReader.setParameter(InstanceTableIOConstants.SHEET_INDEX, Value.of(0));
    try {
        IOReport report = schemaReader.execute(null);
        assertTrue(report.isSuccess());
    } catch (IOProviderConfigurationException | IOException e1) {
        fail("Execution of schema reader failed.");
    }
    Schema schema = schemaReader.getSchema();
    // read the instances form the temporary XLS file
    XLSInstanceReader reader = new XLSInstanceReader();
    reader.setSourceSchema(schema);
    reader.setParameter(CommonSchemaConstants.PARAM_SKIP_FIRST_LINE, Value.of(true));
    reader.setParameter(CommonSchemaConstants.PARAM_TYPENAME, Value.of("ItemType"));
    reader.setParameter(InstanceTableIOConstants.SOLVE_NESTED_PROPERTIES, Value.of(false));
    // read sheet with index 0 since there is only one sheet
    reader.setParameter(InstanceTableIOConstants.SHEET_INDEX, Value.of(0));
    reader.setContentType(contentType);
    reader.setSource(new FileIOSupplier(tempFile));
    try {
        IOReport report = reader.execute(null);
        assertTrue(report.isSuccess());
    } catch (IOProviderConfigurationException | IOException e) {
        fail("Execution of xls instance reader failed.");
    }
    // compare size of instance collection
    InstanceCollection inst = reader.getInstances();
    assertEquals(4, inst.size());
    // check if instance collection contains current instance
    Iterator<Instance> instanceIt = inst.iterator();
    while (instanceIt.hasNext()) {
        Instance instance = instanceIt.next();
        assertTrue(contains(instances.iterator(), instance));
    }
    // other instance should be contained in the imported instances
    InstanceCollection falseInstances = XLSInstanceWriterTestExamples.createFalseTestInstanceCollection();
    instanceIt = inst.iterator();
    while (instanceIt.hasNext()) {
        Instance instance = instanceIt.next();
        assertFalse(contains(falseInstances.iterator(), instance));
    }
    // delete file and temporary directory
    tempFile.delete();
    tempDir.delete();
}
Also used : XLSInstanceWriter(eu.esdihumboldt.hale.io.xls.writer.XLSInstanceWriter) Instance(eu.esdihumboldt.hale.common.instance.model.Instance) XLSSchemaReader(eu.esdihumboldt.hale.io.xls.reader.XLSSchemaReader) InstanceCollection(eu.esdihumboldt.hale.common.instance.model.InstanceCollection) Schema(eu.esdihumboldt.hale.common.schema.model.Schema) IOReport(eu.esdihumboldt.hale.common.core.io.report.IOReport) XLSInstanceReader(eu.esdihumboldt.hale.io.xls.reader.XLSInstanceReader) IContentType(org.eclipse.core.runtime.content.IContentType) IOException(java.io.IOException) IOProviderConfigurationException(eu.esdihumboldt.hale.common.core.io.IOProviderConfigurationException) FileIOSupplier(eu.esdihumboldt.hale.common.core.io.supplier.FileIOSupplier) File(java.io.File) Test(org.junit.Test)

Example 2 with Instance

use of eu.esdihumboldt.hale.common.instance.model.Instance in project hale by halestudio.

the class XLSReaderTest method testPropertyType.

/**
 * Test - check declaration of properties' datatype.
 *
 * @throws Exception , if an error occurs
 */
@Test
public void testPropertyType() throws Exception {
    Schema schema = readXLSSchema("/data/simpleOneSheet.xls", 0, typeName, "java.lang.Integer,java.lang.String,java.lang.String");
    // Test property datatype
    TypeDefinition schemaType = schema.getType(QName.valueOf(typeName));
    Binding binding = schemaType.getChildren().iterator().next().asProperty().getPropertyType().getConstraint(Binding.class);
    assertTrue("The type is not an Integer.", binding.getBinding().equals(Integer.class));
    // ### Instance
    InstanceCollection instances = readXLSInstances("/data/simpleOneSheet.xls", 0, typeName, true, schema);
    assertTrue(instances.hasSize());
    assertEquals(numberOfInstances, instances.size());
    // Check the values of the first (type) instance
    Instance instance = instances.iterator().next();
    Object[] value = instance.getProperty(QName.valueOf(properties[0]));
    assertEquals(Integer.valueOf(dataFirstColumn[0]), value[0]);
    assertTrue(value[0] instanceof Integer);
}
Also used : Binding(eu.esdihumboldt.hale.common.schema.model.constraint.type.Binding) Instance(eu.esdihumboldt.hale.common.instance.model.Instance) Schema(eu.esdihumboldt.hale.common.schema.model.Schema) InstanceCollection(eu.esdihumboldt.hale.common.instance.model.InstanceCollection) TypeDefinition(eu.esdihumboldt.hale.common.schema.model.TypeDefinition) Test(org.junit.Test)

Example 3 with Instance

use of eu.esdihumboldt.hale.common.instance.model.Instance in project hale by halestudio.

the class XLSReaderTest method testReadBlankCells.

/**
 * Test - read xls file and data. Check handled blank cells.
 *
 * @throws Exception , if an error occurs
 */
@Test
public void testReadBlankCells() throws Exception {
    // read schema ###
    Schema schema = readXLSSchema("/data/blankEntries.xls", 0, typeName, "java.lang.String,java.lang.String,java.lang.String");
    // read instances ###
    InstanceCollection instances = readXLSInstances("/data/blankEntries.xls", 0, typeName, true, schema);
    // Number of instances should be the same
    assertTrue(instances.hasSize());
    assertEquals(numberOfInstances, instances.size());
    // Check blank property of first type
    Instance instance = instances.iterator().next();
    Object[] value;
    value = instance.getProperty(QName.valueOf(properties[1]));
    // There should be no value, therefore the length of the value-array has
    // to be
    // 0
    assertEquals(0, value.length);
    // check other values to be correct
    value = instance.getProperty(QName.valueOf(properties[0]));
    assertEquals(dataFirstColumn[0], value[0]);
    value = instance.getProperty(QName.valueOf(properties[2]));
    assertEquals(dataFirstColumn[2], value[0]);
}
Also used : Instance(eu.esdihumboldt.hale.common.instance.model.Instance) Schema(eu.esdihumboldt.hale.common.schema.model.Schema) InstanceCollection(eu.esdihumboldt.hale.common.instance.model.InstanceCollection) Test(org.junit.Test)

Example 4 with Instance

use of eu.esdihumboldt.hale.common.instance.model.Instance in project hale by halestudio.

the class XLSReaderTest method testReadSameFileDiffSheet.

/**
 * Test - read a sample xls schema and data from same file and different
 * sheets. Check skip first
 *
 * @throws Exception , if an error occurs
 */
@Test
public void testReadSameFileDiffSheet() throws Exception {
    String sourceLocation = "/data/simpleTwoSheet.xls";
    Schema schema = readXLSSchema(sourceLocation, 0, typeName, "java.lang.String,java.lang.String,java.lang.String");
    TypeDefinition schemaType = schema.getType(QName.valueOf(typeName));
    // Check every property for their existence
    for (String propertyName : properties) {
        assertEquals(propertyName, schemaType.getChild(QName.valueOf(propertyName)).getDisplayName());
    }
    // Instance Read ###
    InstanceCollection instances = readXLSInstances(sourceLocation, 1, typeName, false, schema);
    assertTrue(instances.hasSize());
    assertEquals(numberOfInstances, instances.size());
    // get Type to check property definition (schema and instance
    // combination)
    TypeDefinition type = instances.iterator().next().getDefinition();
    ChildDefinition<?> child = null;
    assertEquals(typeName, type.getDisplayName());
    for (int i = 0; i < properties.length; i++) {
        child = type.getChild(QName.valueOf(properties[i]));
        assertEquals(properties[i], child.getDisplayName());
    }
    // Check the values of the first (type) instance
    Instance instance = instances.iterator().next();
    Object[] value;
    for (int i = 0; i < dataFirstColumn.length; i++) {
        value = instance.getProperty(QName.valueOf(properties[i]));
        assertEquals(dataFirstColumn[i], value[0]);
        assertTrue(value[0] instanceof String);
    }
}
Also used : Instance(eu.esdihumboldt.hale.common.instance.model.Instance) Schema(eu.esdihumboldt.hale.common.schema.model.Schema) InstanceCollection(eu.esdihumboldt.hale.common.instance.model.InstanceCollection) TypeDefinition(eu.esdihumboldt.hale.common.schema.model.TypeDefinition) Test(org.junit.Test)

Example 5 with Instance

use of eu.esdihumboldt.hale.common.instance.model.Instance in project hale by halestudio.

the class XLSReaderTest method testReadSimple.

/**
 * Test - read a sample xls schema and data from same file and sheet (simple
 * io test). Check the type, check the properties, check the values of the
 * properties, check the datatype of the properties
 *
 * @throws Exception , if an error occurs
 */
@Test
public void testReadSimple() throws Exception {
    // read Schema ###
    Schema schema = readXLSSchema("/data/simpleOneSheet.xls", 0, typeName, "java.lang.String,java.lang.String,java.lang.String");
    // Test properties and their datatype
    TypeDefinition schemaType = schema.getType(QName.valueOf(typeName));
    Binding binding;
    for (ChildDefinition<?> child : schemaType.getChildren()) {
        binding = child.asProperty().getPropertyType().getConstraint(Binding.class);
        assertTrue(binding.getBinding().equals(String.class));
    }
    // Check every property for their existence
    for (String propertyName : properties) {
        assertEquals(propertyName, schemaType.getChild(QName.valueOf(propertyName)).getDisplayName());
    }
    // read Instances ###
    InstanceCollection instances = readXLSInstances("/data/simpleOneSheet.xls", 0, typeName, true, schema);
    assertTrue(instances.hasSize());
    assertEquals(numberOfInstances, instances.size());
    // get Type to check property definition (schema and instance
    // combination)
    TypeDefinition type = instances.iterator().next().getDefinition();
    ChildDefinition<?> child = null;
    assertEquals(typeName, type.getDisplayName());
    for (int i = 0; i < properties.length; i++) {
        child = type.getChild(QName.valueOf(properties[i]));
        assertEquals(properties[i], child.getDisplayName());
    }
    // Check the values of the first (type) instance
    Instance instance = instances.iterator().next();
    Object[] value;
    for (int i = 0; i < dataFirstColumn.length; i++) {
        value = instance.getProperty(QName.valueOf(properties[i]));
        assertEquals(dataFirstColumn[i], value[0]);
        assertTrue(value[0] instanceof String);
    }
}
Also used : Binding(eu.esdihumboldt.hale.common.schema.model.constraint.type.Binding) Instance(eu.esdihumboldt.hale.common.instance.model.Instance) Schema(eu.esdihumboldt.hale.common.schema.model.Schema) InstanceCollection(eu.esdihumboldt.hale.common.instance.model.InstanceCollection) TypeDefinition(eu.esdihumboldt.hale.common.schema.model.TypeDefinition) Test(org.junit.Test)

Aggregations

Instance (eu.esdihumboldt.hale.common.instance.model.Instance)203 InstanceCollection (eu.esdihumboldt.hale.common.instance.model.InstanceCollection)131 Test (org.junit.Test)122 AbstractHandlerTest (eu.esdihumboldt.hale.io.gml.geometry.handler.internal.AbstractHandlerTest)97 QName (javax.xml.namespace.QName)29 ArrayList (java.util.ArrayList)26 MutableInstance (eu.esdihumboldt.hale.common.instance.model.MutableInstance)25 DefaultInstance (eu.esdihumboldt.hale.common.instance.model.impl.DefaultInstance)23 TypeDefinition (eu.esdihumboldt.hale.common.schema.model.TypeDefinition)22 Group (eu.esdihumboldt.hale.common.instance.model.Group)15 Schema (eu.esdihumboldt.hale.common.schema.model.Schema)13 Coordinate (com.vividsolutions.jts.geom.Coordinate)12 Geometry (com.vividsolutions.jts.geom.Geometry)12 FamilyInstance (eu.esdihumboldt.hale.common.instance.model.FamilyInstance)10 Polygon (com.vividsolutions.jts.geom.Polygon)9 MultiPolygon (com.vividsolutions.jts.geom.MultiPolygon)8 TransformationException (eu.esdihumboldt.hale.common.align.transformation.function.TransformationException)8 GeometryProperty (eu.esdihumboldt.hale.common.schema.geometry.GeometryProperty)8 HashSet (java.util.HashSet)8 Point (com.vividsolutions.jts.geom.Point)7