package org.yakindu.sct.generator.genmodel.ui.ws;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.yakindu.sct.generator.core.filesystem.ISCTWorkspaceAccess;
public class DefaultSCTWorkspaceAccess implements ISCTWorkspaceAccess {
public boolean projectExists(String value) {
try {
return ResourcesPlugin.getWorkspace().getRoot().getProject(value).exists();
} catch (IllegalArgumentException e) {
return false;
}
}
public boolean projectOpened(String value) {
try {
return ResourcesPlugin.getWorkspace().getRoot().getProject(value).isOpen();
} catch (IllegalArgumentException e) {
return false;
}
}
public boolean folderExists(String projectName, String folderPath) {
try {
IPath workspaceRelativePath = Path.fromPortableString(projectName).append(folderPath);
return ResourcesPlugin.getWorkspace().getRoot().exists(workspaceRelativePath);
} catch (IllegalArgumentException e) {
return false;
}
}
public boolean fileExists(String projectName, String folderPath) {
try {
return ResourcesPlugin.getWorkspace().getRoot().getProject(projectName).getFile(new Path(folderPath))
.exists();
} catch (IllegalArgumentException e) {
return false;
}
}
@Override
public void refreshProject(String projectName) {
try {
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
if (project != null && project.isAccessible())
project.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
} catch (CoreException e) {
throw new RuntimeException(e);
}
}
}