Revision 43283
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultEditableFeatureType.java | ||
---|---|---|
197 | 197 |
case DataTypes.STRING: |
198 | 198 |
case DataTypes.TIME: |
199 | 199 |
case DataTypes.TIMESTAMP: |
200 |
case DataTypes.URI: |
|
201 |
case DataTypes.URL: |
|
202 |
case DataTypes.FILE: |
|
200 | 203 |
break; |
201 | 204 |
|
202 | 205 |
default: |
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/csv/CSVStoreProvider.java | ||
---|---|---|
23 | 23 |
package org.gvsig.fmap.dal.store.csv; |
24 | 24 |
|
25 | 25 |
import java.io.File; |
26 |
import java.io.FileInputStream; |
|
27 |
import java.io.FileNotFoundException; |
|
26 | 28 |
import java.io.FileReader; |
27 | 29 |
import java.io.FileWriter; |
28 | 30 |
import java.io.IOException; |
31 |
import java.io.InputStreamReader; |
|
29 | 32 |
import java.net.URL; |
30 |
import java.text.SimpleDateFormat;
|
|
33 |
import java.nio.charset.Charset;
|
|
31 | 34 |
import java.util.ArrayList; |
32 | 35 |
import java.util.HashMap; |
33 | 36 |
import java.util.Iterator; |
... | ... | |
746 | 749 |
logger.warn("Can't set geometry type for the calculated field in CSV file '" + getFullFileName() + "'.", e); |
747 | 750 |
} |
748 | 751 |
} |
752 |
|
|
753 |
String geometry_column = CSVStoreParameters.getGeometryColumn(this.getParameters()); |
|
754 |
if( !StringUtils.isEmpty(geometry_column) ) { |
|
755 |
EditableFeatureAttributeDescriptor attr = (EditableFeatureAttributeDescriptor) fType.get(geometry_column); |
|
756 |
if( attr!=null && attr.getType()!=DataTypes.GEOMETRY ) { |
|
757 |
attr.setDataType(DataTypes.GEOMETRY); |
|
758 |
GeometryManager geommgr = GeometryLocator.getGeometryManager(); |
|
759 |
GeometryType gt; |
|
760 |
try { |
|
761 |
gt = geommgr.getGeometryType(Geometry.TYPES.GEOMETRY, Geometry.SUBTYPES.UNKNOWN); |
|
762 |
attr.setGeometryType(gt); |
|
763 |
} catch (Exception e) { |
|
764 |
logger.warn("Can't set geometry type for the calculated field in CSV file '" + getFullFileName() + "'.", e); |
|
765 |
} |
|
766 |
fType.setDefaultGeometryAttributeName(geometry_column); |
|
767 |
} |
|
768 |
} |
|
749 | 769 |
return fType; |
750 | 770 |
} |
751 | 771 |
|
... | ... | |
889 | 909 |
|
890 | 910 |
} |
891 | 911 |
|
892 |
private SimpleReader getSimpleReader(FileReader in) {
|
|
912 |
private SimpleReader getSimpleReader(InputStreamReader in) {
|
|
893 | 913 |
SimpleReader reader; |
894 | 914 |
if (CSVStoreParameters.getRawFieldsDefinition(getCSVParameters()) != null) { |
895 | 915 |
reader = new FixedLenReader(in, getCSVParameters()); |
... | ... | |
917 | 937 |
return headers; |
918 | 938 |
} |
919 | 939 |
|
940 |
private InputStreamReader openFile(File f, String charsetName) throws FileNotFoundException { |
|
941 |
Charset charset = Charset.defaultCharset(); |
|
942 |
FileInputStream fis = new FileInputStream(f); |
|
943 |
if( !StringUtils.isEmpty(charsetName) ) { |
|
944 |
if( Charset.isSupported(charsetName) ) { |
|
945 |
try { |
|
946 |
charset = Charset.forName(charsetName); |
|
947 |
} catch(Throwable th) { |
|
948 |
logger.warn("Can't use charset '"+charsetName+"' for read csv '"+this.getFullFileName()+"'.", th); |
|
949 |
} |
|
950 |
} else { |
|
951 |
logger.warn("charset '"+charsetName+"' not supported for read csv '"+this.getFullFileName()+"'."); |
|
952 |
} |
|
953 |
} |
|
954 |
InputStreamReader isr = new InputStreamReader(fis, charset); |
|
955 |
return isr; |
|
956 |
} |
|
957 |
|
|
920 | 958 |
private void loadFeatures() { |
921 |
FileReader in = null;
|
|
959 |
InputStreamReader in = null;
|
|
922 | 960 |
SimpleReader reader = null; |
923 | 961 |
try { |
924 | 962 |
String headers[] = null; |
... | ... | |
926 | 964 |
|
927 | 965 |
boolean ignore_errors = CSVStoreParameters.getIgnoreErrors(getCSVParameters()); |
928 | 966 |
|
929 |
in = new FileReader(this.getCSVParameters().getFile()); |
|
967 |
in = openFile( |
|
968 |
this.getCSVParameters().getFile(), |
|
969 |
CSVStoreParameters.getCharset(this.getCSVParameters()) |
|
970 |
); |
|
930 | 971 |
|
931 | 972 |
reader = getSimpleReader(in); |
932 | 973 |
|
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/csv/CSVStoreParameters.java | ||
---|---|---|
74 | 74 |
private static final String LOCALE = "locale"; |
75 | 75 |
private static final String POINT_COLUMN_NAME = "pointColumnName"; |
76 | 76 |
private static final String LIMIT = "limit"; |
77 |
private static final String GEOEMTRY_COLUMN = "geometry_column"; |
|
77 | 78 |
|
78 | 79 |
private DelegatedDynObject parameters; |
79 | 80 |
|
... | ... | |
171 | 172 |
return StringEscapeUtils.unescapeJava(s); |
172 | 173 |
} |
173 | 174 |
|
175 |
public static String getGeometryColumn(DynObject dynobj) { |
|
176 |
String s = (String) dynobj.getDynValue(GEOEMTRY_COLUMN); |
|
177 |
return s; |
|
178 |
} |
|
179 |
|
|
174 | 180 |
static Locale getLocale(DynObject dynobj) { |
175 | 181 |
try { |
176 | 182 |
String s = (String) dynobj.getDynValue(LOCALE); |
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/csv/simplereaders/CSVReader.java | ||
---|---|---|
1 | 1 |
package org.gvsig.fmap.dal.store.csv.simplereaders; |
2 | 2 |
|
3 |
import java.io.FileReader; |
|
4 | 3 |
import java.io.IOException; |
4 |
import java.io.InputStreamReader; |
|
5 | 5 |
import java.util.List; |
6 | 6 |
import org.apache.commons.lang3.StringUtils; |
7 | 7 |
import org.gvsig.fmap.dal.store.csv.CSVStoreParameters; |
... | ... | |
26 | 26 |
private List<String> nextLine; |
27 | 27 |
private int columns; |
28 | 28 |
|
29 |
public CSVReader(FileReader in, CSVStoreParameters parameters) {
|
|
29 |
public CSVReader(InputStreamReader in, CSVStoreParameters parameters) {
|
|
30 | 30 |
this(parameters); |
31 | 31 |
this.reader = new CsvListReader(in, getCSVPreferences()); |
32 | 32 |
} |
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/csv/simplereaders/FixedLenReader.java | ||
---|---|---|
2 | 2 |
package org.gvsig.fmap.dal.store.csv.simplereaders; |
3 | 3 |
|
4 | 4 |
import java.io.BufferedReader; |
5 |
import java.io.FileReader; |
|
6 | 5 |
import java.io.IOException; |
6 |
import java.io.InputStreamReader; |
|
7 | 7 |
import java.util.ArrayList; |
8 | 8 |
import java.util.List; |
9 | 9 |
import org.apache.commons.lang3.StringUtils; |
... | ... | |
20 | 20 |
private final String commentStartMarker; |
21 | 21 |
private int currentLine =1; |
22 | 22 |
|
23 |
public FixedLenReader(FileReader reader, CSVStoreParameters parameters) {
|
|
23 |
public FixedLenReader(InputStreamReader reader, CSVStoreParameters parameters) {
|
|
24 | 24 |
// this.parameters = parameters; |
25 | 25 |
this.reader = new BufferedReader(reader); |
26 | 26 |
this.fieldsDefinition = CSVStoreParameters.getFieldsDefinition(parameters); |
Also available in: Unified diff