Index: org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.swing/org.gvsig.exportto.swing.prov/org.gvsig.exportto.swing.prov.shape/src/main/java/org/gvsig/exportto/swing/prov/shape/ExporttoShapeService.java =================================================================== --- org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.swing/org.gvsig.exportto.swing.prov/org.gvsig.exportto.swing.prov.shape/src/main/java/org/gvsig/exportto/swing/prov/shape/ExporttoShapeService.java (revisione 41691) +++ org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.swing/org.gvsig.exportto.swing.prov/org.gvsig.exportto.swing.prov.shape/src/main/java/org/gvsig/exportto/swing/prov/shape/ExporttoShapeService.java (copia locale) @@ -145,6 +145,7 @@ * Composes a new name with start and end of old name and an index * THISISAVERYLONGNAME => THISI_AME_1, THISI_AME_2 ... THISI_AME_9 */ + /* String pref = name.substring(0, 6) + "_" + name.substring(len - 2) + "_"; String resp = null; for (int i=0; i<10; i++) { @@ -153,10 +154,12 @@ return resp; } } + */ /* * Very strange to get here... * THISISAVERYLONGNAME => THISISA_1, THISISA_2 ... THISISA_999 */ + /* pref = name.substring(0, 7) + "_"; for (int i=0; i<1000; i++) { resp = pref + i; @@ -164,7 +167,27 @@ return resp; } } + */ /* + * GDAL field name truncation method (extended from 100 to 255) + * THISISAVERYLONGNAME => THISISAVER, THISISAV_1 ... THISISAV_9, + * THISISAV10 ... THISISAV99, THISISA100 ... THISISA255 + * (255 = max number of fields in a SHP) + */ + String resp = null; + for (int i=0; i<255; i++) { + if (i==0) + resp = name.substring(0, 10); + else if (i<9) + resp = name.substring(0, 8) + "_" + (i+1); + else if (i<99) + resp = name.substring(0, 8) + (i+1); + else + resp = name.substring(0, 7) + (i+1); + if (!values.contains(resp)) + return resp; + } + /* * Should not get here */ return name.substring(0, 4) + "_" + (System.currentTimeMillis() % 1000000);