Revision 17693

View differences:

trunk/extensions/extOracleSpatial/src/es/prodevelop/cit/gvsig/fmap/drivers/jdbc/oracle/OracleSpatialDriver.java
311 311
		setUpperCase(lyrDef);
312 312
        lyrDef.setConnection(conn);
313 313

  
314
        String geo_can[];
315
		try {
316
			geo_can = getGeometryFieldsCandidates(conn, lyrDef.getTableName());
317
			removeStructFields(lyrDef, geo_can);
318
		} catch (DBException e) {
319
			logger.error("While removing STRUCT fields: " + e.getMessage());
320
		}
321
        
314 322
        setLyrDef(lyrDef);
315 323

  
316 324
        geoColName = lyrDef.getFieldGeometry();
......
356 364
        idLoader.start();
357 365
    }
358 366

  
367
	private void removeStructFields(DBLayerDefinition def, String[] arr) {
368
		
369
		FieldDescription[] flds = def.getFieldsDesc();
370
		ArrayList aux = new ArrayList();
371
		
372
		for (int i=0; i<flds.length; i++) {
373
			if (!isOneOfThese(flds[i].getFieldName(), arr)) {
374
				aux.add(flds[i]);
375
			}
376
		}
377
		
378
		FieldDescription[] flds_new =
379
			(FieldDescription[]) aux.toArray(new FieldDescription[0]);
380
		def.setFieldsDesc(flds_new);
381
	}
382

  
383
	private boolean isOneOfThese(String name, String[] arr) {
384

  
385
		for (int i=0; i<arr.length; i++) {
386
				if (arr[i].compareToIgnoreCase(name) == 0) return true; 
387
			}
388
		return false;
389
	}
390

  
359 391
	private void setUpperCase(DBLayerDefinition def) {
360 392
		
361 393
		String aux = def.getCatalogName();
......
549 581
            {
550 582
            	qry = "select * from " + ORACLE_GEOMETADATA_VIEW +
551 583
                " where OWNER = '" + tokens[0] + "' AND TABLE_NAME = '" +
552
                tokens[1] + "'";
584
                tokens[1] + "' AND COLUMN_NAME = '" + geoColName + "'";
553 585
            }
554 586
            else
555 587
            {
556 588
            	qry = "select * from " + ORACLE_GEOMETADATA_VIEW +
557
                " where TABLE_NAME = " + "'" + getTableName() + "'";
589
                " where TABLE_NAME = " + "'" + getTableName()
590
                + "' AND COLUMN_NAME = '"
591
                + geoColName + "'";
558 592

  
559 593
            }
560 594

  
......
4749 4783

  
4750 4784
            return res;
4751 4785
        }    	
4786
        
4787
	public boolean canWriteGeometry(int gvSIGgeometryType) {
4788
		if (writer == null) {
4789
			return true;
4790
		} else {
4791
			return writer.canWriteGeometry(gvSIGgeometryType);
4792
		}
4793
		
4794
	}
4795
        
4752 4796
    
4753 4797

  
4754 4798
}
trunk/extensions/extOracleSpatial/src/es/prodevelop/cit/gvsig/fmap/drivers/jdbc/oracle/OracleSpatialWriter.java
114 114
        return true;
115 115
    }
116 116

  
117
    public boolean canWriteGeometry(int gvSIGgeometryType) {
118
        return true;
117
    public boolean canWriteGeometry(int type) {
118
    	
119
    	if (!isGeoCS) return true; 
120
    	
121
    	if ((type == FShape.ARC) || (type == FShape.CIRCLE)) {
122
    		return false;
123
    	} else {
124
    		return true;
125
    	}
119 126
    }
120 127

  
121 128
    public void preProcess() throws StartWriterVisitorException {

Also available in: Unified diff