package com.horstmann.violet.eclipseplugin.file;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.runtime.CoreException;
import com.horstmann.violet.framework.file.IFile;
import com.horstmann.violet.framework.file.persistence.IFileReader;
public class EclipseFileOpener implements IFileReader {
private org.eclipse.core.resources.IFile eclipseFile;
private IFile fileDefinition;
public EclipseFileOpener(org.eclipse.core.resources.IFile eclipseFile) {
this.eclipseFile = eclipseFile;
}
@Override
public IFile getFileDefinition() throws IOException {
if (this.fileDefinition == null) {
this.fileDefinition = new IFile() {
@Override
public String getDirectory() {
IContainer parent = eclipseFile.getParent();
URI parentURI = parent.getLocationURI();
String directory = parentURI.getPath();
return directory;
}
@Override
public String getFilename() {
String name = eclipseFile.getName();
return name;
}
};
}
return this.fileDefinition;
}
@Override
public InputStream getInputStream() throws IOException {
try {
return this.eclipseFile.getContents();
} catch (CoreException e) {
throw new IOException(e);
}
}
}