Search in sources :

Example 1 with CreateDataSourceInterface

use of com.sldeditor.datasource.impl.CreateDataSourceInterface in project sldeditor by robward-scisys.

the class DataSourceImplTest method testConnectToExternalDataSource.

/**
 * Test method for {@link com.sldeditor.datasource.impl.DataSourceImpl#connect()}.
 */
@Test
public void testConnectToExternalDataSource() {
    DataSourceImpl ds = new DataSourceImpl();
    DummyExternalSLDFile editorFile = new DummyExternalSLDFile();
    DummyDataSourceUpdate dataSourceUpdateListener = new DummyDataSourceUpdate();
    ds.addListener(dataSourceUpdateListener);
    CreateDataSourceInterface internalDataSource = new DummyCreateDataSource();
    CreateDataSourceInterface externalDataSource = new CreateExternalDataSource();
    CreateDataSourceInterface inlineDataSource = new DummyCreateDataSource();
    ds.setDataSourceCreation(internalDataSource, externalDataSource, inlineDataSource);
    ds.connect(editorFile.getTypeName(), editorFile, null);
    assertEquals(GeometryTypeEnum.POINT, dataSourceUpdateListener.geometryType);
    assertTrue(dataSourceUpdateListener.isConnectedToDataSourceFlag);
    Collection<PropertyDescriptor> fieldList = ds.getPropertyDescriptorList();
    assertTrue(fieldList != null);
    List<String> actualFieldnameList = new ArrayList<String>();
    for (PropertyDescriptor field : fieldList) {
        actualFieldnameList.add(field.getName().getLocalPart());
    }
    // Check fields extracted ok
    List<String> expectedFieldList = editorFile.getExpectedFieldList();
    assertTrue(expectedFieldList.size() == actualFieldnameList.size());
    // Not assuming fields are in the same order
    int count = 0;
    for (String fieldName : actualFieldnameList) {
        if (expectedFieldList.contains(fieldName)) {
            count++;
        }
    }
    assertTrue(expectedFieldList.size() == count);
    // Check for fields of certain types
    assertEquals(1, ds.getAttributes(Integer.class).size());
    assertEquals(1, ds.getAttributes(Long.class).size());
    assertEquals(1, ds.getAttributes(Double.class).size());
    assertEquals(1, ds.getAttributes(String.class).size());
    // Add new field - shouldn't work because connections to external data sources are fixed
    DataSourceAttributeData dataSourceField = new DataSourceAttributeData("bearing", Double.class, null);
    ds.addField(dataSourceField);
    assertTrue(ds.getAttributes(Double.class).size() == 1);
    // Update field
    DataSourceAttributeList attributeData = new DataSourceAttributeList();
    ds.readAttributes(attributeData);
    assertTrue(ds.getPropertyDescriptorList().size() == attributeData.getData().size());
    List<DataSourceAttributeData> attributeDataList = attributeData.getData();
    DataSourceAttributeData data = attributeDataList.remove(2);
    data.setType(Integer.class);
    attributeDataList.add(2, data);
    // Update fields - shouldn't work because connections to external data sources are fixed
    ds.updateFields(attributeData);
    assertTrue(ds.getAttributes(Integer.class).size() == 1);
    FeatureSource<SimpleFeatureType, SimpleFeature> features = ds.getFeatureSource();
    try {
        assertTrue(features.getFeatures().size() > 1);
    } catch (IOException e) {
        e.printStackTrace();
        fail(e.getMessage());
    }
    assertFalse(dataSourceUpdateListener.isConnectedToDataSourceFlag);
}
Also used : DataSourceAttributeData(com.sldeditor.datasource.attribute.DataSourceAttributeData) PropertyDescriptor(org.opengis.feature.type.PropertyDescriptor) DataSourceImpl(com.sldeditor.datasource.impl.DataSourceImpl) CreateDataSourceInterface(com.sldeditor.datasource.impl.CreateDataSourceInterface) ArrayList(java.util.ArrayList) CreateExternalDataSource(com.sldeditor.datasource.impl.CreateExternalDataSource) IOException(java.io.IOException) SimpleFeature(org.opengis.feature.simple.SimpleFeature) DataSourceAttributeList(com.sldeditor.datasource.attribute.DataSourceAttributeList) SimpleFeatureType(org.opengis.feature.simple.SimpleFeatureType) Test(org.junit.jupiter.api.Test)

Example 2 with CreateDataSourceInterface

use of com.sldeditor.datasource.impl.CreateDataSourceInterface in project sldeditor by robward-scisys.

the class DataSourceImplTest method testConnectToInternalDataSource.

/**
 * Test method for {@link com.sldeditor.datasource.impl.DataSourceImpl#connect()}. Test method
 * for {@link
 * com.sldeditor.datasource.impl.DataSourceImpl#addListener(com.sldeditor.datasource.DataSourceUpdatedInterface)}.
 */
@Test
public void testConnectToInternalDataSource() {
    DataSourceImpl ds = new DataSourceImpl();
    DummyInternalSLDFile editorFile = new DummyInternalSLDFile();
    DummyDataSourceUpdate dataSourceUpdateListener = new DummyDataSourceUpdate();
    ds.addListener(dataSourceUpdateListener);
    ds.addListener(dataSourceUpdateListener);
    CreateDataSourceInterface internalDataSource = new CreateInternalDataSource();
    CreateDataSourceInterface externalDataSource = new DummyCreateDataSource();
    CreateDataSourceInterface inlineDataSource = new DummyCreateDataSource();
    ds.setDataSourceCreation(internalDataSource, externalDataSource, inlineDataSource);
    ds.connect("typeName", editorFile, null);
    assertEquals(GeometryTypeEnum.POINT, dataSourceUpdateListener.geometryType);
    assertFalse(dataSourceUpdateListener.isConnectedToDataSourceFlag);
    Collection<PropertyDescriptor> fieldList = ds.getPropertyDescriptorList();
    assertTrue(fieldList != null);
    List<String> actualFieldnameList = new ArrayList<String>();
    for (PropertyDescriptor field : fieldList) {
        if (!(field instanceof GeometryDescriptorImpl)) {
            actualFieldnameList.add(field.getName().getLocalPart());
        }
    }
    // Check fields extracted ok
    List<String> expectedFieldList = editorFile.getExpectedFieldList();
    assertTrue(expectedFieldList.size() == actualFieldnameList.size());
    // Not assuming fields are in the same order
    int count = 0;
    for (String fieldName : actualFieldnameList) {
        if (expectedFieldList.contains(fieldName)) {
            count++;
        }
    }
    assertTrue(expectedFieldList.size() == count);
    // Check for fields of certain types
    assertFalse(ds.getAttributes(Integer.class).isEmpty());
    assertFalse(ds.getAttributes(Double.class).isEmpty());
    assertEquals(2, ds.getAttributes(String.class).size());
    // Add new field
    DataSourceAttributeData dataSourceField = new DataSourceAttributeData("bearing", Double.class, null);
    ds.addField(dataSourceField);
    assertTrue(ds.getAttributes(Double.class).size() == 2);
    // Update field
    DataSourceAttributeList attributeData = new DataSourceAttributeList();
    ds.readAttributes(null);
    ds.readAttributes(attributeData);
    assertTrue(ds.getPropertyDescriptorList().size() == attributeData.getData().size());
    List<DataSourceAttributeData> attributeDataList = attributeData.getData();
    DataSourceAttributeData data = attributeDataList.remove(2);
    data.setType(Integer.class);
    attributeDataList.add(2, data);
    ds.updateFields(null);
    ds.updateFields(attributeData);
    List<String> actualAttributes = ds.getAttributes(Integer.class);
    assertTrue(actualAttributes.size() == 2);
    FeatureSource<SimpleFeatureType, SimpleFeature> features = ds.getFeatureSource();
    try {
        assertEquals(1, features.getFeatures().size());
    } catch (IOException e) {
        e.printStackTrace();
        fail(e.getMessage());
    }
    assertFalse(dataSourceUpdateListener.isConnectedToDataSourceFlag);
    ds.removeListener(dataSourceUpdateListener);
    assertFalse(dataSourceUpdateListener.isConnectedToDataSourceFlag);
}
Also used : GeometryDescriptorImpl(org.geotools.feature.type.GeometryDescriptorImpl) DataSourceAttributeData(com.sldeditor.datasource.attribute.DataSourceAttributeData) PropertyDescriptor(org.opengis.feature.type.PropertyDescriptor) DataSourceImpl(com.sldeditor.datasource.impl.DataSourceImpl) CreateDataSourceInterface(com.sldeditor.datasource.impl.CreateDataSourceInterface) ArrayList(java.util.ArrayList) IOException(java.io.IOException) SimpleFeature(org.opengis.feature.simple.SimpleFeature) DataSourceAttributeList(com.sldeditor.datasource.attribute.DataSourceAttributeList) CreateInternalDataSource(com.sldeditor.datasource.impl.CreateInternalDataSource) SimpleFeatureType(org.opengis.feature.simple.SimpleFeatureType) Test(org.junit.jupiter.api.Test)

Example 3 with CreateDataSourceInterface

use of com.sldeditor.datasource.impl.CreateDataSourceInterface in project sldeditor by robward-scisys.

the class DataSourceImplTest method testConnectToInlineDataSource.

/**
 * Test method for {@link com.sldeditor.datasource.impl.DataSourceImpl#connect()}.
 */
@Test
public void testConnectToInlineDataSource() {
    DataSourceImpl ds = new DataSourceImpl();
    DummyInlineSLDFile editorFile = new DummyInlineSLDFile();
    DummyDataSourceUpdate dataSourceUpdateListener = new DummyDataSourceUpdate();
    ds.addListener(dataSourceUpdateListener);
    CreateDataSourceInterface internalDataSource = new DummyCreateDataSource();
    CreateDataSourceInterface externalDataSource = new DummyCreateDataSource();
    CreateDataSourceInterface inlineDataSource = new CreateInlineDataSource();
    ds.setDataSourceCreation(internalDataSource, externalDataSource, inlineDataSource);
    ds.connect("typeName", editorFile, null);
    assertTrue(dataSourceUpdateListener.hasBeenCalled());
    assertEquals(GeometryTypeEnum.UNKNOWN, dataSourceUpdateListener.geometryType);
    assertFalse(dataSourceUpdateListener.isConnectedToDataSourceFlag);
    Collection<PropertyDescriptor> fieldList = ds.getPropertyDescriptorList();
    assertNull(fieldList);
    FeatureSource<SimpleFeatureType, SimpleFeature> exampleLayer = ds.getExampleFeatureSource();
    assertNull(exampleLayer);
    Map<UserLayer, FeatureSource<SimpleFeatureType, SimpleFeature>> userLayerMap = ds.getUserLayerFeatureSource();
    assertEquals(1, userLayerMap.size());
    assertFalse(dataSourceUpdateListener.hasBeenCalled());
    ds.updateUserLayers();
    assertTrue(dataSourceUpdateListener.hasBeenCalled());
    DataSourcePropertiesInterface dsi = ds.getDataConnectorProperties();
    assertNotNull(dsi);
}
Also used : FeatureSource(org.geotools.data.FeatureSource) PropertyDescriptor(org.opengis.feature.type.PropertyDescriptor) DataSourceImpl(com.sldeditor.datasource.impl.DataSourceImpl) CreateDataSourceInterface(com.sldeditor.datasource.impl.CreateDataSourceInterface) DataSourcePropertiesInterface(com.sldeditor.common.DataSourcePropertiesInterface) SimpleFeature(org.opengis.feature.simple.SimpleFeature) SimpleFeatureType(org.opengis.feature.simple.SimpleFeatureType) CreateInlineDataSource(com.sldeditor.datasource.impl.CreateInlineDataSource) UserLayer(org.geotools.styling.UserLayer) Test(org.junit.jupiter.api.Test)

Aggregations

CreateDataSourceInterface (com.sldeditor.datasource.impl.CreateDataSourceInterface)3 DataSourceImpl (com.sldeditor.datasource.impl.DataSourceImpl)3 Test (org.junit.jupiter.api.Test)3 SimpleFeature (org.opengis.feature.simple.SimpleFeature)3 SimpleFeatureType (org.opengis.feature.simple.SimpleFeatureType)3 PropertyDescriptor (org.opengis.feature.type.PropertyDescriptor)3 DataSourceAttributeData (com.sldeditor.datasource.attribute.DataSourceAttributeData)2 DataSourceAttributeList (com.sldeditor.datasource.attribute.DataSourceAttributeList)2 IOException (java.io.IOException)2 ArrayList (java.util.ArrayList)2 DataSourcePropertiesInterface (com.sldeditor.common.DataSourcePropertiesInterface)1 CreateExternalDataSource (com.sldeditor.datasource.impl.CreateExternalDataSource)1 CreateInlineDataSource (com.sldeditor.datasource.impl.CreateInlineDataSource)1 CreateInternalDataSource (com.sldeditor.datasource.impl.CreateInternalDataSource)1 FeatureSource (org.geotools.data.FeatureSource)1 GeometryDescriptorImpl (org.geotools.feature.type.GeometryDescriptorImpl)1 UserLayer (org.geotools.styling.UserLayer)1