Revision 10626 trunk/extensions/extPublish/src/org/gvsig/remoteservices/conf/mapserver/test/AddFieldToDBF.java
AddFieldToDBF.java | ||
---|---|---|
43 | 43 |
|
44 | 44 |
import java.io.File; |
45 | 45 |
import java.io.IOException; |
46 |
import java.sql.Date; |
|
47 | 46 |
import java.sql.Types; |
48 | 47 |
import java.util.Calendar; |
49 | 48 |
|
50 |
import com.hardcode.gdbms.engine.data.DataSourceFactory; |
|
49 |
import com.hardcode.gdbms.driver.exceptions.CloseDriverException; |
|
50 |
import com.hardcode.gdbms.driver.exceptions.InitializeWriterException; |
|
51 |
import com.hardcode.gdbms.driver.exceptions.OpenDriverException; |
|
52 |
import com.hardcode.gdbms.driver.exceptions.ReadDriverException; |
|
51 | 53 |
import com.hardcode.gdbms.engine.data.driver.DriverException; |
52 | 54 |
import com.hardcode.gdbms.engine.values.Value; |
53 | 55 |
import com.hardcode.gdbms.engine.values.ValueFactory; |
56 |
import com.iver.cit.gvsig.exceptions.visitors.ProcessWriterVisitorException; |
|
57 |
import com.iver.cit.gvsig.exceptions.visitors.StartWriterVisitorException; |
|
58 |
import com.iver.cit.gvsig.exceptions.visitors.StopWriterVisitorException; |
|
54 | 59 |
import com.iver.cit.gvsig.fmap.core.DefaultRow; |
55 |
import com.iver.cit.gvsig.fmap.core.IRow; |
|
56 | 60 |
import com.iver.cit.gvsig.fmap.drivers.FieldDescription; |
57 | 61 |
import com.iver.cit.gvsig.fmap.drivers.ITableDefinition; |
58 |
import com.iver.cit.gvsig.fmap.drivers.TableDefinition; |
|
59 | 62 |
import com.iver.cit.gvsig.fmap.drivers.dbf.DBFDriver; |
60 | 63 |
import com.iver.cit.gvsig.fmap.edition.DefaultRowEdited; |
61 |
import com.iver.cit.gvsig.fmap.edition.EditionException; |
|
62 |
import com.iver.cit.gvsig.fmap.layers.SelectableDataSource; |
|
64 |
import com.iver.cit.gvsig.fmap.edition.IRowEdited; |
|
63 | 65 |
|
64 | 66 |
/** |
65 | 67 |
* @author fjp |
66 |
*
|
|
68 |
* |
|
67 | 69 |
* Abrimos un dbf y le a?adimos un campo. Lo rellenamos con la fecha actual con formato cadena. |
68 | 70 |
* |
69 | 71 |
*/ |
... | ... | |
76 | 78 |
String []fechas = {"2000-12-01", "2000-11-17"}; |
77 | 79 |
prueba.add("prb.dbf", "date", fechas); |
78 | 80 |
} |
79 |
|
|
81 |
|
|
80 | 82 |
public void add(String dbfFile, String fieldName, String[] values) { |
81 | 83 |
DBFDriver driver = new DBFDriver(); |
82 | 84 |
File myFile = new File(dbfFile); |
... | ... | |
84 | 86 |
System.out.println("Adding time to "+dbfFile); |
85 | 87 |
// Abrimos el fichero |
86 | 88 |
driver.open(myFile); |
87 |
|
|
89 |
|
|
88 | 90 |
// Comprobamos que tenemos acceso de escritura. |
89 | 91 |
if (driver.canSaveEdits()) |
90 |
{
|
|
91 |
|
|
92 |
{ |
|
93 |
|
|
92 | 94 |
// Creamos el nuevo campo |
93 |
|
|
95 |
|
|
94 | 96 |
FieldDescription dateField = new FieldDescription(); |
95 | 97 |
dateField.setFieldName(fieldName); |
96 | 98 |
dateField.setFieldType(Types.VARCHAR); |
97 | 99 |
dateField.setFieldLength(20); |
98 |
|
|
100 |
|
|
99 | 101 |
// Creamos un array con el nuevo campo |
100 | 102 |
ITableDefinition tableDef = driver.getTableDefinition(); |
101 | 103 |
FieldDescription[] oldFields = tableDef.getFieldsDesc(); |
... | ... | |
105 | 107 |
newFields[numOldFields] = dateField; |
106 | 108 |
|
107 | 109 |
tableDef.setFieldsDesc(newFields); |
108 |
|
|
110 |
|
|
109 | 111 |
driver.initialize(tableDef); |
110 | 112 |
driver.preProcess(); |
111 | 113 |
Value[] att = new Value[newFields.length]; |
112 | 114 |
Calendar today = Calendar.getInstance(); |
113 | 115 |
for (int i=0; i < driver.getRowCount(); i++) |
114 |
{
|
|
116 |
{ |
|
115 | 117 |
for (int j=0; j < numOldFields; j++) |
116 | 118 |
{ |
117 | 119 |
att[j] = driver.getFieldValue(i, j); |
... | ... | |
119 | 121 |
att[numOldFields] = ValueFactory.createValue(values[i]); |
120 | 122 |
DefaultRow row = new DefaultRow(att); |
121 | 123 |
DefaultRowEdited edRow = new DefaultRowEdited(row, |
122 |
DefaultRowEdited.STATUS_MODIFIED, i);
|
|
124 |
IRowEdited.STATUS_MODIFIED, i);
|
|
123 | 125 |
|
124 | 126 |
driver.process(edRow); |
125 | 127 |
} |
126 | 128 |
driver.postProcess(); |
127 |
|
|
129 |
|
|
128 | 130 |
System.out.println("Fichero modificado"); |
129 |
|
|
131 |
|
|
130 | 132 |
} |
131 | 133 |
else |
132 | 134 |
{ |
133 | 135 |
System.err.println("El fichero no tiene permiso de edici?n"); |
134 | 136 |
} |
135 | 137 |
driver.close(); |
136 |
} catch (IOException e) {
|
|
138 |
} catch (OpenDriverException e) {
|
|
137 | 139 |
// TODO Auto-generated catch block |
138 | 140 |
e.printStackTrace(); |
139 |
} catch (EditionException e) {
|
|
141 |
} catch (InitializeWriterException e) {
|
|
140 | 142 |
// TODO Auto-generated catch block |
141 | 143 |
e.printStackTrace(); |
142 |
} catch (DriverException e) { |
|
144 |
} catch (ReadDriverException e) {
|
|
143 | 145 |
// TODO Auto-generated catch block |
144 | 146 |
e.printStackTrace(); |
147 |
} catch (StartWriterVisitorException e) { |
|
148 |
// TODO Auto-generated catch block |
|
149 |
e.printStackTrace(); |
|
150 |
} catch (ProcessWriterVisitorException e) { |
|
151 |
// TODO Auto-generated catch block |
|
152 |
e.printStackTrace(); |
|
153 |
} catch (StopWriterVisitorException e) { |
|
154 |
// TODO Auto-generated catch block |
|
155 |
e.printStackTrace(); |
|
145 | 156 |
} |
146 |
|
|
147 | 157 |
|
148 |
|
|
158 |
|
|
159 |
|
|
149 | 160 |
} |
150 | 161 |
|
151 | 162 |
|
Also available in: Unified diff