public FileBlobStore(final Platform platform) { Optional<URI> repoPath = new ResolveGeogigURI(platform, null).call(); Preconditions.checkState(repoPath.isPresent(), "Not inside a geogig directory"); URI uri = repoPath.get(); Preconditions.checkState("file".equals(uri.getScheme()), "Repository URL is not file system based: %s", uri); File repoLocation = new File(uri); this.repositoryDirectory = repoLocation; }
File getGeoGigDirectory() { final Optional<URI> repoUrl = new ResolveGeogigURI(platform, hints).call(); if (!repoUrl.isPresent()) { throw new IllegalStateException("Can't find geogig repository home"); } URI uri = repoUrl.get(); Preconditions.checkState("file".equals(uri.getScheme()), "Can't create BDB JE Environment on a non file repository URI: %s", uri); return new File(uri); }
public FileBlobStore(final Platform platform) { Optional<URI> repoPath = new ResolveGeogigURI(platform, null).call(); Preconditions.checkState(repoPath.isPresent(), "Not inside a geogig directory"); URI uri = repoPath.get(); Preconditions.checkState("file".equals(uri.getScheme()), "Repository URL is not file system based: %s", uri); File repoLocation = new File(uri); this.repositoryDirectory = repoLocation; }
public RocksdbObjectStore(Platform platform, @Nullable Hints hints, String databaseName) { checkNotNull(platform); this.platform = platform; this.hints = hints; Optional<URI> repoUriOpt = new ResolveGeogigURI(platform, hints).call(); checkArgument(repoUriOpt.isPresent(), "couldn't resolve geogig directory"); URI uri = repoUriOpt.get(); checkArgument("file".equals(uri.getScheme())); this.path = new File(new File(uri), databaseName).getAbsolutePath(); this.readOnly = hints == null ? false : hints.getBoolean(Hints.OBJECTS_READ_ONLY); }
public @Inject RocksdbConflictsDatabase(Platform platform, @Nullable Hints hints) { checkNotNull(platform); Optional<URI> repoUriOpt = new ResolveGeogigURI(platform, hints).call(); checkArgument(repoUriOpt.isPresent(), "couldn't resolve geogig directory"); URI uri = repoUriOpt.get(); checkArgument("file".equals(uri.getScheme())); this.baseDirectory = new File(new File(uri), "conflicts"); if (baseDirectory.exists()) { checkArgument(baseDirectory.isDirectory() && baseDirectory.canWrite()); } else { checkState(baseDirectory.mkdir(), "unable to create " + baseDirectory.getAbsolutePath()); } }
@Inject public RocksdbGraphDatabase(Platform platform, Hints hints) { this.readOnly = hints == null ? false : hints.getBoolean(Hints.OBJECTS_READ_ONLY); Optional<URI> uri = new ResolveGeogigURI(platform, hints).call(); Preconditions.checkArgument(uri.isPresent(), "not in a geogig directory"); Preconditions.checkArgument("file".equals(uri.get().getScheme()), "Repository URI is not file://"); File basedir = new File(uri.get()); this.dbdir = new File(basedir, "graph.rocksdb"); }
public RocksdbObjectStore(Platform platform, @Nullable Hints hints, String databaseName) { checkNotNull(platform); this.platform = platform; this.hints = hints; Optional<URI> repoUriOpt = new ResolveGeogigURI(platform, hints).call(); checkArgument(repoUriOpt.isPresent(), "couldn't resolve geogig directory"); URI uri = repoUriOpt.get(); checkArgument("file".equals(uri.getScheme())); this.path = new File(new File(uri), databaseName).getAbsolutePath(); this.readOnly = hints == null ? false : hints.getBoolean(Hints.OBJECTS_READ_ONLY); }
public @Inject RocksdbConflictsDatabase(Platform platform, @Nullable Hints hints) { checkNotNull(platform); Optional<URI> repoUriOpt = new ResolveGeogigURI(platform, hints).call(); checkArgument(repoUriOpt.isPresent(), "couldn't resolve geogig directory"); URI uri = repoUriOpt.get(); checkArgument("file".equals(uri.getScheme())); this.baseDirectory = new File(new File(uri), "conflicts"); if (baseDirectory.exists()) { checkArgument(baseDirectory.isDirectory() && baseDirectory.canWrite()); } else { checkState(baseDirectory.mkdir(), "unable to create " + baseDirectory.getAbsolutePath()); } }
@Inject public RocksdbGraphDatabase(Platform platform, Hints hints) { this.readOnly = hints == null ? false : hints.getBoolean(Hints.OBJECTS_READ_ONLY); Optional<URI> uri = new ResolveGeogigURI(platform, hints).call(); Preconditions.checkArgument(uri.isPresent(), "not in a geogig directory"); Preconditions.checkArgument("file".equals(uri.get().getScheme()), "Repository URI is not file://"); File basedir = new File(uri.get()); this.dbdir = new File(basedir, "graph.rocksdb"); }
@Override public synchronized File getTempDir() { Optional<URI> url = new ResolveGeogigURI(this, null).call(); final File tmpDir; if (url.isPresent()) { URI uri = url.get(); tmpDir = new File(new File(uri), "tmp"); Preconditions.checkState(tmpDir.exists() || tmpDir.mkdir(), "unable to create directory %s", tmpDir.getAbsolutePath()); } else { String systmplocation = System.getProperty("java.io.tmpdir"); tmpDir = new File(systmplocation); } return tmpDir; }
/** * Creates the reference database. */ @Override public void create() { Optional<URI> envHome = new ResolveGeogigURI(platform, hints).call(); checkState(envHome.isPresent(), "Not inside a geogig directory"); final URI envURL = envHome.get(); if (!"file".equals(envURL.getScheme())) { throw new UnsupportedOperationException( "This References Database works only against file system repositories. " + "Repository location: " + envURL); } File repoDir = new File(envURL); File refs = new File(repoDir, "refs"); if (!refs.exists() && !refs.mkdir()) { throw new IllegalStateException( "Cannot create refs directory '" + refs.getAbsolutePath() + "'"); } this.envHome = repoDir; }
/** * Creates the reference database. */ @Override public void create() { Optional<URI> envHome = new ResolveGeogigURI(platform, hints).call(); checkState(envHome.isPresent(), "Not inside a geogig directory"); final URI envURL = envHome.get(); if (!"file".equals(envURL.getScheme())) { throw new UnsupportedOperationException( "This References Database works only against file system repositories. " + "Repository location: " + envURL); } File repoDir = new File(envURL); File refs = new File(repoDir, "refs"); if (!refs.exists() && !refs.mkdir()) { throw new IllegalStateException( "Cannot create refs directory '" + refs.getAbsolutePath() + "'"); } this.envHome = repoDir; }
@Override public ConfigDatabase get() { Platform platform = context.platform(); Optional<URI> uri = new ResolveGeogigURI(platform, hints).call(); ConfigDatabase config = null; if (uri.isPresent()) { config = RepositoryResolver.resolveConfigDatabase(uri.get(), context, false); } else { // if there's no repository URI, then we can only do global operations config = IniFileConfigDatabase.globalOnly(platform); } return config; } }
@Override public ConfigDatabase get() { Platform platform = context.platform(); Optional<URI> uri = new ResolveGeogigURI(platform, hints).call(); ConfigDatabase config = null; if (uri.isPresent()) { config = RepositoryResolver.resolveConfigDatabase(uri.get(), context, false); } else { // if there's no repository URI, then we can only do global operations config = IniFileConfigDatabase.globalOnly(platform); } return config; } }
@Test public void test() throws Exception { File workingDir = tmpFolder.newFolder("fakeWorkingDir"); File fakeRepo = new File(workingDir, ".geogig"); fakeRepo.mkdirs(); Platform platform = mock(Platform.class); when(platform.pwd()).thenReturn(workingDir); URI resolvedRepoDir = new ResolveGeogigURI(platform, null).call().get(); assertEquals(fakeRepo.toURI(), resolvedRepoDir); workingDir = new File(new File(workingDir, "subdir1"), "subdir2"); workingDir.mkdirs(); when(platform.pwd()).thenReturn(workingDir); resolvedRepoDir = new ResolveGeogigURI(platform, null).call().get(); assertEquals(fakeRepo.toURI(), resolvedRepoDir); when(platform.pwd()).thenReturn(tmpFolder.getRoot()); assertFalse(new ResolveGeogigURI(platform, null).call().isPresent()); }
@Test public void test() throws Exception { File workingDir = tmpFolder.newFolder("fakeWorkingDir"); File fakeRepo = new File(workingDir, ".geogig"); fakeRepo.mkdirs(); Platform platform = mock(Platform.class); when(platform.pwd()).thenReturn(workingDir); URI resolvedRepoDir = new ResolveGeogigURI(platform, null).call().get(); assertEquals(fakeRepo.toURI(), resolvedRepoDir); workingDir = new File(new File(workingDir, "subdir1"), "subdir2"); workingDir.mkdirs(); when(platform.pwd()).thenReturn(workingDir); resolvedRepoDir = new ResolveGeogigURI(platform, null).call().get(); assertEquals(fakeRepo.toURI(), resolvedRepoDir); when(platform.pwd()).thenReturn(tmpFolder.getRoot()); assertFalse(new ResolveGeogigURI(platform, null).call().isPresent()); }
@Override public void close() { if (!isOpen()) { return; } graph = null; Optional<URI> url = platform == null ? Optional.absent() : new ResolveGeogigURI(platform, null).call(); if (url.isPresent()) { synchronized (graphs) { URI key = url.get(); Ref ref = graphs.get(key); if (ref != null && ref.release() <= -1) { ref.destroy(); graphs.remove(key); } } } }
@Override public void close() { if (!isOpen()) { return; } graph = null; Optional<URI> url = platform == null ? Optional.absent() : new ResolveGeogigURI(platform, null).call(); if (url.isPresent()) { synchronized (graphs) { URI key = url.get(); Ref ref = graphs.get(key); if (ref != null && ref.release() <= -1) { ref.destroy(); graphs.remove(key); } } } }
@Override public void open() { if (isOpen()) { return; } Optional<URI> url = platform == null ? Optional.absent() : new ResolveGeogigURI(platform, null).call(); if (url.isPresent()) { synchronized (graphs) { URI key = url.get(); if (!graphs.containsKey(key)) { graphs.put(key, new Ref(new Graph())); } graph = graphs.get(key).acquire(); } } else { graph = new Graph(); } }
@Override public void open() { if (isOpen()) { return; } Optional<URI> url = platform == null ? Optional.absent() : new ResolveGeogigURI(platform, null).call(); if (url.isPresent()) { synchronized (graphs) { URI key = url.get(); if (!graphs.containsKey(key)) { graphs.put(key, new Ref(new Graph())); } graph = graphs.get(key).acquire(); } } else { graph = new Graph(); } }