[udig-devel] Troubles using FeatureWriter
Damjan Šavko
damjan.savd at gmail.com
Wed Aug 9 01:33:54 PDT 2006
Hi, Jesse. Seems you were right. After deleting the .fix and .qix files
things started to work again. Could you explain (shortly of course) what are
the .fix and .qix files and how does uDig use them. And another thing, if I
understood you correctly you wanted me to report this bug and I would really
be glad to do that If I only knew how :) Could you explain this to me also.
Thanks.
On 8/8/06, Jesse Eichar <jeichar at refractions.net> wrote:
>
> Try deleting the .fix file and see if that helps. It is possible that the
> fix file has become corrupt and needs to be re-indexed. If that works
> please report a bug with this email as the comments.
> Cheers,
> Jesse
>
> On 8-Aug-06, at 12:28 AM, Damjan Šavko wrote:
>
> Hello, I've been having a lot of troubles trying to write to a shapefile.
> I've done it before but it always worked and now I don't know what I'm doing
> wrong.
> This is my piece of code:
>
> try {
>
> FilterFactory filterFactory =
> FilterFactoryFinder.createFilterFactory ();
> CompareFilter filter = filterFactory.createCompareFilter(
> FilterType.COMPARE_EQUALS);
> filter.addLeftValue(filterFactory.createAttributeExpression
> (...........));
> filter.addRightValue(filterFactory.createLiteralExpression (
> feature.getAttribute(.....................)));
>
> Transaction transaction = new DefaultTransaction();
> FeatureWriter fw = fs.getDataStore().getFeatureWriter(
> fs.getSchema().getTypeName(),filter, transaction);
>
> try {
>
> while(fw.hasNext()) {
>
> Feature changedFeature = fw.next();
>
> changedFeature.setAttribute (...........,
> ..............);
>
> fw.write ();
> }
>
> fw.close();
> transaction.commit();
>
>
> }
> catch (Exception e) {
> transaction.rollback();
> }
> finally {
> fw.close();
> transaction.close();
> }
>
> } catch (IOException ioe) {
> e.printStackTrace();
> }
>
>
> The error I get is:
>
> java.io.IOException: Shp has extra record
> at
> org.geotools.data.shapefile.indexed.IndexedShapefileDataStore$Reader.hasNext
> (IndexedShapefileDataStore.java:1204)
> at org.geotools.data.FIDFeatureReader.hasNext (FIDFeatureReader.java
> :139)
> at org.geotools.data.FilteringFeatureReader.hasNext(
> FilteringFeatureReader.java:118)
> at org.geotools.data.DiffFeatureReader.hasNext(DiffFeatureReader.java
> :115)
> at org.geotools.data.DiffFeatureWriter.hasNext (DiffFeatureWriter.java
> :206)
> at org.geotools.data.InProcessLockingManager$1.hasNext(
> InProcessLockingManager.java:338)
> at org.geotools.data.FilteringFeatureWriter.hasNext(
> FilteringFeatureWriter.java:134)
> at si.triport.udig.modal.Split.test(Split.java
> :997)..............................
>
> The problem seems to be laying in the method hasNext(). At the end of the
> loop when it should return false it just breaks down.
> I tried to change the iterator by using a feature iterator:
>
> FeatureCollection fc = fs.getFeatures(filter);
> FeatureIterator fi = fc.features();
>
> try {
>
> while(fi.hasNext ()) {
>
> Feature f = fi.next();
> Feature changedFeature = fw.next();
> ........................................
> fw.write();
> }
>
> fi.close();
> fw.close();
> transaction.commit(); ....
>
> But the error remained the same except that it was fired from
> transaction.commit() and not hasNext()
>
>
> java.io.IOException : Shp has extra record
> at
> org.geotools.data.shapefile.indexed.IndexedShapefileDataStore$Reader.hasNext
> (IndexedShapefileDataStore.java:1204)
> at
> org.geotools.data.shapefile.indexed.IndexedShapefileDataStore$Writer.close(
> IndexedShapefileDataStore.java:1509)
> at org.geotools.data.TransactionStateDiff.applyDiff(
> TransactionStateDiff.java:251)
> at org.geotools.data.TransactionStateDiff.commit(
> TransactionStateDiff.java:137)
> at org.geotools.data.DefaultTransaction.commit(DefaultTransaction.java
> :176)
> at si.triport.udig.modal.Split.test(Split.java
> :1011)..........................
>
> Can anybody tell me what I'm doing wrong?
>
> Damjan Šavko
>
>
> _______________________________________________
> User-friendly Desktop Internet GIS (uDig)
> http://udig.refractions.net
> http://lists.refractions.net/mailman/listinfo/udig-devel
>
>
> _______________________________________________
> User-friendly Desktop Internet GIS (uDig)
> http://udig.refractions.net
> http://lists.refractions.net/mailman/listinfo/udig-devel
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.refractions.net/pipermail/udig-devel/attachments/20060809/49f02f49/attachment.html
More information about the udig-devel
mailing list