| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package uk.ac.ic.wlgitbridge.writelatex.model;
- 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.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.List;
- /**
- * Created by Winston on 06/11/14.
- */
- public class WLDataModel implements CandidateSnapshotCallback {
- private final Database db;
- private final WLProjectStore projectStore;
- private final WLFileStore fileStore;
- public WLDataModel(String rootGitDirectoryPath) {
- File rootGitDirectory = initRootGitDirectory(rootGitDirectoryPath);
- db = new Database(rootGitDirectory);
- projectStore = new WLProjectStore();
- fileStore = new WLFileStore(rootGitDirectory);
- }
- public List<WritableRepositoryContents> updateProjectWithName(String name) throws FailedConnectionException, InvalidProjectException {
- return fileStore.updateForProject(getProjectWithName(name));
- }
- public WLProject getProjectWithName(String name) {
- return projectStore.getProjectWithName(name);
- }
- public CandidateSnapshot createCandidateSnapshotFromProjectWithContents(String projectName, RawDirectoryContents directoryContents, String hostname) throws SnapshotPostException, IOException, FailedConnectionException {
- return new WLDirectoryNodeSnapshot(getProjectWithName(projectName),
- fileStore.createNextDirectoryNodeInProjectFromContents(getProjectWithName(projectName),
- directoryContents),
- hostname,
- this);
- }
- @Override
- public void approveSnapshot(int versionID, CandidateSnapshot candidateSnapshot) {
- getProjectWithName(candidateSnapshot.getProjectName()).putLatestSnapshot(versionID);
- fileStore.approveCandidateSnapshot(candidateSnapshot);
- }
- private File initRootGitDirectory(String rootGitDirectoryPath) {
- File rootGitDirectory = new File(rootGitDirectoryPath);
- rootGitDirectory.mkdirs();
- return rootGitDirectory;
- }
- }
|