[yocto] [PATCH v2] [eclipse-poky][master]Add more comprehensive error message for invalid project name
Ioana Grigoropol
ioanax.grigoropol at intel.com
Thu Mar 14 04:50:12 PDT 2013
[Yocto #4008]
Signed-off-by: Ioana Grigoropol <ioanax.grigoropol at intel.com>
---
.../org/yocto/sdk/ide/YoctoSDKMessages.properties | 1 +
.../sdk/ide/wizard/NewYoctoCProjectTemplate.java | 27 ++++++++++++++++----
2 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKMessages.properties b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKMessages.properties
index 8596123..fc9813f 100644
--- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKMessages.properties
+++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKMessages.properties
@@ -10,6 +10,7 @@
* BMW Car IT - added keys for target profiles
*******************************************************************************/
Wizard.SDK.Warning.Title = Invalid Yocto Project ADT Location
+Wizard.SDK.Error.ProjecName = Project name "{0}" is invalid! \nNone of these characters are accepted inside project names: whitespaces, {1}
Poky.SDK.Location.Empty = Specified Toolchain Root Location is empty.
Poky.SDK.Location.Empty.Advice = You need specify Toolchain Root Location before building any project.
diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoCProjectTemplate.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoCProjectTemplate.java
index 5ffd6b7..4d1684a 100644
--- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoCProjectTemplate.java
+++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoCProjectTemplate.java
@@ -10,8 +10,11 @@
*******************************************************************************/
package org.yocto.sdk.ide.wizard;
+import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.eclipse.cdt.autotools.core.AutotoolsNewProjectNature;
import org.eclipse.cdt.core.CCorePlugin;
@@ -46,11 +49,12 @@ import org.yocto.sdk.ide.YoctoProfileElement;
import org.yocto.sdk.ide.YoctoSDKChecker;
import org.yocto.sdk.ide.YoctoSDKChecker.SDKCheckRequestFrom;
import org.yocto.sdk.ide.YoctoSDKChecker.SDKCheckResults;
+import org.yocto.sdk.ide.YoctoSDKMessages;
+import org.yocto.sdk.ide.YoctoSDKPlugin;
+import org.yocto.sdk.ide.YoctoUIElement;
import org.yocto.sdk.ide.natures.YoctoSDKEmptyProjectNature;
import org.yocto.sdk.ide.natures.YoctoSDKProjectNature;
import org.yocto.sdk.ide.utils.YoctoSDKUtils;
-import org.yocto.sdk.ide.YoctoSDKPlugin;
-import org.yocto.sdk.ide.YoctoUIElement;
@SuppressWarnings("restriction")
@@ -58,11 +62,19 @@ public class NewYoctoCProjectTemplate extends ProcessRunner {
protected boolean savedAutoBuildingValue;
protected ProjectCreatedActions pca;
protected IManagedBuildInfo info;
+ protected List<Character> illegalChars = Arrays.asList('$', '"','#','%','&','\'','(',')','*', '+', ',','.','/',':',';','<','=','>','?','@','[','\\',']','^','`','{','|','}','~');
+ private static final String PROJECT_NAME_ERROR = "Wizard.SDK.Error.ProjecName";
public NewYoctoCProjectTemplate() {
pca = new ProjectCreatedActions();
}
-
+ private String printIllegalChars(){
+ String print = "";
+ for (Character ch : illegalChars)
+ print += ch + ", ";
+ print = print.substring(0, print.length() - 2);
+ return print;
+ }
public void process(TemplateCore template, ProcessArgument[] args, String processId, IProgressMonitor monitor) throws ProcessFailureException {
String projectName = args[0].getSimpleValue();
@@ -74,9 +86,9 @@ public class NewYoctoCProjectTemplate extends ProcessRunner {
boolean isEmptryProject = Boolean.valueOf(isEmptyProjetValue).booleanValue();
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
try {
- if (projectName.contains(" ")) {
+ if (!isValidProjectName(projectName)) {
project.delete(true, null);
- throw new ProcessFailureException(projectName + " contains space(s). Project name can't contain space(s)");
+ throw new ProcessFailureException(YoctoSDKMessages.getFormattedString(PROJECT_NAME_ERROR, new Object[]{projectName, printIllegalChars()}));
}
if (!project.exists()) {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
@@ -166,6 +178,11 @@ public class NewYoctoCProjectTemplate extends ProcessRunner {
throw new OperationCanceledException(Messages.getString("NewManagedProject.3") + e.getMessage());
}
}
+ private boolean isValidProjectName(String projectName) {
+ Pattern pattern = Pattern.compile("^[a-zA-Z][a-zA-Z0-9_\\-]*$");
+ Matcher matcher = pattern.matcher(projectName);
+ return matcher.find();
+}
protected final void turnOffAutoBuild(IWorkspace workspace) throws CoreException {
IWorkspaceDescription workspaceDesc = workspace.getDescription();
--
1.7.9.5
More information about the yocto
mailing list