Jelajahi Sumber

[YAKHMI-1080] SGen Wizard doesn't work.
Exception was caused if IFiles got no extension. Added check for that and corrected some minor typo.

malknet42 11 tahun lalu
induk
melakukan
dc7934b0ae

+ 29 - 5
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/SGenWizardPage2ContentProvider.java

@@ -61,26 +61,45 @@ public class SGenWizardPage2ContentProvider implements ITreeContentProvider {
 	public boolean containsFile(IFolder folder) throws CoreException {
 		if (folder.members() != null) {
 			for (Object member : folder.members()) {
-				if (member instanceof IFile && ((IFile) member).getFileExtension().equals(fileExtension)) {
+
+				// No file extension check
+				if (member instanceof IFile && hasFileExtension((IFile) member)) {
+					return false;
+				}
+				// check if file extension is proper
+				else if (member instanceof IFile
+						&& ((IFile) member).getFileExtension().equals(
+								fileExtension)) {
 					return true;
 				} else if (member instanceof IFolder) {
 					return containsFile((IFolder) member);
+
 				}
 			}
 		}
 		return false;
 	}
 
-	public Object[] filterForContent(Object[] inputElements) throws CoreException {
+	public Object[] filterForContent(Object[] inputElements)
+			throws CoreException {
 		final Set<Object> result = new HashSet<Object>();
 		for (final Object obj : inputElements) {
 			((IResource) obj).accept(new IResourceVisitor() {
 				public boolean visit(IResource resource) throws CoreException {
-					if (resource instanceof IFile && resource.getFileExtension().equals(fileExtension)) {
+					// no file extension check
+					if (resource instanceof IFile
+							&& hasFileExtension((IFile) resource)) {
+						return false;
+					}
+					// check if file extension is proper
+					else if (resource instanceof IFile
+							&& resource.getFileExtension()
+									.equals(fileExtension)) {
 						if (!containsErrors(resource))
 							result.add(obj);
 						return true;
-					} else if (resource instanceof IFolder && containsFile((IFolder) resource)) {
+					} else if (resource instanceof IFolder
+							&& containsFile((IFolder) resource)) {
 						result.add(obj);
 						return true;
 					}
@@ -94,7 +113,8 @@ public class SGenWizardPage2ContentProvider implements ITreeContentProvider {
 	public boolean containsErrors(IResource resource) {
 		int maxSeverity;
 		try {
-			maxSeverity = resource.findMaxProblemSeverity(IMarker.PROBLEM, true, IResource.DEPTH_INFINITE);
+			maxSeverity = resource.findMaxProblemSeverity(IMarker.PROBLEM,
+					true, IResource.DEPTH_INFINITE);
 			return maxSeverity == IMarker.SEVERITY_ERROR;
 		} catch (CoreException e) {
 			return true;
@@ -120,4 +140,8 @@ public class SGenWizardPage2ContentProvider implements ITreeContentProvider {
 	public void setFileExtension(String fileExtension) {
 		this.fileExtension = fileExtension;
 	}
+
+	public boolean hasFileExtension(IFile res) {
+		return (res.getFileExtension() == null);
+	}
 }