package au.com.langdale.cimtoole.project; import java.util.Collections; import java.util.Set; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IWorkspaceRunnable; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.operation.IRunnableContext; import org.eclipse.swt.widgets.Shell; import au.com.langdale.cimtoole.CIMToolPlugin; import au.com.langdale.kena.OntModel; import au.com.langdale.util.NSMapper; import au.com.langdale.util.Jobs; public class NSChecker implements IWorkspaceRunnable { private IProject lastProject, project; private Set namespaces = Collections.EMPTY_SET; void setProject(IProject project) { this.project = project; } public void run(IProgressMonitor monitor) throws CoreException { OntModel schema = CIMToolPlugin.getCache().getMergedOntologyWait(Info.getSchemaFolder(project)); namespaces = NSMapper.extractNamespaces(schema); lastProject = project; } public String validate(IProject project, String namespace, IRunnableContext container, Shell shell) { this.project = project; if( ! project.equals(lastProject)) Jobs.runInteractive(this, null, container, shell); return validate(namespace); } protected String validate(String namespace) { if( namespaces.contains(namespace)) return "The given namespace conflicts with a schema namespace."; else return null; } }