Просмотр исходного кода

Delete un-needed files from mem builds.

Winston Li 11 лет назад
Родитель
Сommit
be806d293c

+ 2 - 2
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/WLBridgedProject.java

@@ -6,9 +6,9 @@ import org.eclipse.jgit.errors.RepositoryNotFoundException;
 import org.eclipse.jgit.lib.PersonIdent;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.transport.ServiceMayNotContinueException;
+import uk.ac.ic.wlgitbridge.util.Util;
 import uk.ac.ic.wlgitbridge.writelatex.api.request.getdoc.exception.InvalidProjectException;
 import uk.ac.ic.wlgitbridge.writelatex.api.request.push.exception.SnapshotPostException;
-import uk.ac.ic.wlgitbridge.writelatex.filestore.store.WLFileStore;
 
 import java.io.IOException;
 import java.util.List;
@@ -59,7 +59,7 @@ public class WLBridgedProject {
                 git.commit().setAuthor(new PersonIdent(contents.getUserName(), contents.getUserEmail(), contents.getWhen(), TimeZone.getDefault()))
                         .setMessage(contents.getCommitMessage())
                         .call();
-                WLFileStore.deleteInDirectoryApartFrom(contents.getDirectory(), ".git");
+                Util.deleteInDirectoryApartFrom(contents.getDirectory(), ".git");
             }
         } catch (InvalidProjectException e) {
             throw new RepositoryNotFoundException(name);

+ 0 - 18
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/bullshit.java

@@ -1,18 +0,0 @@
-package uk.ac.ic.wlgitbridge.bridge;
-
-import com.google.gson.JsonElement;
-import uk.ac.ic.wlgitbridge.writelatex.filestore.node.WLDirectoryNode;
-
-/**
- * Created by Winston on 16/11/14.
- */
-public interface bullshit {
-
-    public JsonElement getJsonRepresentation();
-    public int getPreviousVersionID();
-    public String getProjectURL();
-    public void approveWithVersionID(int versionID);
-    public String getProjectName();
-    public WLDirectoryNode getDirectoryNode();
-
-}

+ 20 - 0
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/util/Util.java

@@ -3,11 +3,15 @@ package uk.ac.ic.wlgitbridge.util;
 import uk.ac.ic.wlgitbridge.application.SSLConfig;
 
 import java.io.BufferedReader;
+import java.io.File;
 import java.io.IOException;
 import java.io.PrintStream;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
+import java.util.Arrays;
 import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
 
 /**
  * Created by Winston on 19/11/14.
@@ -127,4 +131,20 @@ public class Util {
         t.printStackTrace();
     }
 
+    public static void deleteInDirectory(File directory) {
+        deleteInDirectoryApartFrom(directory);
+    }
+
+    public static void deleteInDirectoryApartFrom(File directory, String... apartFrom) {
+        Set<String> excluded = new HashSet<String>(Arrays.asList(apartFrom));
+        for (File file : directory.listFiles()) {
+            if (!excluded.contains(file.getName())) {
+                if (file.isDirectory()) {
+                    deleteInDirectory(file);
+                }
+                file.delete();
+            }
+        }
+    }
+
 }

+ 1 - 0
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/writelatex/CandidateSnapshot.java

@@ -55,6 +55,7 @@ public class CandidateSnapshot {
         jsonObject.addProperty("latestVerId", currentVersion);
         jsonObject.add("files", getFilesAsJson(projectURL, postbackKey));
         jsonObject.addProperty("postbackUrl", projectURL + "/" + postbackKey + "/postback");
+        System.out.println(jsonObject);
         return jsonObject;
     }
 

+ 2 - 2
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/writelatex/filestore/GitDirectoryContents.java

@@ -2,7 +2,7 @@ package uk.ac.ic.wlgitbridge.writelatex.filestore;
 
 import uk.ac.ic.wlgitbridge.bridge.RawFile;
 import uk.ac.ic.wlgitbridge.bridge.WritableRepositoryContents;
-import uk.ac.ic.wlgitbridge.writelatex.filestore.store.WLFileStore;
+import uk.ac.ic.wlgitbridge.util.Util;
 import uk.ac.ic.wlgitbridge.writelatex.model.Snapshot;
 
 import java.io.File;
@@ -33,7 +33,7 @@ public class GitDirectoryContents implements WritableRepositoryContents {
 
     @Override
     public void write() throws IOException {
-        WLFileStore.deleteInDirectoryApartFrom(gitDirectory, ".git");
+        Util.deleteInDirectoryApartFrom(gitDirectory, ".git");
         for (RawFile fileNode : files) {
             fileNode.writeToDisk(gitDirectory);
         }

+ 0 - 53
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/writelatex/filestore/node/BlobNode.java

@@ -1,53 +0,0 @@
-package uk.ac.ic.wlgitbridge.writelatex.filestore.node;
-
-import uk.ac.ic.wlgitbridge.bridge.RawFile;
-import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException;
-import uk.ac.ic.wlgitbridge.writelatex.filestore.RepositoryFile;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Map;
-
-/**
- * Created by Winston on 12/11/14.
- */
-public class BlobNode /*extends FileNode*/ {
-
-//    private ByteBlob blob;
-
-    public BlobNode(RawFile rawFile, Map<String, FileNode> context) {
-//        super(rawFile, context);
-//        blob = new RawFileBlob(rawFile);
-    }
-
-    public BlobNode(RepositoryFile repositoryFile, Map<String, FileNode> fileNodeTable, File projectAttDirectory) throws IOException, FailedConnectionException {
-        this(repositoryFile, fileNodeTable);
-//        blob = new RawFileBlob(repositoryFile);
-        writeChanged(projectAttDirectory);
-    }
-
-    public BlobNode(String fileName, boolean changed, byte[] blob) {
-//        super(fileName, changed);
-//        this.blob = new ByteBlob(blob);
-    }
-
-//    @Override
-//    protected Blob getBlob() {
-//        return blob;
-//    }
-
-//    @Override
-//    public void updatePersistentStore(PersistentStoreAPI persistentStore, String projectName) {
-//        try {
-//            persistentStore.addFileNodeBlob(projectName, getFilePath(), isChanged(), getBlob().getContents());
-//        } catch (FailedConnectionException e) {
-//            throw new RuntimeException(e);
-//        }
-//    }
-
-    private void writeChanged(File projectAttDirectory) throws FailedConnectionException, IOException {
-//        if (isChanged()) {
-//            writeToDisk(projectAttDirectory);
-//        }
-    }
-}

+ 0 - 80
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/writelatex/filestore/node/FileNode.java

@@ -1,80 +0,0 @@
-package uk.ac.ic.wlgitbridge.writelatex.filestore.node;
-
-import uk.ac.ic.wlgitbridge.bridge.RawFile;
-import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException;
-import uk.ac.ic.wlgitbridge.writelatex.model.db.PersistentStoreUpdater;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.Map;
-
-/**
- * Created by Winston on 12/11/14.
- */
-public abstract class FileNode implements PersistentStoreUpdater<String> {
-
-    private final String filePath;
-    private FileNode previous;
-    private boolean changed;
-
-    public FileNode(RawFile file, Map<String, FileNode> context) {
-        this(file.getPath(), context);
-    }
-
-    public FileNode(String filePath, Map<String, FileNode> context) {
-        previous = context.get(filePath);
-        this.filePath = filePath;
-    }
-
-    protected FileNode(String filePath, boolean changed) {
-        this.filePath = filePath;
-        this.changed = changed;
-    }
-
-    protected FileNode() {
-        filePath = "";
-        previous = null;
-        changed = false;
-    }
-
-    public byte[] getContents() throws FailedConnectionException {
-//        return getBlob().getContents();
-        return null;
-    }
-
-    public void writeToDisk(File directory) throws FailedConnectionException, IOException {
-        File file = new File(directory, filePath);
-        file.getParentFile().mkdirs();
-        file.createNewFile();
-        OutputStream out = new FileOutputStream(file);
-        out.write(getContents());
-        out.close();
-    }
-
-    public String getFilePath() {
-        return filePath;
-    }
-
-    public boolean isChanged() {
-        return changed || previous == null || !equals(previous);
-    }
-
-//    protected abstract Blob getBlob();
-
-//    @Override
-//    public boolean equals(Object obj) {
-//        if (!(obj instanceof FileNode)) {
-//            return false;
-//        }
-//        FileNode that = (FileNode) obj;
-//        return filePath.equals(that.filePath) && getBlob().equals(that.getBlob());
-//    }
-
-    @Override
-    public String toString() {
-        return filePath;
-    }
-
-}

+ 0 - 94
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/writelatex/filestore/node/WLDirectoryNode.java

@@ -1,94 +0,0 @@
-package uk.ac.ic.wlgitbridge.writelatex.filestore.node;
-
-import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException;
-import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotAttachment;
-import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotFile;
-import uk.ac.ic.wlgitbridge.writelatex.model.Snapshot;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Created by Winston on 08/11/14.
- */
-public class WLDirectoryNode /*implements PersistentStoreSource, PersistentStoreUpdater<Void>*/ {
-
-//    private final String projectName;
-    private Map<String, FileNode> fileNodeTable;
-
-//    public WLDirectoryNode(String projectName, File attsDirectory, File rootGitDirectory, PersistentStoreAPI persistentStore) {
-//        this(projectName, attsDirectory, rootGitDirectory);
-//        initFromPersistentStore(persistentStore);
-//    }
-
-    private WLDirectoryNode(String projectName, File attsDirectory, File rootGitDirectory) {
-//        this.projectName = projectName;
-        new File(attsDirectory, projectName).mkdirs();
-        new File(rootGitDirectory, projectName).mkdirs();
-    }
-
-//    @Override
-//    public void initFromPersistentStore(PersistentStoreAPI persistentStore) {
-//        fileIndexStore = new FileIndexStore(projectName, persistentStore);
-//        fileNodeTable = new HashMap<String, FileNode>();
-//        for (FileNode fileNode : persistentStore.getFileNodesForProjectName(projectName, fileIndexStore)) {
-//            fileNodeTable.put(fileNode.getFilePath(), fileNode);
-//        }
-//    }
-
-//    @Override
-//    public void updatePersistentStore(PersistentStoreAPI persistentStore, Void info) {
-//        updateFileNodeTableInPersistentStore(persistentStore);
-//        fileIndexStore.updatePersistentStore(persistentStore, projectName);
-//    }
-
-//    private void updateFileNodeTableInPersistentStore(PersistentStoreAPI persistentStore) {
-//        persistentStore.deleteFileNodesForProjectName(projectName);
-//        for (FileNode fileNode : fileNodeTable.values()) {
-//            fileNode.updatePersistentStore(persistentStore, projectName);
-//        }
-//    }
-
-    public List<FileNode> getFileNodes() {
-        return new LinkedList<FileNode>(fileNodeTable.values());
-    }
-
-    public List<FileNode> updateFromSnapshot(Snapshot snapshot) throws FailedConnectionException {
-        Map<String, FileNode> updatedFileNodeTable = new HashMap<String, FileNode>();
-        List<SnapshotFile> srcs = snapshot.getSrcs();
-        List<SnapshotAttachment> atts = snapshot.getAtts();
-        for (SnapshotFile src : srcs) {
-            BlobNode blobNode = new BlobNode(src, fileNodeTable);
-//            updatedFileNodeTable.put(blobNode.getFilePath(), blobNode);
-        }
-        for (SnapshotAttachment att : atts) {
-//            AttachmentNode attachmentNode = new AttachmentNode(att, fileNodeTable, fileIndexStore);
-//            updatedFileNodeTable.put(attachmentNode.getFilePath(), attachmentNode);
-        }
-        LinkedList<FileNode> fileNodes = new LinkedList<FileNode>(updatedFileNodeTable.values());
-        fileNodeTable = updatedFileNodeTable;
-        return fileNodes;
-    }
-
-//    public WLDirectoryNode createFromRawDirectoryContents(RawDirectoryContents rawDirectoryContents, File attachmentDirectory) throws IOException, FailedConnectionException {
-//        Map<String, FileNode> candidateFileNodeTable = new HashMap<String, FileNode>();
-//        File projectAttDirectory = new File(attachmentDirectory, projectName);
-//        projectAttDirectory.mkdirs();
-//        WLFileStore.deleteInDirectory(projectAttDirectory);
-//        for (Entry<String, byte[]> fileContents : rawDirectoryContents.getFileContentsTable().entrySet()) {
-//            BlobNode blobNode = new BlobNode(new RepositoryFile(fileContents), fileNodeTable, projectAttDirectory);
-//            candidateFileNodeTable.put(blobNode.getFilePath(), blobNode);
-//        }
-//        return new WLDirectoryNode(projectName, candidateFileNodeTable,
-//                                   new FileIndexStore(new LinkedList<FileNode>(candidateFileNodeTable.values())));
-//    }
-
-//    @Override
-//    public String toString() {
-//        return fileNodeTable.toString();
-//    }
-
-}

+ 0 - 34
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/writelatex/filestore/store/BlobHash.java

@@ -1,34 +0,0 @@
-package uk.ac.ic.wlgitbridge.writelatex.filestore.store;
-
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.Arrays;
-
-/**
- * Created by Winston on 08/11/14.
- */
-public class BlobHash {
-
-    private byte[] hash;
-
-    public BlobHash(byte[] blob) {
-        MessageDigest md = null;
-        try {
-            md = MessageDigest.getInstance("SHA-256");
-            hash = md.digest(blob);
-        } catch (NoSuchAlgorithmException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        return obj instanceof BlobHash && Arrays.equals(((BlobHash) obj).hash, hash);
-    }
-
-    @Override
-    public int hashCode() {
-        return Arrays.hashCode(hash);
-    }
-
-}

+ 0 - 91
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/writelatex/filestore/store/WLFileStore.java

@@ -1,91 +0,0 @@
-package uk.ac.ic.wlgitbridge.writelatex.filestore.store;
-
-import uk.ac.ic.wlgitbridge.bridge.bullshit;
-import uk.ac.ic.wlgitbridge.writelatex.filestore.node.WLDirectoryNode;
-
-import java.io.File;
-import java.util.*;
-
-/**
- * Created by Winston on 08/11/14.
- */
-public class WLFileStore /*implements PersistentStoreSource*/ {
-
-    private final Map<String, WLDirectoryNode> fileStore;
-    private final File rootGitDirectory;
-    private final File attDirectory;
-
-//    private PersistentStoreAPI persistentStore;
-
-    public WLFileStore(File rootGitDirectory) {
-        fileStore = new HashMap<String, WLDirectoryNode>();
-        this.rootGitDirectory = rootGitDirectory;
-        attDirectory = new File(rootGitDirectory, ".wlgb/atts");
-        attDirectory.mkdirs();
-    }
-
-//    public WLFileStore(File rootGitDirectory, PersistentStoreAPI persistentStoreAPI) {
-//        this(rootGitDirectory);
-//        initFromPersistentStore(persistentStoreAPI);
-//    }
-
-//    @Override
-//    public void initFromPersistentStore(PersistentStoreAPI persistentStore) {
-//        this.persistentStore = persistentStore;
-//        for (String projectName : persistentStore.getProjectNames()) {
-//            fileStore.put(projectName, new WLDirectoryNode(projectName, attDirectory, rootGitDirectory, persistentStore));
-//        }
-//    }
-
-    public static void deleteInDirectory(File directory) {
-        deleteInDirectoryApartFrom(directory);
-    }
-
-    public static void deleteInDirectoryApartFrom(File directory, String... apartFrom) {
-        Set<String> excluded = new HashSet<String>(Arrays.asList(apartFrom));
-        for (File file : directory.listFiles()) {
-            if (!excluded.contains(file.getName())) {
-                if (file.isDirectory()) {
-                    deleteInDirectory(file);
-                }
-                file.delete();
-            }
-        }
-    }
-
-//    public List<WritableRepositoryContents> updateForProject(WLProject project) throws FailedConnectionException,
-//                                                                                       InvalidProjectException {
-//        SortedSet<Snapshot> snapshots = project.fetchNewSnapshots();
-//        String projectName = project.getName();
-//        WLDirectoryNode directoryNode = getDirectoryNodeForProjectName(projectName);
-//        List<WritableRepositoryContents> writableRepositories = new LinkedList<WritableRepositoryContents>();
-//        for (Snapshot snapshot : snapshots) {
-//            writableRepositories.add(new GitDirectoryContents(directoryNode.updateFromSnapshot(snapshot),
-//                                                              rootGitDirectory,
-//                                                              projectName,
-//                                                              snapshot));
-//        }
-//        directoryNode.updatePersistentStore(persistentStore, null);
-//        return writableRepositories;
-//    }
-
-//    public WLDirectoryNode createNextDirectoryNodeInProjectFromContents(WLProject project, RawDirectoryContents directoryContents) throws IOException, FailedConnectionException {
-//        return getDirectoryNodeForProjectName(project.getName()).createFromRawDirectoryContents(directoryContents, attDirectory);
-//    }
-
-    public void approveCandidateSnapshot(bullshit candidateSnapshot) {
-        WLDirectoryNode directoryNode = candidateSnapshot.getDirectoryNode();
-        fileStore.put(candidateSnapshot.getProjectName(), directoryNode);
-//        directoryNode.updatePersistentStore(persistentStore, null);
-    }
-
-    private WLDirectoryNode getDirectoryNodeForProjectName(String projectName) {
-        WLDirectoryNode directoryNode = fileStore.get(projectName);
-        if (directoryNode == null) {
-//            directoryNode = new WLDirectoryNode(projectName, attDirectory, rootGitDirectory, persistentStore);
-            fileStore.put(projectName, directoryNode);
-        }
-        return directoryNode;
-    }
-
-}

+ 7 - 4
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/writelatex/model/DataStore.java

@@ -1,14 +1,17 @@
 package uk.ac.ic.wlgitbridge.writelatex.model;
 
 import org.eclipse.jgit.lib.Repository;
-import uk.ac.ic.wlgitbridge.bridge.*;
-import uk.ac.ic.wlgitbridge.writelatex.SnapshotFetcher;
+import uk.ac.ic.wlgitbridge.bridge.CandidateSnapshotCallback;
+import uk.ac.ic.wlgitbridge.bridge.RawDirectory;
+import uk.ac.ic.wlgitbridge.bridge.RawFile;
+import uk.ac.ic.wlgitbridge.bridge.WritableRepositoryContents;
+import uk.ac.ic.wlgitbridge.util.Util;
 import uk.ac.ic.wlgitbridge.writelatex.CandidateSnapshot;
+import uk.ac.ic.wlgitbridge.writelatex.SnapshotFetcher;
 import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException;
 import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotAttachment;
 import uk.ac.ic.wlgitbridge.writelatex.api.request.push.exception.SnapshotPostException;
 import uk.ac.ic.wlgitbridge.writelatex.filestore.GitDirectoryContents;
-import uk.ac.ic.wlgitbridge.writelatex.filestore.store.WLFileStore;
 import uk.ac.ic.wlgitbridge.writelatex.model.db.PersistentStore;
 
 import java.io.File;
@@ -31,7 +34,7 @@ public class DataStore implements CandidateSnapshotCallback {
         persistentStore = new PersistentStore(rootGitDirectory);
         List<String> excludedFromDeletion = persistentStore.getProjectNames();
         excludedFromDeletion.add(".wlgb");
-        WLFileStore.deleteInDirectoryApartFrom(rootGitDirectory, excludedFromDeletion.toArray(new String[] {}));
+        Util.deleteInDirectoryApartFrom(rootGitDirectory, excludedFromDeletion.toArray(new String[]{}));
 
         snapshotFetcher = new SnapshotFetcher();
         resourceFetcher = new ResourceFetcher(persistentStore);

+ 0 - 12
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/writelatex/model/JSONModel.java

@@ -1,12 +0,0 @@
-package uk.ac.ic.wlgitbridge.writelatex.model;
-
-import com.google.gson.JsonElement;
-
-/**
- * Created by Winston on 06/11/14.
- */
-public interface JSONModel {
-
-    public void updateFromJSON(JsonElement json);
-
-}

+ 0 - 10
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/writelatex/model/db/PersistentStoreSource.java

@@ -1,10 +0,0 @@
-package uk.ac.ic.wlgitbridge.writelatex.model.db;
-
-/**
- * Created by Winston on 19/11/14.
- */
-public interface PersistentStoreSource {
-
-    public void initFromPersistentStore(PersistentStore persistentStore);
-
-}