Revision 588

View differences:

org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/dataObjects/FlyrVectIVectorLayer.java
26 26
import java.awt.geom.Rectangle2D;
27 27
import java.io.File;
28 28
import java.sql.Types;
29
import java.util.ArrayList;
29 30
import java.util.Iterator;
31
import java.util.List;
30 32

  
31 33
import org.cresques.cts.IProjection;
32 34
import org.gvsig.fmap.dal.DALLocator;
......
54 56
import org.gvsig.fmap.geom.type.GeometryType;
55 57
import org.gvsig.fmap.geom.type.GeometryTypeNotSupportedException;
56 58
import org.gvsig.fmap.geom.type.GeometryTypeNotValidException;
59
import org.gvsig.fmap.mapcontext.MapContextLocator;
57 60
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
58
import org.gvsig.fmap.mapcontext.layers.LayerFactory;
59 61
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
60 62
import org.gvsig.tools.ToolsLocator;
61 63
import org.gvsig.tools.dataTypes.DataTypesManager;
......
84 86
    private IOutputChannel m_Channel;
85 87
    private String fileName = null;
86 88

  
89
    private List<String> names = new ArrayList<String>();
90
	private List<Class<?>> types = new ArrayList<Class<?>>();
91

  
92

  
93

  
87 94
    // private Object inputParameters = null;
88 95

  
89 96
    public FlyrVectIVectorLayer() {
......
115 122
                featureStore =
116 123
                    (FeatureStore) DATA_MANAGER.openStore(
117 124
                        newParams.getDataStoreName(), newParams);
125
                initializeNamesAndTypes();
118 126
                featureStore.edit(FeatureStore.MODE_APPEND);
119 127
            }
120 128

  
......
135 143
                    crs, fieldSize);
136 144
            }
137 145

  
138
            /*
139
             * NewFeatureStoreParameters param =
140
             * (NewFeatureStoreParameters)inputParams;
141
             * featureType = param.getDefaultFeatureType();
142
             * loadFeatureType(sFields, types, iShapeType, crs, featureType,
143
             * fieldSize);
144
             *
145
             * param.setDefaultFeatureType(featureType);
146
             *
147
             * DataManager manager = DALLocator.getDataManager();
148
             * featureStore = (FeatureStore) manager.createStore(param);
149
             * featureStore.edit(FeatureStore.MODE_APPEND);
150
             */
151

  
152 146
        } catch (Exception e) {
153 147
            Sextante.addErrorToLog(e);
154 148
        }
......
171 165
            final FilesystemServerExplorer explorer =
172 166
                (FilesystemServerExplorer) DATA_MANAGER.openServerExplorer(
173 167
                    FilesystemServerExplorer.NAME, explorerParams);
168
            File file = new File(sFilename);
174 169
            final NewFeatureStoreParameters newParams =
175
                (NewFeatureStoreParameters) explorer.getAddParameters(new File(
176
                    sFilename));
170
                (NewFeatureStoreParameters) explorer.getAddParameters(file);
177 171

  
172

  
178 173
            EditableFeatureType editableFeatureType =
179 174
                newParams.getDefaultFeatureType();
180 175
            featureType = editableFeatureType;
......
185 180
            newParams.setDynValue("crs", m_Projection);
186 181

  
187 182
            explorer.add(newParams.getDataStoreName(), newParams, true);
188
            featureStore =
189
                (FeatureStore) DATA_MANAGER.openStore(
190
                    newParams.getDataStoreName(), newParams);
183

  
184
            DataStoreParameters params = DATA_MANAGER.createStoreParameters(newParams.getDataStoreName());
185
            params.setDynValue("shpfile", sFilename);
186
            params.setDynValue("crs", m_Projection);
187

  
188
            featureStore = (FeatureStore) DATA_MANAGER.openStore(params.getDataStoreName(), params);
191 189
            featureStore.edit(FeatureStore.MODE_APPEND);
192 190
            featureType = featureStore.getDefaultFeatureType();
191
            initializeNamesAndTypes();
193 192

  
194 193
        } catch (final Exception e) {
195 194
            Sextante.addErrorToLog(e);
......
206 205
            	// No se hace nada porque el resultado de los geoprocesos deben dejar una ?nica columna de geometr?a
207 206
            	// que a?adimos al final
208 207
            } else {
209
                featureType.add(fields[i], iTypes[i]).setSize(fieldSize[i])
208
                featureType.add(fields[i], iTypes[i])
209
                	.setAllowNull(true)
210
                	.setSize(fieldSize[i])
210 211
                    .setPrecision(PRECISION);
211 212
            }
212 213
        }
......
254 255
        try {
255 256
            featureStore = layer.getFeatureStore();
256 257
            featureType = featureStore.getDefaultFeatureType();
258
            initializeNamesAndTypes();
257 259
            m_Projection = layer.getProjection();
258 260
        } catch (final Exception e) {
259 261
            Sextante.addErrorToLog(e);
......
261 263

  
262 264
    }
263 265

  
264
    @SuppressWarnings("deprecation")
265 266
    public void open() {
266 267
        if (m_Layer == null) {
267 268
            try {
268
                m_Layer =
269
                    (FLyrVect) LayerFactory.getInstance().createLayer(
269

  
270
            	m_Layer = (FLyrVect) MapContextLocator.getMapContextManager().createLayer(
270 271
                        getFilename(), featureStore);
271 272
            } catch (final LoadLayerException e) {
272 273
                Sextante.addErrorToLog(e);
......
336 337
                    features.next();
337 338
                if (!featureAttributeDescriptor.getName().equals(
338 339
                    featureType.getDefaultGeometryAttributeName())) {
339
                    ef.set(featureAttributeDescriptor.getName(), values[i]);
340
               		ef.set(featureAttributeDescriptor.getName(), values[i]);
340 341
                }
341 342
                i++;
342 343
            }
......
364 365
    }
365 366

  
366 367
    public Class<?> getFieldType(final int i) {
367
        return featureStore == null ? null : featureType
368
            .getAttributeDescriptor(i).getDataType().getDefaultClass();
368
    	return types.get(i);
369 369
    }
370 370

  
371 371
    public int getFieldCount() {
372 372
        if (featureStore != null) {
373
            return featureType.size();
373
            return names.size();
374 374
        }
375 375
        return 0;
376

  
377 376
    }
378 377

  
379 378
    @Override
......
452 451
            featureStore = (FeatureStore) DALLocator.getDataManager().openStore(name, params);
453 452
            featureType = featureStore.getDefaultFeatureType();
454 453
        } catch (final DataException e) {
455
            // No puede finalizar la edici�n. Es posible que se haya cerrado
456
            // previamente.
454
            // No puede finalizar la edici?n. Es posible que se haya cerrado previamente.
457 455
        } catch (ValidateDataParametersException e) {
458 456
			org.slf4j.LoggerFactory.getLogger(FlyrVectIVectorLayer.class).debug("Error opening store", e);
459 457
		} catch (LocatorException e) {
......
527 525
			return null;
528 526
		}
529 527
    }
528

  
529

  
530

  
531
    public String[] getFieldNames() {
532
    	return (String[]) names.toArray(new String[names.size()]);
533
    }
534

  
535
    public int getFieldIndexByName(final String sFieldName) {
536
    	String[] names = getFieldNames();
537
    	for (int i = 0; i < names.length; i++) {
538
			if(names[i].equalsIgnoreCase(sFieldName)) {
539
				return i;
540
			}
541
		}
542
    	return -1;
543
    }
544

  
545
    public Class<?>[] getFieldTypes() {
546
    	return (Class<?>[]) types.toArray(new Class<?>[types.size()]);
547
    }
548

  
549
    private void initializeNamesAndTypes() {
550

  
551
    	int defaultGeometryAttributeIndex = this.featureType.getDefaultGeometryAttributeIndex();
552
    	for(int i = 0; i < this.featureType.size(); i++){
553
    		if(i!=defaultGeometryAttributeIndex){
554
    			FeatureAttributeDescriptor attributeDescriptor = this.featureType.getAttributeDescriptor(i);
555
				names.add(attributeDescriptor.getName());
556
    			types.add(attributeDescriptor.getDataType().getDefaultClass());
557
    		}
558
    	}
559

  
560
    }
530 561
}

Also available in: Unified diff