Revision 47652 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.csv/src/main/java/org/gvsig/fmap/dal/store/gml/simplereaders/GMLReader.java

View differences:

GMLReader.java
12 12
import java.util.List;
13 13
import org.apache.commons.io.FilenameUtils;
14 14
import org.apache.commons.io.IOUtils;
15
import org.apache.commons.lang3.StringUtils;
15 16
import org.cresques.cts.IProjection;
16 17
import org.gvsig.fmap.crs.CRSFactory;
18
import org.gvsig.fmap.dal.store.gml.GMLStoreParameters;
17 19
import org.gvsig.fmap.dal.store.gml.virtualrows.GfsFile;
18 20
import org.gvsig.fmap.dal.store.gml.virtualrows.XMLFileAsList;
19 21
import org.gvsig.fmap.dal.store.simplereader.SimpleReaderStoreParameters;
20 22
import org.gvsig.fmap.dal.store.simplereader.simplereaders.AbstractSimpleReader;
23
import org.gvsig.tools.ToolsLocator;
24
import org.gvsig.tools.dataTypes.DataType;
25
import org.gvsig.tools.dataTypes.DataTypesManager;
26
import org.gvsig.tools.namestranslator.NamesTranslator;
21 27
import org.gvsig.tools.task.SimpleTaskStatus;
22 28
import org.gvsig.tools.util.GetItemWithSize64;
23 29
import org.slf4j.Logger;
......
35 41
    private int columns;
36 42
    private String[] header;
37 43
    private int currentElement = 0;
38
    private final SimpleReaderStoreParameters parameters;
44
    private final GMLStoreParameters parameters;
39 45
    private GfsFile gfs;
40 46

  
41
    public GMLReader(Reader reader, SimpleReaderStoreParameters theParameters) throws IOException {
47
    public GMLReader(Reader reader, GMLStoreParameters theParameters) throws IOException {
42 48
        File gmlFile = theParameters.getFile();
43 49
        File gmlIdx = new File(FilenameUtils.removeExtension(gmlFile.getAbsolutePath())+".gmlidx");
44 50
        File gfsFile = new File(FilenameUtils.removeExtension(gmlFile.getAbsolutePath())+".gfs");
......
70 76
            List<String> geoms = gfs.getGeometryElementPaths();
71 77
            String[] theHeader = new String[gfs.size()+(geoms==null?0:geoms.size())];
72 78
            int i = 0;
79
            DataTypesManager dataTypesManager = ToolsLocator.getDataTypesManager();
73 80
            for (GfsFile.PropertyDefn item : gfs) {
74
                theHeader[i++] = item.getName();
81
                DataType dataType = dataTypesManager.get(item.getType());
82
                theHeader[i++] = item.getName()+"/"+dataType.getName();
75 83
            }
76 84
            if(geoms != null) {
77 85
                List<String> srss = gfs.getGeometryElementSrss();
78
                for (int j = 0; j < geoms.size(); j++) {
79
                    IProjection srs = CRSFactory.getCRS(srss.get(j));
80
                    if(srs == null){
81
                        theHeader[i++] = FilenameUtils.getBaseName(geoms.get(j));
86
                if(this.parameters.getGeometryCombineMode() == XMLFileAsList.COMBINE_FIRST_NOT_NULL){
87
                    String srs = srss.get(0);
88
                    for (int j = 0; j < srss.size(); j++) {
89
                        if(!StringUtils.equalsIgnoreCase(srs, srss.get(j))){
90
                            srs = null;
91
                            break;
92
                        }
93
                    }
94
                    IProjection proj = null;
95
                    if(srs != null){
96
                        proj = CRSFactory.getCRS(srs);
97
                    }
98
                    if(proj == null){
99
                        theHeader[i++] = FilenameUtils.getBaseName(getGeometryAttributeName())+"/Geometry";
82 100
                    } else {
83
                        theHeader[i++] = FilenameUtils.getBaseName(geoms.get(j))+"/Geometry/set/srs="+srs.getAbrev().replace(":", "@");
101
                        theHeader[i++] = FilenameUtils.getBaseName(getGeometryAttributeName())+"/Geometry/set/srs="+proj.getAbrev().replace(":", "@");
84 102
                    }
103
                } else {
104
                    for (int j = 0; j < srss.size(); j++) {
105
                        IProjection srs = CRSFactory.getCRS(srss.get(j));
106
                        if(srs == null){
107
                            theHeader[i++] = FilenameUtils.getBaseName(geoms.get(j))+"/Geometry";
108
                        } else {
109
                            theHeader[i++] = FilenameUtils.getBaseName(geoms.get(j))+"/Geometry/set/srs="+srs.getAbrev().replace(":", "@");
110
                        }
111
                    }
85 112
                }
86 113
            }
87 114
            this.header = theHeader;
88 115
        }
89 116
        return this.header;
90 117
    }
118
    
119
    private String getGeometryAttributeName() {
120
        NamesTranslator translator = NamesTranslator.createBaseTranslator();
121
        for (GfsFile.PropertyDefn item : gfs) {
122
            translator.addSource(item.getName());
123
        }
124
        String s = translator.getSuggestion("Geometry");
125
        return s;
126
    }
91 127

  
92 128
    @Override
93 129
    public int getColumnsCount() throws IOException {
......
162 198
                gfs.getGeometryElementPaths(),
163 199
                gfs.getPropertiesPaths()
164 200
            );
201
            
202
            x.setCombineMode(this.parameters.getGeometryCombineMode());
165 203

  
166 204
            return x;
167 205
        } catch (IOException ex) {

Also available in: Unified diff