package models; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.File; import java.util.ArrayList; import java.util.HashSet; public abstract class BackendHandlerInterface { public static final String GIT = "git"; public static final String XCHRONICLER = "XChronicler"; public static final String SIRIX = "sirix"; public static final String rootBackendFolder = "./backends/"; public abstract Object getRepository(); public abstract boolean init(); public abstract boolean removeExistingRepository(); public abstract boolean commit(String url, String content, String message, User user); public abstract boolean commit(String url, String content, String message, User user,int relativeVersion); public abstract String commitAFile(TempFile tf); public abstract TempFile getFile(String url); public abstract Logs getLog(); public abstract RepositoryRevision checkout(String revision); public abstract ArrayList<RepositoryFile> getWorkingDirFiles(); public abstract String getRepositoryPath(); public abstract RepositoryRevision getRepositoryHEAD(); public abstract HashSet<String> getDiff(int relativeRevisionId); public abstract int getVersionId(); public abstract long getSize(); public abstract boolean revert(int relativeRevision); /** * removes the relative path to the working directory and replaces with '.' * * @param fileURL * @return */ public String getStrippedFileURL(String fileURL) { return fileURL.replaceFirst(this.getRepositoryPath(), "."); } public static String runCommand(String s) { String returnMsg = ""; Process p = null; try { p = Runtime.getRuntime().exec(s); p.waitFor(); } catch (InterruptedException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } BufferedReader reader = new BufferedReader(new InputStreamReader( p.getInputStream())); String line = ""; try { while ((line = reader.readLine()) != null) { returnMsg += line; } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return returnMsg; } public static long folderSize(File directory) { long length = 0; for (File file : directory.listFiles()) { if (file.isFile()) length += file.length(); else length += folderSize(file); } return length; } }