Hi Benjamin,
Are you running Groovy from within OJ as we do BeanScript and Jython, or
are you importing the OJ classes to create Groovy programs?
Larry
On Wed, Jun 2, 2010 at 9:43 AM, Benjamin Gudehus
<hasteb...@googlemail.com>wrote:
> Hi!
>
> I wrote a FeatureCollectionBuilder and a FeatureCollectionSchemaEditor for
> that in Groovy using the Builder design pattern (
> http://groovy.codehaus.org/Builders).
>
> Look at this example code (from the unit tests). You can add and remove
> Attributes to the FeatureSchema.
>
> <pre>
> private featureCollection
>
> def setup() {
> this.featureCollection = new FeatureCollectionBuilder().build {
> schema {
> attribute("id", AttributeType.INTEGER)
> attribute("name", AttributeType.STRING)
> }
> features {
> feature(id: 1, name: "foo")
> feature(id: 2, name: "bar")
> feature(id: 3, name: "baz")
> feature(id: 4, name: "quux")
> }
> }
> }
>
> def "Add an attribute to the FeatureSchema"() {
> when:
> def collectionEditor = new
> FeatureCollectionSchemaEditor(this.featureCollection)
> collectionEditor.modifySchema {
> addSchemaAttribute("street", AttributeType.STRING)
> }
>
> then:
> def newFeatureSchema =
> collectionEditor.getFeatureCollection().getFeatureSchema()
> collectionEditor.getAttributeNames(newFeatureSchema) == ["id", "name",
> "street"]
> }
> </pre>
>
> If somebody wants to use it, I can upload the sourcecode (but it depends on
> the groovy jar).
>
> 2010/6/2 Larry Becker <becker.la...@gmail.com>
>
> For tips on how to do this see:
>> http://sourceforge.net/apps/mediawiki/jump-pilot/index.php?title=Extending_a_FeatureCollection_by_Adding_new_Attributes
>>
>>
>> On Wed, Jun 2, 2010 at 9:17 AM, Larry Becker <becker.la...@gmail.com>wrote:
>>
>>> Hi Caroline,
>>>
>>> You seem to be making progress on your project. Your current problem
>>> is that when you alter a schema it only affects new features. You need to
>>> replace the old schema in each feature with the new one before copying
>>> attributes.
>>>
>>> regards,
>>> Larry
>>>
>>> 2010/6/2 Caroline Julliê Freitas Ribeiro <krolj...@gmail.com>
>>>
>>>> I tried to put a new attribute to a old Feature, I altered the Schema
>>>> but looks like the size of the array whete stay the data of the Feature is
>>>> not actualized.
>>>>
>>>> I got the following Stack trace:
>>>>
>>>> java.lang.ArrayIndexOutOfBoundsException: 3
>>>> at
>>>> com.vividsolutions.jump.feature.BasicFeature.getAttribute(BasicFeature.java:82)
>>>> at
>>>> com.vividsolutions.jump.workbench.ui.LayerTableModel$4.getValue(LayerTableModel.java:170)
>>>> at
>>>> com.vividsolutions.jump.workbench.ui.LayerTableModel$MyColumn.getValueAt(LayerTableModel.java:75)
>>>> at
>>>> com.vividsolutions.jump.workbench.ui.ColumnBasedTableModel.getValueAt(ColumnBasedTableModel.java:141)
>>>> at
>>>> com.vividsolutions.jump.workbench.ui.GUIUtil.chooseGoodColumnWidths(GUIUtil.java:408)
>>>> at
>>>> com.vividsolutions.jump.workbench.ui.AttributeTablePanel.initColumnWidths(AttributeTablePanel.java:415)
>>>> at
>>>> com.vividsolutions.jump.workbench.ui.AttributeTablePanel.<init>(AttributeTablePanel.java:307)
>>>> at
>>>> com.vividsolutions.jump.workbench.ui.AttributePanel.addTablePanel(AttributePanel.java:154)
>>>> at
>>>> com.vividsolutions.jump.workbench.ui.AttributePanel.layerAdded(AttributePanel.java:136)
>>>> at
>>>> com.vividsolutions.jump.workbench.ui.AttributeTab$5.layerAdded(AttributeTab.java:143)
>>>> at
>>>> com.vividsolutions.jump.workbench.ui.InfoModel.add(InfoModel.java:88)
>>>> at
>>>> com.vividsolutions.jump.workbench.ui.cursortool.FeatureInfoTool.gestureFinished(FeatureInfoTool.java:81)
>>>> at
>>>> com.vividsolutions.jump.workbench.ui.cursortool.AbstractCursorTool.fireGestureFinished(AbstractCursorTool.java:446)
>>>> at
>>>> com.vividsolutions.jump.workbench.ui.cursortool.SpecifyFeaturesTool.mouseClicked(SpecifyFeaturesTool.java:95)
>>>> at
>>>> com.vividsolutions.jump.workbench.ui.cursortool.LeftClickFilter.mouseClicked(LeftClickFilter.java:81)
>>>> at
>>>> com.vividsolutions.jump.workbench.ui.cursortool.DelegatingTool.mouseClicked(DelegatingTool.java:97)
>>>> at
>>>> java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
>>>> at java.awt.Component.processMouseEvent(Component.java:6266)
>>>> at
>>>> javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
>>>> at java.awt.Component.processEvent(Component.java:6028)
>>>> at java.awt.Container.processEvent(Container.java:2041)
>>>> at java.awt.Component.dispatchEventImpl(Component.java:4630)
>>>> at java.awt.Container.dispatchEventImpl(Container.java:2099)
>>>> at java.awt.Component.dispatchEvent(Component.java:4460)
>>>> at
>>>> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
>>>> at
>>>> java.awt.LightweightDispatcher.processMouseEvent(Container.java:4247)
>>>> at
>>>> java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
>>>> at java.awt.Container.dispatchEventImpl(Container.java:2085)
>>>> at java.awt.Window.dispatchEventImpl(Window.java:2475)
>>>> at java.awt.Component.dispatchEvent(Component.java:4460)
>>>> at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
>>>> at
>>>> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
>>>> at
>>>> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
>>>> at
>>>> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
>>>> at
>>>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
>>>> at
>>>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
>>>> at
>>>> java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
>>>>
>>>> This is the code where I got the problem:
>>>>
>>>> Layer l = (Layer)cboLayers.getSelectedItem();
>>>> FeatureCollectionWrapper col = l.getFeatureCollectionWrapper();
>>>> FeatureSchema schema = col.getFeatureSchema();
>>>> instalEsquema(schema,rs);
>>>> List lista =col.getFeatures();
>>>> while (rs.next()){
>>>> for(Object o: lista){
>>>> Feature f = (Feature) o;
>>>> Feature fNew;
>>>> String att =
>>>> f.getAttribute(cboAtributos.getSelectedItem().toString()).toString();
>>>> if (att.equals(rs.getString(txtCampo.getText()))){
>>>> for(int i
>>>> =nroAtributosAntes;i<schema.getAttributeCount();i++){
>>>> f.setAttribute(i,
>>>> rs.getString(schema.getAttributeName(i))); //Here is the problem
>>>> }
>>>> }
>>>> }
>>>> }
>>>>
>>>> private void instalEsquema(FeatureSchema schema, ResultSet rs)
>>>> throws SQLException {
>>>> //Here everything works fine....
>>>> nroAtributosAntes = schema.getAttributeCount();
>>>> ResultSetMetaData meta = rs.getMetaData();
>>>> for(int i =1;i<=meta.getColumnCount();i++){
>>>> schema.addAttribute(meta.getColumnLabel(i),
>>>> AttributeType.STRING);
>>>> }
>>>> }
>>>>
>>>>
>>>> Thanks
>>>>
>>>> --
>>>> Caroline Julliê de Freitas Ribeiro
>>>> Graduando em Análise e Desenvolvimento de Sistemas
>>>>
>>>> Instituto Federal Minas Gerais - IFMG
>>>> Campus Bambuí
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>>
>>>>
>>>> _______________________________________________
>>>> Jump-pilot-devel mailing list
>>>> Jump-pilot-devel@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>>>
>>>>
>>>
>>
>>
>> ------------------------------------------------------------------------------
>>
>>
>> _______________________________________________
>> Jump-pilot-devel mailing list
>> Jump-pilot-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>
>>
>
>
> ------------------------------------------------------------------------------
>
>
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
>
------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel