diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/store/WLFileStore.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/store/WLFileStore.java index e65cfb8ce7..9d967c0567 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/store/WLFileStore.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/store/WLFileStore.java @@ -9,6 +9,7 @@ import uk.ac.ic.wlgitbridge.writelatex.filestore.GitDirectoryContents; import uk.ac.ic.wlgitbridge.writelatex.filestore.node.WLDirectoryNode; import uk.ac.ic.wlgitbridge.writelatex.model.Snapshot; import uk.ac.ic.wlgitbridge.writelatex.model.WLProject; +import uk.ac.ic.wlgitbridge.writelatex.model.db.PersistentStoreAPI; import java.io.File; import java.io.IOException; @@ -26,11 +27,15 @@ public class WLFileStore { public WLFileStore(File rootGitDirectory) { fileStore = new HashMap(); this.rootGitDirectory = rootGitDirectory; - deleteInDirectoryApartFrom(rootGitDirectory, ".wlgb"); attDirectory = new File(rootGitDirectory, ".wlgb/atts"); attDirectory.mkdirs(); } + public WLFileStore(File rootGitDirectory, PersistentStoreAPI persistentStoreAPI) { + this(rootGitDirectory); + + } + public static void deleteInDirectory(File directory) { deleteInDirectoryApartFrom(directory); } diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLDataModel.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLDataModel.java index 14123e1e59..0522491126 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLDataModel.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLDataModel.java @@ -30,6 +30,10 @@ public class WLDataModel implements CandidateSnapshotCallback { persistentStore = new WLGBPersistentStore(rootGitDirectory); projectStore = persistentStore.loadProjectStore(); fileStore = persistentStore.loadFileStore(); + List excludedFromDeletion = projectStore.getProjectNames(); + excludedFromDeletion.add(".wlgb"); + System.out.println("Not deleting: " + excludedFromDeletion); + WLFileStore.deleteInDirectoryApartFrom(rootGitDirectory, excludedFromDeletion.toArray(new String[]{})); } public List updateProjectWithName(String name) throws FailedConnectionException, InvalidProjectException { diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLProjectStore.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLProjectStore.java index 098ab0db04..060aadec41 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLProjectStore.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLProjectStore.java @@ -3,7 +3,9 @@ package uk.ac.ic.wlgitbridge.writelatex.model; import uk.ac.ic.wlgitbridge.writelatex.model.db.PersistentStoreAPI; import uk.ac.ic.wlgitbridge.writelatex.model.db.WLDatabaseSource; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -17,6 +19,11 @@ public class WLProjectStore implements WLDatabaseSource { projects = new HashMap(); } + public WLProjectStore(PersistentStoreAPI persistentStore) { + this(); + initFromDatabase(persistentStore); + } + public WLProject getProjectWithName(String name) { WLProject project; if (projects.containsKey(name)) { @@ -28,6 +35,10 @@ public class WLProjectStore implements WLDatabaseSource { return project; } + public List getProjectNames() { + return new ArrayList(projects.keySet()); + } + @Override public void initFromDatabase(PersistentStoreAPI database) { diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/db/WLGBPersistentStore.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/db/WLGBPersistentStore.java index 9e0b3f22ee..26c898db05 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/db/WLGBPersistentStore.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/db/WLGBPersistentStore.java @@ -30,12 +30,12 @@ public class WLGBPersistentStore implements PersistentStoreAPI { @Override public WLProjectStore loadProjectStore() { - return new WLProjectStore(); + return new WLProjectStore(this); } @Override public WLFileStore loadFileStore() { - return new WLFileStore(rootGitDirectory); + return new WLFileStore(rootGitDirectory, this); } @Override