@@ -373,30 +373,34 @@ private static void reorderColumns(List<UUID> columnOrder, List<ColumnEntity> co
373
373
}
374
374
375
375
private String newCandidate (String base , int n ) {
376
- return base + '(' + n + ')' ;
376
+ return base + '_' + n ;
377
+ }
378
+
379
+ /**
380
+ * Generates a unique value by appending a numeric suffix if the original value already exists.
381
+ *
382
+ * @param originalValue the original value to make unique
383
+ * @param existingValues set of existing values to avoid conflicts with
384
+ * @return a unique value, either the original or with a numeric suffix
385
+ */
386
+ private String getUniqueValue (String originalValue , Set <String > existingValues ) {
387
+ if (!existingValues .contains (originalValue )) {
388
+ return originalValue ;
389
+ }
390
+
391
+ int i = 1 ;
392
+ while (existingValues .contains (newCandidate (originalValue , i ))) {
393
+ ++i ;
394
+ }
395
+ return newCandidate (originalValue , i );
377
396
}
378
397
379
398
private Pair <String , String > getDuplicateIdAndNameCandidate (SpreadsheetConfigEntity entity , String columnId , String columnName ) {
380
- String newColumnId = columnId ;
381
- String newColumnName = columnName ;
382
-
383
399
var existingColumnIds = entity .getColumns ().stream ().map (ColumnEntity ::getId ).collect (Collectors .toSet ());
384
400
var existingColumnNames = entity .getColumns ().stream ().map (ColumnEntity ::getName ).collect (Collectors .toSet ());
401
+ String newColumnId = getUniqueValue (columnId , existingColumnIds );
402
+ String newColumnName = getUniqueValue (columnName , existingColumnNames );
385
403
386
- if (existingColumnIds .contains (columnId )) {
387
- int i = 1 ;
388
- while (existingColumnIds .contains (newCandidate (columnId , i ))) {
389
- ++i ;
390
- }
391
- newColumnId = newCandidate (columnId , i );
392
- }
393
- if (existingColumnNames .contains (columnName )) {
394
- int i = 1 ;
395
- while (existingColumnNames .contains (newCandidate (columnName , i ))) {
396
- ++i ;
397
- }
398
- newColumnName = newCandidate (columnName , i );
399
- }
400
404
401
405
return Pair .of (newColumnId , newColumnName );
402
406
}
0 commit comments