Bug 536673 - Internal Error on copy/paste of the file with a Long number
in the name
Now we can copy/paste projects, files and folders named like
111111111111111111111111111111111113.
Change-Id: I5900f7e1d02892f2c15764126565494cb416629e
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyFilesAndFoldersOperation.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyFilesAndFoldersOperation.java
index 04aca32..0df44e0 100644
--- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyFilesAndFoldersOperation.java
+++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyFilesAndFoldersOperation.java
@@ -15,6 +15,7 @@
import java.io.File;
import java.lang.reflect.InvocationTargetException;
+import java.math.BigDecimal;
import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
@@ -161,8 +162,14 @@
Matcher m = p.matcher(fileNameNoExtension);
if (m.find()) {
// String ends with a number: increment it by 1
- int newNumber = Integer.parseInt(m.group()) + 1;
- String numberStr = m.replaceFirst(Integer.toString(newNumber));
+ String numberStr;
+ BigDecimal newNumber = null;
+ try {
+ newNumber = new BigDecimal(m.group()).add(new BigDecimal(1));
+ numberStr = m.replaceFirst(newNumber.toPlainString());
+ } catch (NumberFormatException e) {
+ numberStr = m.replaceFirst("2"); //$NON-NLS-1$
+ }
return numberStr + fileExtension;
}
return fileNameNoExtension + "2" + fileExtension; //$NON-NLS-1$
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/ProjectLocationSelectionDialog.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/ProjectLocationSelectionDialog.java
index c7dbcad..14e66a8 100644
--- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/ProjectLocationSelectionDialog.java
+++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/ProjectLocationSelectionDialog.java
@@ -17,6 +17,7 @@
*******************************************************************************/
package org.eclipse.ui.dialogs;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -262,8 +263,12 @@
Matcher m = p.matcher(fileNameNoExtension);
if (m.find()) {
// String ends with a number: increment it by 1
- int newNumber = Integer.parseInt(m.group()) + 1;
- return m.replaceFirst(Integer.toString(newNumber));
+ try {
+ BigDecimal newNumber = new BigDecimal(m.group()).add(new BigDecimal(1));
+ return m.replaceFirst(newNumber.toPlainString());
+ } catch (NumberFormatException e) {
+ return m.replaceFirst("2"); //$NON-NLS-1$
+ }
}
return fileNameNoExtension + "2"; //$NON-NLS-1$
}