Revision: 6075
http://sourceforge.net/p/jump-pilot/code/6075
Author: ma15569
Date: 2019-01-06 16:11:09 +0000 (Sun, 06 Jan 2019)
Log Message:
-----------
Correct bug on exporting to csv and clean code. Added experimanta code to
import/export to dBase file
Modified Paths:
--------------
core/trunk/src/org/openjump/core/apitools/IOTools.java
Modified: core/trunk/src/org/openjump/core/apitools/IOTools.java
===================================================================
--- core/trunk/src/org/openjump/core/apitools/IOTools.java 2019-01-06
12:01:45 UTC (rev 6074)
+++ core/trunk/src/org/openjump/core/apitools/IOTools.java 2019-01-06
16:11:09 UTC (rev 6075)
@@ -56,7 +56,6 @@
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
-import org.apache.commons.lang3.StringUtils;
import org.geotools.dbffile.DbfFieldDef;
import org.geotools.dbffile.DbfFile;
import org.geotools.dbffile.DbfFileWriter;
@@ -85,6 +84,7 @@
import com.vividsolutions.jump.feature.BasicFeature;
import com.vividsolutions.jump.feature.Feature;
import com.vividsolutions.jump.feature.FeatureCollection;
+import com.vividsolutions.jump.feature.FeatureDataset;
import com.vividsolutions.jump.feature.FeatureSchema;
import com.vividsolutions.jump.io.DriverProperties;
import com.vividsolutions.jump.io.FMEGMLReader;
@@ -365,22 +365,7 @@
* @throws Exception
*/
public static void saveCSV(JTable table, String filename) throws Exception
{
-
saveCSV(table, filename, ",");
- /*
- * try { final File file = new File(filename); final BufferedWriter bw
=
- * new BufferedWriter( new OutputStreamWriter(new FileOutputStream(
- * file.getAbsoluteFile()), "UTF-8"));
- *
- * for (int j = 0; j < table.getColumnCount(); j++) {
- * bw.write(table.getModel().getColumnName(j) + "\t"); } bw.newLine();
;
- * for (int i = 0; i < table.getRowCount(); i++) { for (int j = 0; j <
- * table.getColumnCount(); j++) {
- * bw.write(table.getModel().getValueAt(i, j) + "\t"); } bw.newLine();
}
- * bw.close(); } catch (final Exception e) {
- *
- * // }
- */
}
/**
@@ -396,7 +381,6 @@
*/
public static void saveCSV(JTable table, String filename,
String cellseparator) throws Exception {
-
try {
final File file = new File(filename);
final BufferedWriter bw = new BufferedWriter(
@@ -404,30 +388,18 @@
file.getAbsoluteFile()), "UTF-8"));
for (int j = 0; j < table.getColumnCount(); j++) {
- String columnName = table.getModel().getColumnName(j);
- final int number = StringUtils.countMatches(columnName, "\"");
- if (columnName.contains(cellseparator) & number == 2) {
- columnName = "\"" + columnName + "\"";
- }
- bw.write(columnName + cellseparator);
+ bw.write(table.getModel().getColumnName(j) + cellseparator);
}
bw.newLine();
;
for (int i = 0; i < table.getRowCount(); i++) {
for (int j = 0; j < table.getColumnCount(); j++) {
- String value = table.getModel().getValueAt(i,
j).toString();
- final int number = StringUtils.countMatches(value, "\"");
- if (value.contains(cellseparator) & number == 2) {
- value = "\"" + value + "\"";
- }
- bw.write(value + cellseparator);
+ bw.write(table.getModel().getValueAt(i, j) +
cellseparator);
}
bw.newLine();
}
bw.close();
} catch (final Exception e) {
-
- //
}
}
@@ -1293,4 +1265,179 @@
}
}
+ public static FeatureCollection loaddBaseFile(final String sFilename) {
+
+ try {
+ final DbfFile mydbf = new DbfFile(sFilename);
+
+ final FeatureSchema fs = new FeatureSchema();
+
+ // fill in schema
+ fs.addAttribute("GEOMETRY", AttributeType.GEOMETRY);
+
+ FeatureCollection featureCollection = null;
+
+ final int numfields = mydbf.getNumFields();
+
+ for (int j = 0; j < numfields; j++) {
+ final AttributeType type = AttributeType.toAttributeType(mydbf
+ .getFieldType(j));
+ fs.addAttribute(mydbf.getFieldName(j), type);
+ }
+
+ featureCollection = new FeatureDataset(fs);
+
+ for (int x = 0; x < mydbf.getLastRec(); x++) {
+ final Feature feature = new BasicFeature(fs);
+ final byte[] s = mydbf.GetDbfRec(x);
+
+ for (int y = 0; y < numfields; y++) {
+ feature.setAttribute(y + 1, mydbf.ParseRecordColumn(s, y));
+ }
+
+ featureCollection.add(feature);
+ }
+
+ mydbf.close();
+
+ return featureCollection;
+ } catch (final Exception e) {
+ return null;
+ }
+
+ }
+
+ public static void savedBaseFile(FeatureCollection featureCollection,
+ String fname, Charset charset) throws Exception {
+ DbfFileWriter dbf;
+ FeatureSchema fs;
+ int t;
+ int f;
+ int u;
+ int num;
+ HashMap<String, DbfFieldDef> fieldMap = null;
+ if (new File(fname).exists()) {
+ final DbfFile dbfFile = new DbfFile(fname);
+ final int numFields = dbfFile.getNumFields();
+ fieldMap = new HashMap<String, DbfFieldDef>(numFields);
+ for (int i = 0; i < numFields; i++) {
+ final String fieldName = dbfFile.getFieldName(i);
+ fieldMap.put(fieldName, dbfFile.fielddef[i]);
+ }
+ dbfFile.close();
+ }
+ fs = featureCollection.getFeatureSchema();
+ // -1 because one of the columns is geometry
+ final DbfFieldDef[] fields = new DbfFieldDef[fs.getAttributeCount() -
1];
+ // dbf column type and size
+ f = 0;
+ for (t = 0; t < fs.getAttributeCount(); t++) {
+ final AttributeType columnType = fs.getAttributeType(t);
+ final String columnName = fs.getAttributeName(t);
+ if (columnType == AttributeType.INTEGER) {
+ //LDB: previously 16
+ fields[f] = new DbfFieldDef(columnName, 'N', 11, 0);
+ // fields[f] =
overrideWithExistingCompatibleDbfFieldDef(fields[f], fieldMap);
+ f++;
+ } else if (columnType == AttributeType.DOUBLE) {
+ fields[f] = new DbfFieldDef(columnName, 'N', 33, 16);
+ // fields[f] =
overrideWithExistingCompatibleDbfFieldDef(fields[f], fieldMap);
+ f++;
+ } else if (columnType == AttributeType.STRING) {
+ final int maxlength = findMaxStringLength(featureCollection,
t);
+ if (maxlength > 255) {
+ throw new Exception(
+ "ShapefileWriter does not support strings longer
than 255 characters");
+ }
+ fields[f] = new DbfFieldDef(columnName, 'C', maxlength, 0);
+ //fields[f] =
overrideWithExistingCompatibleDbfFieldDef(fields[f], fieldMap);
+ f++;
+ } else if (columnType == AttributeType.DATE) {
+ fields[f] = new DbfFieldDef(columnName, 'D', 8, 0);
+ f++;
+ } else if (columnType == AttributeType.LONG) {
+
+ fields[f] = new DbfFieldDef(columnName, 'N', 11, 0);
+ f++;
+ } else if (columnType == AttributeType.BOOLEAN) {
+ fields[f] = new DbfFieldDef(columnName, 'L', 1, 0);
+ f++;
+ }
+
+ else if (columnType == AttributeType.GEOMETRY) {
+ //do nothing - the .shp file handles this
+ } else {
+ throw new Exception(
+ "Shapewriter: unsupported AttributeType found in
featurecollection.");
+ }
+ }
+ // write header
+ dbf = new DbfFileWriter(fname);
+ dbf.setCharset(charset);
+ dbf.writeHeader(fields, featureCollection.size());
+ //write rows
+ num = featureCollection.size();
+ final List<Feature> features = featureCollection.getFeatures();
+ for (t = 0; t < num; t++) {
+ //System.out.println("dbf: record "+t);
+ final Feature feature = features.get(t);
+ final Vector<Object> DBFrow = new Vector<Object>();
+ //make data for each column in this feature (row)
+ for (u = 0; u < fs.getAttributeCount(); u++) {
+ final AttributeType columnType = fs.getAttributeType(u);
+ if (columnType == AttributeType.INTEGER) {
+ final Object a = feature.getAttribute(u);
+ if (a == null) {
+ DBFrow.add(new Integer(0));
+ } else {
+ DBFrow.add(a);
+ }
+ } else if (columnType == AttributeType.DOUBLE) {
+ final Object a = feature.getAttribute(u);
+ if (a == null) {
+ DBFrow.add(new Double(0.0));
+ } else {
+ DBFrow.add(a);
+ }
+ } else if (columnType == AttributeType.DATE) {
+ final Object a = feature.getAttribute(u);
+ if (a == null) {
+ DBFrow.add("");
+ } else {
+ DBFrow.add(DbfFile.DATE_PARSER.format((Date) a));
+ }
+ } else if (columnType == AttributeType.STRING) {
+ final Object a = feature.getAttribute(u);
+ if (a == null) {
+ DBFrow.add(new String(""));
+ } else {
+ // MD 16 jan 03 - added some defensive programming
+ if (a instanceof String) {
+ DBFrow.add(a);
+ } else {
+ DBFrow.add(a.toString());
+ }
+ }
+ } else if (columnType == AttributeType.LONG) {
+ final Object a = feature.getAttribute(u);
+
+ if (a == null) {
+ DBFrow.add(new Long(0));
+ } else {
+ DBFrow.add(a);
+ }
+ } else if (columnType == AttributeType.BOOLEAN) {
+ final Object a = feature.getAttribute(u);
+ if (a == null) {
+ DBFrow.add(new Boolean(false));
+ } else {
+ DBFrow.add(a);
+ }
+ }
+ }
+ dbf.writeRecord(DBFrow);
+ }
+ dbf.close();
+ }
+
}
_______________________________________________
Jump-pilot-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel