From 95a17beef45ab1a55c951299777c1f41b93f9a64 Mon Sep 17 00:00:00 2001 From: Winston Li Date: Fri, 14 Nov 2014 14:40:05 +0000 Subject: [PATCH] Worked on file store. --- .../src/uk/ac/ic/wlgitbridge/bridge/Writable.java | 10 ++++++++++ .../writelatex/filestore/FileIndexStore.java | 14 ++++++++------ .../writelatex/filestore/WLFileStore.java | 3 ++- .../writelatex/filestore/node/AttachmentNode.java | 10 +++++++++- .../writelatex/filestore/node/BlobNode.java | 12 +++++++++++- .../writelatex/filestore/node/FileNode.java | 8 +++++++- .../writelatex/filestore/node/WLDirectoryNode.java | 7 ++++--- 7 files changed, 51 insertions(+), 13 deletions(-) create mode 100644 services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/Writable.java diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/Writable.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/Writable.java new file mode 100644 index 0000000000..3ea019791c --- /dev/null +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/Writable.java @@ -0,0 +1,10 @@ +package uk.ac.ic.wlgitbridge.bridge; + +/** + * Created by Winston on 14/11/14. + */ +public interface Writable { + + public void write(); + +} diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/FileIndexStore.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/FileIndexStore.java index 9fe91fe360..85e64633e4 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/FileIndexStore.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/FileIndexStore.java @@ -1,5 +1,7 @@ package uk.ac.ic.wlgitbridge.writelatex.filestore; +import uk.ac.ic.wlgitbridge.writelatex.filestore.node.FileNode; + import java.util.HashMap; import java.util.Map; @@ -8,16 +10,16 @@ import java.util.Map; */ public class FileIndexStore { - private final Map blobHashMappings; - private final Map urlMappings; + private final Map blobHashMappings; + private final Map urlMappings; public FileIndexStore() { - blobHashMappings = new HashMap(); - urlMappings = new HashMap(); + blobHashMappings = new HashMap(); + urlMappings = new HashMap(); } - public void addAttachment(String url, String filePath) { - urlMappings.put(url, filePath); + public void addAttachment(String url, FileNode fileNode) { + urlMappings.put(url, fileNode); } } diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/WLFileStore.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/WLFileStore.java index 481054c9db..65974cf8af 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/WLFileStore.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/WLFileStore.java @@ -1,5 +1,6 @@ package uk.ac.ic.wlgitbridge.writelatex.filestore; +import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException; import uk.ac.ic.wlgitbridge.writelatex.filestore.node.WLDirectoryNode; import uk.ac.ic.wlgitbridge.writelatex.model.WLProject; @@ -19,7 +20,7 @@ public class WLFileStore { this.rootGitDirectoryPath = rootGitDirectoryPath; } - public void updateForProject(WLProject project) { + public void updateForProject(WLProject project) throws FailedConnectionException { String projectName = project.getName(); WLDirectoryNode directoryNode = fileStore.get(projectName); if (directoryNode == null) { diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/AttachmentNode.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/AttachmentNode.java index 325907d4ac..f7a06c0acc 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/AttachmentNode.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/AttachmentNode.java @@ -1,6 +1,8 @@ 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.filestore.FileIndexStore; import java.util.Map; @@ -9,8 +11,14 @@ import java.util.Map; */ public class AttachmentNode extends FileNode { - public AttachmentNode(SnapshotAttachment snapshotAttachment, Map context) { + public AttachmentNode(SnapshotAttachment snapshotAttachment, Map context, FileIndexStore fileIndexes) throws FailedConnectionException { super(snapshotAttachment, context); + + } + + @Override + public byte[] initContents() { + return new byte[0]; } } diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/BlobNode.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/BlobNode.java index 01ff99177b..49235ca6b1 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/BlobNode.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/BlobNode.java @@ -1,6 +1,8 @@ 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.SnapshotFile; +import uk.ac.ic.wlgitbridge.writelatex.filestore.FileIndexStore; import java.util.Map; @@ -9,8 +11,16 @@ import java.util.Map; */ public class BlobNode extends FileNode { - public BlobNode(SnapshotFile snapshotFile, Map context) { + private SnapshotFile snapshotFile; + + public BlobNode(SnapshotFile snapshotFile, Map context) throws FailedConnectionException { super(snapshotFile, context); + this.snapshotFile = snapshotFile; + } + + @Override + public byte[] initContents() throws FailedConnectionException { + return snapshotFile.getContents(); } } diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/FileNode.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/FileNode.java index 08ec4d80ac..d04e602c7f 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/FileNode.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/FileNode.java @@ -1,6 +1,8 @@ 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.SnapshotFile; +import uk.ac.ic.wlgitbridge.writelatex.filestore.FileIndexStore; import java.util.Map; @@ -11,15 +13,19 @@ public abstract class FileNode { private final String filePath; private final boolean unchanged; + private byte[] contents; - public FileNode(SnapshotFile snapshotFile, Map context) { + public FileNode(SnapshotFile snapshotFile, Map context) throws FailedConnectionException { filePath = snapshotFile.getPath(); FileNode currentFileNode = context.get(filePath); unchanged = currentFileNode != null && equals(currentFileNode); + contents = initContents(); } public String getFilePath() { return filePath; } + public abstract byte[] initContents() throws FailedConnectionException; + } diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/WLDirectoryNode.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/WLDirectoryNode.java index 516f070f38..dd6211b5b4 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/WLDirectoryNode.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/WLDirectoryNode.java @@ -1,5 +1,6 @@ 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.filestore.FileIndexStore; @@ -16,7 +17,7 @@ import java.util.Map; public class WLDirectoryNode { private Map files; - private final FileIndexStore fileIndexes; + private FileIndexStore fileIndexes; private final String rootGitDirectoryPath; public WLDirectoryNode(String rootGitDirectoryPath, String projectName) { @@ -25,7 +26,7 @@ public class WLDirectoryNode { fileIndexes = new FileIndexStore(); } - public void updateFromSnapshot(Snapshot snapshot) { + public void updateFromSnapshot(Snapshot snapshot) throws FailedConnectionException { Map updatedFiles = new HashMap(); List srcs = snapshot.getSrcs(); List atts = snapshot.getAtts(); @@ -34,7 +35,7 @@ public class WLDirectoryNode { updatedFiles.put(blobNode.getFilePath(), blobNode); } for (SnapshotAttachment att : atts) { - AttachmentNode attachmentNode = new AttachmentNode(att, files); + AttachmentNode attachmentNode = new AttachmentNode(att, files, fileIndexes); updatedFiles.put(attachmentNode.getFilePath(), attachmentNode); } files = updatedFiles;