From 5d1c9d436ae6048ca36610e95b76f19fe6ad8866 Mon Sep 17 00:00:00 2001 From: Winston Li Date: Mon, 17 Nov 2014 13:49:19 +0000 Subject: [PATCH] Basic sqlite database being loaded. --- .../filestore/GitDirectoryContents.java | 2 +- .../filestore/store/WLFileStore.java | 7 ++-- .../writelatex/model/WLDataModel.java | 17 +++++++-- .../writelatex/model/db/Database.java | 37 +++++++++++++++++++ 4 files changed, 54 insertions(+), 9 deletions(-) create mode 100644 services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/db/Database.java diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/GitDirectoryContents.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/GitDirectoryContents.java index ce2b93d9f0..122212f880 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/GitDirectoryContents.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/GitDirectoryContents.java @@ -31,7 +31,7 @@ public class GitDirectoryContents implements WritableRepositoryContents { @Override public void write() throws IOException, FailedConnectionException { - WLFileStore.deleteInDirectoryApartFrom(gitDirectory, ".git"); + WLFileStore.deleteInDirectoryApartFrom(gitDirectory, ".git", ".wlgb"); for (FileNode fileNode : fileNodes) { fileNode.writeToDisk(gitDirectory); } 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 0fc8255012..e65cfb8ce7 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 @@ -23,11 +23,10 @@ public class WLFileStore { private final File rootGitDirectory; private final File attDirectory; - public WLFileStore(String rootGitDirectoryPath) { + public WLFileStore(File rootGitDirectory) { fileStore = new HashMap(); - rootGitDirectory = new File(rootGitDirectoryPath); - rootGitDirectory.mkdirs(); - deleteInDirectory(rootGitDirectory); + this.rootGitDirectory = rootGitDirectory; + deleteInDirectoryApartFrom(rootGitDirectory, ".wlgb"); attDirectory = new File(rootGitDirectory, ".wlgb/atts"); attDirectory.mkdirs(); } 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 a09e42a623..84b667ebec 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 @@ -1,16 +1,17 @@ package uk.ac.ic.wlgitbridge.writelatex.model; -import org.sqlite.JDBC; import uk.ac.ic.wlgitbridge.bridge.CandidateSnapshot; import uk.ac.ic.wlgitbridge.bridge.CandidateSnapshotCallback; import uk.ac.ic.wlgitbridge.bridge.RawDirectoryContents; import uk.ac.ic.wlgitbridge.bridge.WritableRepositoryContents; -import uk.ac.ic.wlgitbridge.writelatex.api.request.push.exception.SnapshotPostException; import uk.ac.ic.wlgitbridge.writelatex.WLDirectoryNodeSnapshot; import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException; 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 uk.ac.ic.wlgitbridge.writelatex.model.db.Database; +import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.List; @@ -21,13 +22,15 @@ import java.util.Map; */ public class WLDataModel implements CandidateSnapshotCallback { - private final JDBC jbdc = null; + private final Database db; private final Map projects; private final WLFileStore fileStore; public WLDataModel(String rootGitDirectoryPath) { + File rootGitDirectory = initRootGitDirectory(rootGitDirectoryPath); + db = new Database(rootGitDirectory); projects = new HashMap(); - fileStore = new WLFileStore(rootGitDirectoryPath); + fileStore = new WLFileStore(rootGitDirectory); } public List updateProjectWithName(String name) throws FailedConnectionException, InvalidProjectException { @@ -59,4 +62,10 @@ public class WLDataModel implements CandidateSnapshotCallback { fileStore.approveCandidateSnapshot(candidateSnapshot); } + private File initRootGitDirectory(String rootGitDirectoryPath) { + File rootGitDirectory = new File(rootGitDirectoryPath); + rootGitDirectory.mkdirs(); + return rootGitDirectory; + } + } diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/db/Database.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/db/Database.java new file mode 100644 index 0000000000..e0d86bfa52 --- /dev/null +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/db/Database.java @@ -0,0 +1,37 @@ +package uk.ac.ic.wlgitbridge.writelatex.model.db; + +import java.io.File; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.Statement; + +/** + * Created by Winston on 17/11/14. + */ +public class Database { + + public Database(File rootGitDirectory) { + System.out.println("Loading data..."); + Connection c = null; + Statement stmt = null; + try { + Class.forName("org.sqlite.JDBC"); + c = DriverManager.getConnection("jdbc:sqlite:" + rootGitDirectory.getAbsolutePath() + "/.wlgb/wlgb.db"); + + stmt = c.createStatement(); + String sql = "CREATE TABLE IF NOT EXISTS COMPANY " + + "(ID INT PRIMARY KEY NOT NULL," + + " NAME TEXT NOT NULL, " + + " AGE INT NOT NULL, " + + " ADDRESS CHAR(50), " + + " SALARY REAL)"; + stmt.executeUpdate(sql); + stmt.close(); + c.close(); + } catch ( Exception e ) { + System.err.println( e.getClass().getName() + ": " + e.getMessage() ); + System.exit(0); + } + } + +}