package org.textmapper.lapg.ui;
import java.io.IOException;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
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.Path;
import org.textmapper.templates.storage.IResourceLoader;
import org.textmapper.templates.storage.Resource;
public class WorkspaceResourceLoader implements IResourceLoader {
private IFolder myFolder;
public WorkspaceResourceLoader(IFolder folder) {
myFolder = folder;
}
public IProject getProject() {
IProject p = myFolder.getProject();
if(p != null && p.isAccessible()) {
return p;
}
return null;
}
public Resource loadResource(String qualifiedName, String kind) {
Path p = new Path(qualifiedName.replaceAll("\\.", "/") + "." + kind);
IFile f = myFolder.getFile(p);
if(f.exists()) {
try {
String content = FileUtil.getStreamContents(f.getContents(), f.getCharset());
return new Resource(f.getLocationURI(), content);
} catch (IOException e) {
} catch (CoreException e) {
}
}
return null;
}
public static WorkspaceResourceLoader create(IProject p, String location) {
Path path = new Path(location);
IResource resource = null;
if(path.isAbsolute()) {
resource = ResourcesPlugin.getWorkspace().getRoot().findMember(path);
} else {
resource = p.findMember(path);
}
if(resource instanceof IFolder && resource.exists()) {
return new WorkspaceResourceLoader((IFolder) resource);
}
return null;
}
}