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$
 	}