Revision 915

View differences:

org.gvsig.oracle/trunk/org.gvsig.oracle/org.gvsig.oracle.provider/src/main/java/org/gvsig/oracle/dal/OracleSQLBuilder.java
148 148
        STMT_GRANT_privileges_ON_table_TO_role = "GRANT {0} ON {1} TO {2}";
149 149

  
150 150
    }
151

  
151
    
152
    public OracleHelper getHelper() {
153
        return (OracleHelper) super.getHelper();
154
    }
155
    
152 156
    @Override
153 157
    public Formatter formatter() {
154 158
        if (this.formatter == null) {
......
234 238
            StringBuilder builder = new StringBuilder();
235 239

  
236 240
            builder.append("CREATE TABLE ");
237
            builder.append(getFullTableName(this.table()));
241
            builder.append(this.table().toString());
238 242
            builder.append(" (");
239 243
            boolean first = true;
240 244

  
......
332 336

  
333 337
            if (pks.size() > 0) {
334 338
                builder = new StringBuilder("ALTER TABLE ");
335
                builder.append(getFullTableName(this.table()));
339
                builder.append(this.table().toString());
336 340
                builder.append(" ADD PRIMARY KEY (");
337 341
                for (int i = 0; i < pks.size(); i++) {
338 342
                    if (i != 0) {
......
356 360
                    sql = MessageFormat.format(
357 361
                            ADD_SERIAL_COLUMN_TRIGGER_QUERY,
358 362
                            autoTriggerName,
359
                            getFullTableName(this.table()),
363
                            this.table().toString(),
360 364
                            column.getName(),
361 365
                            sequenceName
362 366
                    );
......
429 433
        }
430 434
    }
431 435

  
432
    private String getFullTableName(TableNameBuilder table) {
433
        if (table.has_database()) {
434
            if (table.has_schema()) {
435
                return as_identifier(table.getDatabase()) + "."
436
                        + as_identifier(table.getSchema()) + "."
437
                        + as_identifier(table.getName().toUpperCase());
438
            }
439
        } else {
440
            if (table.has_schema()) {
441
                return as_identifier(table.getSchema()) + "."
442
                        + as_identifier(table.getName().toUpperCase());
443
            }
444
        }
445
        return as_identifier(table.getName().toUpperCase());
446
    }
447

  
448 436
    public class OracleSelectBuilder extends SelectBuilderBase {
449 437

  
450 438
        @Override
......
612 600
            return this.toString(formatter());
613 601
        }
614 602

  
603
        protected String databaseName2provider() {
604
            return null;
605
        }
606

  
607
        protected String schemaName2provider() {
608
            return this.schemaName;
609
        }
610

  
611
        protected String tableName2provider() {
612
            boolean forceUpperCase = true;
613
            OracleConnectionParameters params = getHelper().getConnectionParameters();
614
            if (params != null) {
615
                forceUpperCase = params.getForceUppercaseInTableName();
616
            }
617
            if( forceUpperCase ) {
618
                return StringUtils.upperCase(this.tableName);
619
            }
620
            return this.tableName;
621
        }
622

  
623

  
615 624
        @Override
616 625
        public String toString(Formatter<ExpressionBuilder.Value> formatter) {
617 626
            if (formatter != null && formatter.canApply(this)) {
618 627
                return formatter.format(this);
619 628
            }
620 629
            if (this.has_schema()) {
621
                return as_identifier(this.schemaName) + "."
622
                        + as_identifier(this.tableName);
630
                return as_identifier(this.schemaName2provider()) + "."
631
                        + as_identifier(this.tableName2provider());
623 632
            }
624 633

  
625
            JDBCConnectionParameters params = helper.getConnectionParameters();
634
            OracleConnectionParameters params = getHelper().getConnectionParameters();
626 635
            if (params != null) {
627 636
                if ((StringUtils.isNotBlank(params.getUser()))) {
628 637
                    return as_identifier(params.getUser()) + "."
629
                            + as_identifier(this.tableName);
638
                            + as_identifier(this.tableName2provider());
630 639
                }
631 640
            }
632
            return as_identifier(this.tableName);
641
            return as_identifier(this.tableName2provider());
633 642
        }
634 643
    }
635 644

  
......
1287 1296
    public int getMaxRecomendedSQLLength() {
1288 1297
        return 2048;
1289 1298
    }
1290

  
1299
    
1291 1300
}
org.gvsig.oracle/trunk/org.gvsig.oracle/org.gvsig.oracle.provider/src/main/java/org/gvsig/oracle/dal/operations/OracleListTablesOperation.java
18 18
import org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer;
19 19
import org.gvsig.fmap.dal.store.jdbc2.JDBCUtils;
20 20
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.ListTablesOperation;
21
import org.gvsig.oracle.dal.OracleStoreParameters;
21 22

  
22 23
@SuppressWarnings("UseSpecificCatch")
23 24
public class OracleListTablesOperation extends ListTablesOperation {
......
136 137
                st = this.getConnection().createStatement();
137 138
                rs = JDBCUtils.executeQuery(st, builder.toString());
138 139
                while (rs.next()) {
139
                    JDBCStoreParameters params = this.helper.createOpenStoreParameters(serverParameters);
140
                    OracleStoreParameters params = (OracleStoreParameters) this.helper.createOpenStoreParameters(serverParameters);
140 141
                    params.setSchema(rs.getString(METADATA_COLUMN_TABLE_OWNER));
141 142
                    String table = rs.getString(METADATA_COLUMN_TABLE_NAME);
142 143
                    params.setTable(table);
144
                    if( StringUtils.isNotBlank(table) && !table.equals(table.toUpperCase()) ) {
145
                        // !aaa.equals(AAA) -> !false --> true
146
                        // !AAA.equals(AAA) -> !true --> false
147
                        params.setForceUppercaseInTableName(false);
148
                    }
143 149
                    String authority = rs.getString(METADATA_COLUMN_AUTHORITY);
144 150
                    String srs = rs.getString(METADATA_COLUMN_SRID);
145 151
                    if(StringUtils.isBlank(authority)) {
org.gvsig.oracle/trunk/org.gvsig.oracle/org.gvsig.oracle.provider/src/main/java/org/gvsig/oracle/dal/OracleStoreParameters.java
82 82
    public void setUpdateSpatialIndexAndMetadata(boolean updateSpatialIndexAndMetadata) {
83 83
        this.helper.setUpdateSpatialIndexAndMetadata(updateSpatialIndexAndMetadata);
84 84
    }
85

  
86
    @Override
87
    public boolean getForceUppercaseInTableName() {
88
        return this.helper.getForceUppercaseInTableName();
89
    }
90

  
91
    @Override
92
    public void setForceUppercaseInTableName(boolean force) {
93
        this.helper.setForceUppercaseInTableName(force);
94
    }
85 95
}
org.gvsig.oracle/trunk/org.gvsig.oracle/org.gvsig.oracle.provider/src/main/java/org/gvsig/oracle/dal/OracleConnectionParameters.java
17 17
    public boolean getUpdateSpatialIndexAndMetadata();
18 18
    
19 19
    public void setUpdateSpatialIndexAndMetadata(boolean updateSpatialIndexAndMetadata);
20
    
21
    public boolean getForceUppercaseInTableName();
22
    
23
    public void setForceUppercaseInTableName(boolean force);
20 24
}
org.gvsig.oracle/trunk/org.gvsig.oracle/org.gvsig.oracle.provider/src/main/java/org/gvsig/oracle/dal/OracleConnectionParametersHelper.java
87 87
    public void setUpdateSpatialIndexAndMetadata(boolean updateSpatialIndexAndMetadata) {
88 88
        setDynValue("updateSpatialIndexAndMetadata",updateSpatialIndexAndMetadata);
89 89
    }
90

  
91
    public boolean getForceUppercaseInTableName() {
92
        boolean force = (boolean)getDynValue("forceUppercaseInTableName");
93
        return force;
94
    }
95
    
96
    public void setForceUppercaseInTableName(boolean force) {
97
        setDynValue("forceUppercaseInTableName",force);
98
    }
99
    
100
    
90 101
}
org.gvsig.oracle/trunk/org.gvsig.oracle/org.gvsig.oracle.provider/src/main/java/org/gvsig/oracle/dal/OracleExplorerParameters.java
89 89
    public void setUpdateSpatialIndexAndMetadata(boolean updateSpatialIndexAndMetadata) {
90 90
        this.helper.setUpdateSpatialIndexAndMetadata(updateSpatialIndexAndMetadata);
91 91
    }
92

  
93
    @Override
94
    public boolean getForceUppercaseInTableName() {
95
        return this.helper.getForceUppercaseInTableName();
96
    }
97

  
98
    @Override
99
    public void setForceUppercaseInTableName(boolean force) {
100
        this.helper.setForceUppercaseInTableName(force);
101
    }
92 102
}
org.gvsig.oracle/trunk/org.gvsig.oracle/org.gvsig.oracle.provider/src/main/java/org/gvsig/oracle/dal/OracleNewStoreParameters.java
82 82
    public void setUpdateSpatialIndexAndMetadata(boolean updateSpatialIndexAndMetadata) {
83 83
        this.helper.setUpdateSpatialIndexAndMetadata(updateSpatialIndexAndMetadata);
84 84
    }
85

  
86
    @Override
87
    public boolean getForceUppercaseInTableName() {
88
        return this.helper.getForceUppercaseInTableName();
89
    }
90

  
91
    @Override
92
    public void setForceUppercaseInTableName(boolean force) {
93
        this.helper.setForceUppercaseInTableName(force);
94
    }
85 95
}
org.gvsig.oracle/trunk/org.gvsig.oracle/org.gvsig.oracle.provider/src/main/resources/org/gvsig/oracle/dal/OracleParameters.xml
36 36
          defaultValue="true" group="Advanced">
37 37
          <description></description>
38 38
        </field>
39
	<field name="forceUppercaseInTableName" label="Force uppercase in table name" type="boolean" mandatory="false"
40
          defaultValue="false" group="Advanced">
41
          <description></description>
42
        </field>
39 43
      </fields>
40 44
    </class>
41 45

  

Also available in: Unified diff