Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [udig-devel] how to create 2 createTemporaryResource from same resource but filter

Nothing obvious springs to mind.  A couple questions though:

Does the exception occur in the first addFeatures or second? 

Could you also print out the FeatureType that has been created?

Thanks,

Jesse

On Wed, Aug 5, 2009 at 11:20 AM, FP <freepisces@xxxxxxxxx> wrote:
Hi
I need create 2 TemporaryResource to show the same GeoResource but using different filter.
I faild and I found the problem is the same name in tempresource. Then I use FeatureTypeBuilder to setName.

the code is :

IService resources = getResource(monitor);// get all tables
            for (IGeoResource resource : resources.resources(monitor)) {
                if (resource.getIdentifier().
getRef().equalsIgnoreCase("customers")) {
                    FeatureCollection fc1 = null;
                    FeatureCollection fc2 = null;
                    FilterFactory filterFactory = FilterFactoryFinder.createFilterFactory();
                    Filter filter1 = filterFactory.createCompareFilter(CompareFilter.COMPARE_EQUALS);
                  
                    Filter filter2 = filterFactory.createCompareFilter(CompareFilter.COMPARE_EQUALS);
                     
                    ((CompareFilter) filter1).addLeftValue(filterFactory.createAttributeExpression("CUSTOMER_ID"));
                    ((CompareFilter) filter1).addRightValue(filterFactory.createLiteralExpression(Integer.valueOf(scno1)));
                
                    ((CompareFilter) filter2).addLeftValue(filterFactory.createAttributeExpression("CUSTOMER_ID"));
                    ((CompareFilter) filter2).addRightValue(filterFactory.createLiteralExpression(Integer.valueOf(scno2)));
                  
                   
                    fc1 = resource.resolve(FeatureSource.class, monitor).getFeatures(filter1);
                    FeatureTypeBuilder builder = FeatureTypeBuilder.newInstance(fc1.getFeatureType().getTypeName());
                    builder.importType(fc1.getFeatureType());
                    builder.setName( "CUSTOMERS" );
                    IGeoResource geoResource1 = CatalogPlugin.getDefault().getLocalCatalog().createTemporaryResource(fc1.getSchema());
                    FeatureStore featureStore1 = geoResource1.resolve(FeatureStore.class, monitor);
                    featureStore1.addFeatures(fc1);
                    localresources1.add(geoResource1);

                    //ApplicationGIS.addLayersToMap(map1, Collections.singletonList(geoResource1), 0);
                    AddLayersCommand alCommand = new AddLayersCommand(localresources1, 0);
                    map1.executeSyncWithoutUndo(alCommand);
                    OpenProjectElementCommand command1 = new OpenProjectElementCommand(map1);
                    project.sendASync(command1);
                    fc2 = resource.resolve(FeatureSource.class, monitor).getFeatures(filter2);
                   
                    FeatureTypeBuilder builder1 = FeatureTypeBuilder.newInstance("customer");
                    builder1.importType(fc1.getSchema());
                    builder1.setName("customer2");
                   
                    FeatureTypeBuilder builder2=FeatureTypeBuilder.newInstance("CUSTOMERS");
                    builder2.importType(fc2.getFeatureType());
                    builder2.setName( "CUSTOMER" );
                    System.out.println("fc2.size: "+fc2.size());
                    System.out.println(fc2.getFeatureType().getTypeName());
                    IGeoResource geoResource2 = CatalogPlugin.getDefault().getLocalCatalog().createTemporaryResource(builder2.getFeatureType());
                    FeatureStore featureStore2 = geoResource2.resolve(FeatureStore.class, monitor);
                    featureStore2.addFeatures(fc2);
                    localresources2.add(geoResource2);
                    //ApplicationGIS.addLayersToMap(map2, Collections.singletonList(geoResource1), 0);
                    AddLayersCommand blCommand = new AddLayersCommand(localresources2, 0);
                    map2.executeSyncWithoutUndo(blCommand);
                    OpenProjectElementCommand command2 = new OpenProjectElementCommand(map2);
                    project.sendASync(command2);
                    break;
                }
            }


org.geotools.data.DataSourceException: Could not create CUSTOMER out of provided feature: CUSTOMERS.-7182dc8:122e9ce2ccc:-7ffd
    at org.geotools.data.AbstractFeatureStore.addFeatures(AbstractFeatureStore.java:255)
    at com.geosat.addservice.view.CommonComparison.addMapFromOracle(CommonComparison.java:226)
    at com.geosat.addservice.view.CommonComparison.access$18(CommonComparison.java:132)
    at com.geosat.addservice.view.CommonComparison$10.handleEvent(CommonComparison.java:826)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
    at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
    at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at net.refractions.udig.internal.ui.UDIGApplication.start(UDIGApplication.java:93)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1148)
Caused by: IllegalAttribute: null , but got null
    at org.geotools.feature.DefaultFeature.setAttributes(DefaultFeature.java:258)
    at org.geotools.data.AbstractFeatureStore.addFeatures(AbstractFeatureStore.java:253)
    ... 28 more

any idea??

--


_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel



Back to the top