[Yocto #4008]

Signed-off-by: Ioana Grigoropol <ioanax.grigoro...@intel.com>
---
 .../sdk/ide/wizard/NewYoctoCProjectTemplate.java   |   34 +++++++++++++++++---
 1 file changed, 29 insertions(+), 5 deletions(-)

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..8ab5972 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,6 +10,8 @@
  
*******************************************************************************/
 package org.yocto.sdk.ide.wizard;
 
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.LinkedHashMap;
 import java.util.List;
 
@@ -46,11 +48,11 @@ 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.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 +60,20 @@ public class NewYoctoCProjectTemplate extends ProcessRunner 
{
        protected boolean savedAutoBuildingValue;
        protected ProjectCreatedActions pca;
        protected IManagedBuildInfo info;
+       protected List<Character> illegalChars = Arrays.asList('$', 
'"','#','%','&','\'','(',')','*', '+', 
',','.','/',':',';','<','=','>','?','@','[','\\',']','^','`','{','|','}','~');
        
        public NewYoctoCProjectTemplate() {
                pca = new ProjectCreatedActions();
        }
-       
+       private String printIllegalChars(){
+               String print = "";
+               for (int i = 0; i < illegalChars.size(); i++) {
+                       print += illegalChars.get(i);
+                       if (i != illegalChars.size() - 1)
+                               print += " ,";
+               }
+               return print;
+       }
        public void process(TemplateCore template, ProcessArgument[] args, 
String processId, IProgressMonitor monitor) throws ProcessFailureException {
 
                String projectName = args[0].getSimpleValue();
@@ -74,9 +85,10 @@ 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("Project name 
" + "\""+ projectName +"\"" +" is invalid! " +
+                                               "\nNone of these characters are 
accepted inside project names: whitespaces, " + printIllegalChars());
                        }
                        if (!project.exists()) {
                                IWorkspace workspace = 
ResourcesPlugin.getWorkspace();
@@ -166,6 +178,18 @@ public class NewYoctoCProjectTemplate extends 
ProcessRunner {
                        throw new 
OperationCanceledException(Messages.getString("NewManagedProject.3") + 
e.getMessage());
                }
        }
+       private boolean isValidProjectName(String projectName) {
+               if (projectName.contains("\\s+"))
+                       return false;
+
+               char[] chars = projectName.toCharArray();
+               if (!Character.isJavaIdentifierStart(chars[0]))
+                       return false;
+               for (int i = 1; i < chars.length; i++)
+                       if (illegalChars.contains(chars[i]))
+                               return false;
+               return true;
+}
 
        protected final void turnOffAutoBuild(IWorkspace workspace) throws 
CoreException {
                IWorkspaceDescription workspaceDesc = 
workspace.getDescription();
-- 
1.7.9.5

_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to