package de.twenty11.skysail.server.ext.jgit; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import org.restlet.data.Form; import org.restlet.resource.Get; import org.restlet.resource.ResourceException; import de.twenty11.skysail.common.Presentation; import de.twenty11.skysail.common.PresentationStyle; import de.twenty11.skysail.common.responses.SkysailResponse; import de.twenty11.skysail.server.core.restlet.UniqueResultServerResource2; import de.twenty11.skysail.server.descriptors.FileDescriptor; import de.twenty11.skysail.server.ext.jgit.internal.MyApplication; @Presentation(preferred = PresentationStyle.ACE_EDITOR) public class ShowFileResource extends UniqueResultServerResource2<FileDescriptor> { private File file; @Override protected void doInit() throws ResourceException { String id = (String) getRequest().getAttributes().get("id"); LocalRepositoryDescriptor repositoryDescriptor = ((MyApplication) getApplication()).getRepository() .getLocalRepositoryDescriptor(id); String rootPath = repositoryDescriptor.getPath(); // /tmp/test String filepath = rootPath + "/" + getReference().getRemainingPart(); file = new File(filepath); } @Override @Get("html|json") public SkysailResponse<FileDescriptor> getEntity() { return getEntity("Content of " + file.getName()); } @Override protected FileDescriptor getData() { if (!file.isFile()) { throw new IllegalStateException(file.toString() + " is not a file"); } int lastIndexOfDot = getReference().getRemainingPart().lastIndexOf('.'); String extension = getReference().getRemainingPart().substring(lastIndexOfDot); return new FileDescriptor(readFile(file), extension); } private String readFile(File file) { StringBuffer stringBuffer = new StringBuffer(); BufferedReader bufferedReader = null; try { bufferedReader = new BufferedReader(new FileReader(file)); String text; while ((text = bufferedReader.readLine()) != null) { stringBuffer.append(text + "\n"); } } catch (Exception ex) { return "Exception reading file: \n" + ex.getMessage(); } finally { try { bufferedReader.close(); } catch (IOException ex) { } } return stringBuffer.toString(); } @Override public FileDescriptor getData(Form form) { // TODO Auto-generated method stub return null; } @Override public SkysailResponse<?> addEntity(FileDescriptor entity) { // TODO Auto-generated method stub return null; } }