Revision 854

View differences:

org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/pom.xml
18 18
		<!-- El plugin versions:use-latest-versions falla con scope import -->
19 19
		<!-- asi que toca usar el versions:update-properties que si que funciona -->
20 20
		<org.gvsig.raster.version>2.2.44</org.gvsig.raster.version>
21
		<org.gvsig.toolbox.version>1.0.24</org.gvsig.toolbox.version>
21
		<org.gvsig.toolbox.version>1.0.25-SNAPSHOT</org.gvsig.toolbox.version>
22 22
	</properties>
23 23
	<scm>
24 24
		<connection>scm:svn:https://devel.gvsig.org/svn/gvsig-geoprocess/org.gvsig.geoprocess/trunk/org.gvsig.geoprocess</connection>
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/core/DefaultOutputFactory.java
34 34
import org.gvsig.app.ApplicationLocator;
35 35
import org.gvsig.app.project.ProjectPreferences;
36 36
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
37
import org.gvsig.fmap.geom.Geometry;
37 38
import org.gvsig.geoprocess.lib.sextante.dataObjects.BufferWriteOnlyIRasterLayer;
38 39
import org.gvsig.geoprocess.lib.sextante.dataObjects.FLyrRasterIRasterLayer;
39 40
import org.gvsig.geoprocess.lib.sextante.dataObjects.FileTools;
......
62 63
 */
63 64
public class DefaultOutputFactory extends OutputFactory {
64 65

  
66
    public IVectorLayer getNewVectorLayer(final String name,
67
        final int shapeType, final Class[] types, final String[] fields,
68
        final IOutputChannel channel, final Object crs, final int subtype)
69
        throws UnsupportedOutputChannelException {
70

  
71
        final int[] sizes = getSizesFromTypeClass(types);
72
        return getNewVectorLayer(name, shapeType, types, fields, channel, crs,
73
            sizes, subtype);
74

  
75
    }
65 76
    @Override
66 77
    public IVectorLayer getNewVectorLayer(final String name,
67 78
        final int shapeType, final Class[] types, final String[] fields,
......
70 81

  
71 82
        final int[] sizes = getSizesFromTypeClass(types);
72 83
        return getNewVectorLayer(name, shapeType, types, fields, channel, crs,
73
            sizes);
84
            sizes, Geometry.SUBTYPES.UNKNOWN);
74 85

  
75 86
    }
76 87

  
......
87 98
        final int iShapeType, final Class[] types, final String[] sFields,
88 99
        final IOutputChannel channel, final Object crs, int[] fieldSize)
89 100
        throws UnsupportedOutputChannelException {
101
        return getNewVectorLayer(sName, iShapeType, types, sFields,
102
        channel, crs, fieldSize, Geometry.SUBTYPES.UNKNOWN);
90 103

  
104
    }
105

  
106
    @Override
107
    public IVectorLayer getNewVectorLayer(final String sName,
108
        final int iShapeType, final Class[] types, final String[] sFields,
109
        final IOutputChannel channel, final Object crs, int[] fieldSize, int subtype)
110
        throws UnsupportedOutputChannelException {
111

  
91 112
        if( fieldSize==null ) {
92 113
            fieldSize = getSizesFromTypeClass(types);
93 114
        }
......
97 118
                Object inputParams =
98 119
                    ((CompositeSourceIOutputChannel) channel).getParameters();
99 120
                layer.create(sName, inputParams, iShapeType, types, sFields,
100
                    crs, fieldSize);
121
                    crs, fieldSize, subtype);
101 122
                return layer;
102 123

  
103 124
            } else if (channel instanceof FileOutputChannel) {
104 125
                FlyrVectIVectorLayer layer = new FlyrVectIVectorLayer();
105 126
                String fileName = ((FileOutputChannel) channel).getFilename();
106 127
                layer.create(sName, fileName, iShapeType, types, sFields, crs,
107
                    fieldSize);
128
                    fieldSize, subtype);
108 129
                return layer;
109 130
            } else if (channel instanceof NullOutputChannel) {
110 131
                return null;
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
31 31
import java.util.List;
32 32

  
33 33
import org.cresques.cts.IProjection;
34

  
34 35
import org.gvsig.fmap.dal.DALLocator;
35 36
import org.gvsig.fmap.dal.DataManager;
36 37
import org.gvsig.fmap.dal.DataServerExplorer;
37 38
import org.gvsig.fmap.dal.DataStoreParameters;
38 39
import org.gvsig.fmap.dal.exception.DataException;
40
import org.gvsig.fmap.dal.exception.ReadException;
39 41
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
40 42
import org.gvsig.fmap.dal.feature.EditableFeature;
41 43
import org.gvsig.fmap.dal.feature.EditableFeatureType;
......
100 102

  
101 103
    public void create(String sName, Object inputParams, int iShapeType,
102 104
        Class[] types, String[] sFields, Object crs, int[] fieldSize) {
105
        create(sName, inputParams, iShapeType,
106
        types, sFields, crs, fieldSize, org.gvsig.fmap.geom.Geometry.SUBTYPES.UNKNOWN);
107
    }
108
    public void create(String sName, Object inputParams, int iShapeType,
109
        Class[] types, String[] sFields, Object crs, int[] fieldSize, int subtype) {
103 110
        try {
104 111
            // inputParameters = inputParams;
105 112
            m_sName = sName;
......
114 121

  
115 122
                featureType = newParams.getDefaultFeatureType();
116 123
                loadFeatureType(sFields, types, iShapeType, crs,
117
                    (EditableFeatureType) featureType, fieldSize);
124
                    (EditableFeatureType) featureType, fieldSize, subtype);
118 125
                newParams.setDynValue("CRS", m_Projection);
119 126

  
120 127
                DATA_MANAGER.newStore(dataServerExplorer.getProviderName(),
......
152 159
    public void create(final String sName, final String sFilename,
153 160
        final int iShapeType, final Class<?>[] types, final String[] sFields,
154 161
        final Object crs, final int[] fieldSize) {
162
        create(sName, sFilename, iShapeType, types, sFields, crs, fieldSize, org.gvsig.fmap.geom.Geometry.SUBTYPES.UNKNOWN);
163
    }
155 164

  
165
    public void create(final String sName, final String sFilename,
166
        final int iShapeType, final Class<?>[] types, final String[] sFields,
167
        final Object crs, final int[] fieldSize, int subtype) {
168

  
156 169
        try {
157 170
            // inputParameters = sFilename;
158 171
            m_sName = sName;
......
175 188
                newParams.getDefaultFeatureType();
176 189
            featureType = editableFeatureType;
177 190
            loadFeatureType(sFields, types, iShapeType, crs,
178
                editableFeatureType, fieldSize);
191
                editableFeatureType, fieldSize, subtype);
179 192

  
180 193
            newParams.setDefaultFeatureType(featureType);
181 194
            newParams.setDynValue("crs", m_Projection);
......
198 211

  
199 212
    private void loadFeatureType(final String[] fields, final Class<?>[] types,
200 213
        final int shapeType, final Object crs,
201
        final EditableFeatureType featureType, final int[] fieldSize) {
214
        final EditableFeatureType featureType, final int[] fieldSize, final int subtype) {
202 215
        final int[] iTypes = getTypes(types);
203 216

  
204 217
        for (int i = 0; i < fields.length; i++) {
......
216 229
        FeatureAttributeDescriptor desc =
217 230
            featureType.getDefaultGeometryAttribute();
218 231
        if (desc == null) {
219
            addGeometryAttribute("GEOMETRY", shapeType, featureType);
232
            addGeometryAttribute("GEOMETRY", shapeType, subtype, featureType);
220 233
            featureType.setDefaultGeometryAttributeName("GEOMETRY");
221 234
        }
222 235
    }
223 236

  
224 237
    private void addGeometryAttribute(final String fieldName,
225
        final int shapeType, final EditableFeatureType featureType) {
238
        final int shapeType, final int subtype, final EditableFeatureType featureType) {
226 239
        try {
227
            GeometryType type =
228
                geometryManager.getGeometryType(getgvSIGShapeType(shapeType),
229
                    org.gvsig.fmap.geom.Geometry.SUBTYPES.GEOM2D);
240
            GeometryType type;
241
            if (subtype == org.gvsig.fmap.geom.Geometry.SUBTYPES.UNKNOWN) {
242
                type =
243
                    geometryManager.getGeometryType(getgvSIGShapeType(shapeType),
244
                        org.gvsig.fmap.geom.Geometry.SUBTYPES.GEOM2D);
245
            } else {
246
                type =
247
                    geometryManager.getGeometryType(getgvSIGShapeType(shapeType),subtype);
248
            }
230 249
            featureType.add(fieldName, DataTypes.GEOMETRY)
231 250
                .setGeometryType(type);
232 251
        } catch (GeometryTypeNotSupportedException e) {
......
570 589
    	}
571 590

  
572 591
    }
592

  
593
    /* (non-Javadoc)
594
     * @see es.unex.sextante.dataObjects.IVectorLayer#getSubType()
595
     */
596
    @Override
597
    public int getSubType() throws ReadException {
598
        if(m_Layer!=null){
599
            return m_Layer.getGeometryType().getSubType();
600
        }
601
        return org.gvsig.fmap.geom.Geometry.SUBTYPES.UNKNOWN;
602
    }
573 603
}

Also available in: Unified diff