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
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