Revision 31886 branches/v2_0_0_prep/extensions/org.gvsig.oracle/src/org/gvsig/oracle/extension/ExportToOracle.java

View differences:

ExportToOracle.java
55 55
import org.gvsig.fmap.dal.DataTypes;
56 56
import org.gvsig.fmap.dal.exception.DataException;
57 57
import org.gvsig.fmap.dal.exception.ReadException;
58
import org.gvsig.fmap.dal.exception.RemoveException;
58 59
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
59 60
import org.gvsig.fmap.dal.feature.DisposableIterator;
60 61
import org.gvsig.fmap.dal.feature.EditableFeature;
61 62
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
62 63
import org.gvsig.fmap.dal.feature.EditableFeatureType;
63 64
import org.gvsig.fmap.dal.feature.Feature;
65
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
64 66
import org.gvsig.fmap.dal.feature.FeatureSet;
65 67
import org.gvsig.fmap.dal.feature.FeatureStore;
66 68
import org.gvsig.fmap.dal.feature.FeatureType;
......
78 80
import org.gvsig.oracle.gui.OracleConnectionChooserPanel;
79 81
import org.gvsig.utils.PostProcessSupport;
80 82
import org.jfree.util.Log;
81
import org.opengis.feature.FeatureAttributeDescriptor;
83
import org.slf4j.Logger;
84
import org.slf4j.LoggerFactory;
82 85

  
83 86
/**
84 87
 * Writes a layer as an Oracle table.
......
87 90
 * 
88 91
 */
89 92
public class ExportToOracle {
93
	
94
	final static private Logger logger = LoggerFactory.getLogger(ExportToOracle.class);
90 95

  
91 96
	/**
92 97
	 * Constructor
......
104 109
	public void toOracle(MapContext mapContext, FLyrVect layer) {
105 110

  
106 111
		// name of oracle table
107
		String tableName = this.getNewOracleTableName();
112

  
113
		String tableName = "";
114
		tableName = this.getNewOracleTableName();
108 115
		if (tableName == null) {
109 116
			return;
110 117
		}
111 118

  
112
		// name of oracle table
113
		String pkFieldName = "";
119
		// name of pk field - not selectable 
120
		String pkFieldName = null;
121
		/*
114 122
		try {
115 123
			pkFieldName = this.getNewOracleTablePK(layer);
116 124
		} catch (Exception e) {
117 125
			Log.warn("There are not primakey fields in this data store");
118 126
			pkFieldName = null;
119 127
		}
128
		*/
120 129

  
121 130
		// Selected explorer (connection)
122 131
		MyExplorer explorer = this.getSelectedExplorer();
......
133 142
				pkFieldName);
134 143
	}
135 144

  
145

  
146

  
147

  
136 148
	/**
137 149
	 * create new oracle store
138 150
	 * 
......
254 266

  
255 267
			params.setDefaultFeatureType(efType.getNotEditableCopy());
256 268

  
257
			explorer.add(params, true);
269
			if (notExistsOrOverwrite(explorer, params)) {
270
				explorer.add(params, true);
271
			} else {
272
				throw new Exception("User_cancelled_or_could_not_overwrite");
273
			}
258 274

  
259 275
			DataManager manager = DALLocator.getDataManager();
260 276
			FeatureStore target = (FeatureStore) manager.createStore(params);
......
265 281
			FeatureSet set = featureStore.getFeatureSet();
266 282

  
267 283
			it1 = set.iterator();
268
			while (it1.hasNext()) {
269
				Feature feature = (Feature) it1.next();
270
				EditableFeature efeat = target.createNewFeature(targetType,
271
						feature);
272
				target.insert(efeat);
284
			
285
			if (gidFound) {
286
				while (it1.hasNext()) {
287
					Feature feature = (Feature) it1.next();
288
					feature.getDefaultGeometry(); // ??
289
					EditableFeature efeat = target.createNewFeature(targetType, feature);
290
					target.insert(efeat);
291
				}
292
			} else {
293
				int last_ind_target = targetType.size() - 1;
294
				int count_id = 0;
295
				while (it1.hasNext()) {
296
					Feature feature = (Feature) it1.next();
297
					feature.getDefaultGeometry(); // ??
298
					EditableFeature efeat = target.createNewFeature(targetType, feature);
299
					efeat.setInt(last_ind_target, count_id);
300
					count_id++;
301
					target.insert(efeat);
302
				}
273 303
			}
304
			
305
			
274 306
			set.dispose();
275 307
			target.finishEditing();
276 308
			target.dispose();
......
286 318

  
287 319
	}
288 320

  
321
	private boolean notExistsOrOverwrite(OracleServerExplorer ose, NewFeatureStoreParameters params) {
322
		
323
		if (!ose.dataStoreExists(params)) {
324
			ose.removeMetadata(params);
325
			return true;
326
		} else {
327
			int overw = JOptionPane.showConfirmDialog(
328
					null,
329
					PluginServices.getText(this, "Table_exists_overwrite_question"),
330
					PluginServices.getText(this, "Warning"),
331
					JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
332
			
333
			if (overw == JOptionPane.YES_OPTION) {
334
				try {
335
					ose.remove(params);
336
				} catch (RemoveException rex) {
337
					logger.error("While trying to remove table: " + rex.getMessage());
338
					JOptionPane.showMessageDialog(null,
339
							PluginServices.getText(this, "Unable_to_remove_table"),
340
							PluginServices.getText(this, "Error"),
341
							JOptionPane.ERROR_MESSAGE);
342
					return false;
343
				}
344
				return true;
345
			} else {
346
				return false;
347
			}
348
			 
349
		}
350
	}
351

  
289 352
	/**
290 353
	 * get new oracle table name
291 354
	 * 

Also available in: Unified diff