public Id getDsRef() { return dsd.getId() ; } }
public Id getId() { return dsDescription.getId(); }
public Id getDataSourceId() { return dsd.getId(); }
public PatchLogBase(DataSourceDescription dsd, PatchLogIndex logIndex, PatchStorage patchStorage, PatchStore patchStore) { this.dsd = dsd; // Currently, the log id is the id of the DataSource. this.logId = dsd.getId(); this.logIndex = logIndex; this.patchStorage = patchStorage; this.patchStore = patchStore; initFromStorage(); }
protected Optional<Id> find(Predicate<DataSourceDescription> predicate) { List <DataSourceDescription> all = dLink.listDescriptions(); return all.stream() .filter(predicate) .findFirst() .map(dsd->dsd.getId()); } }
static Optional<Id> find(DeltaLink dLink, String name) { Objects.requireNonNull(dLink); Objects.requireNonNull(name); List <DataSourceDescription> all = dLink.listDescriptions(); return all.stream() .filter(dsd-> Objects.equals(dsd.getName(), name)) .findFirst() .map(dsd->dsd.getId()); } }
private PatchLogFile(DataSourceDescription dsd, PatchStore patchStore, Location location) { this.dsd = dsd; this.logId = dsd.getId(); this.fileStore = FileStore.attach(location, "patch"); this.patchStore = patchStore; initFromFileStore(); }
@Override public String toString() { return String.format("[DataSource:%s %s (%s)]", dsDescription.getName(), dsDescription.getId(), patchLog.getPatchStore().getProvider().getShortName()); } }
/** Create and properly register a new {@link PatchLog}. * Call this to add new patch logs including remote changes. * This method calls {@link #create} provided by the subclass. * This method called by PatchStoreZk when a new log appears. */ final protected PatchLog createPatchLog(DataSourceDescription dsd) { Id dsRef = dsd.getId(); PatchLog patchLog = newPatchLog(dsd); logs.put(dsRef, patchLog); if ( dataRegistry != null ) { DataSource dataSource = new DataSource(dsd, patchLog); // XXX Isn't this done in LocalServer.createDataSource$ as well? dataRegistry.add(dataSource); } return patchLog; }
/** Return a new {@link PatchLog}, which must already exist and be registered. */ public PatchLog connectLog(DataSourceDescription dsd) { FmtLog.info(LOG, "Connect log: %s", dsd); checkInitialized(); PatchLog pLog = getLog(dsd.getId()); if ( pLog == null ) pLog = createPatchLog(dsd); return pLog; }
/** * Attach to an existing {@code DataSource} with a fresh * {@link DatasetGraph} as local state. The caller undertakes to only access * the {@code DatasetGraph} through a {@link DeltaConnection} obtained from * this {@code DeltaClient}. * <p> * This is a specialised operation - using a managed dataset (see * {@link #attach(String, LocalStorageType)}) is preferred. * <p> * The {@code DatasetGraph} is assumed to empty and is brought up-to-date. * The client must be registered with the {@code DeltaLink}. * <p> * {@link #connect(Id, SyncPolicy)} must be called later to use the dataset. */ public Id attachExternal(String name, DatasetGraph dsg) { DataSourceDescription dsd = dLink.getDataSourceDescriptionByName(name); if ( dsd == null ) throw new DeltaBadRequestException("Can't attach: no such link data source : "+name); setupExternal(dsd, dsg); return dsd.getId(); }
private void setupState$(DataSourceDescription dsd, LocalStorageType storageType) { Id datasourceId = dsd.getId(); if ( zone.exists(datasourceId) ) { DataState dataState = zone.get(datasourceId); throw new DeltaConfigException("Local data source management already exists: "+dataState.getDatasourceName()); } DataState dataState = zone.create(datasourceId, dsd.getName(), dsd.getUri(), storageType); }
protected void exec1(String fn) { Id dsRef = getDescription().getId(); PatchLogInfo info = dLink.getPatchLogInfo(dsRef); Id prev = info.getLatestPatch(); RDFPatch body = toPatch(fn); // Header. PatchHeader header = RDFPatchOps.makeHeader(Id.create().asNode(), prev==null?null:prev.asNode()); RDFPatch patch = RDFPatchOps.withHeader(header, body); //RDFPatchOps.write(System.out, patch); // Add previous. Version version = dLink.append(dsRef, patch); System.out.printf("Version = %s\n", version.value()); }
@Override protected void execCmd() { if ( getPositional().isEmpty() ) { Id dsRef = getDescription().getId(); PatchLogInfo logInfo = dLink.getPatchLogInfo(dsRef); if ( ! logInfo.getMaxVersion().isValid()) { throw new CmdException(getCommandName()+" : Empty log"); } exec1(logInfo.getMaxVersion()); return ; } getPositional().forEach(v->{ long patchVersion; try { patchVersion = Integer.parseInt(v); } catch (NumberFormatException ex) { throw new CmdException(getCommandName()+" : Invalid version"); } exec1(Version.create(patchVersion)); }); }
protected void exec1(Version patchVersion) { Id patchId = null; Id dsRef = getDescription().getId(); RDFPatch patch; try { patch = dLink.fetch(dsRef, patchVersion); if ( patch == null ) throw new CmdException(getCommandName()+" : No such patch : "+patchVersion); else RDFPatchOps.write(System.out, patch); } catch (DeltaNotFoundException ex) { // Bad dsRef. throw new CmdException(getCommandName()+" : No such patch : "+patchVersion); } }
private void setupExternal(DataSourceDescription dsd, DatasetGraph dsg) { Id datasourceId = dsd.getId(); if ( zone.exists(datasourceId) ) { DataState dataState = zone.get(datasourceId); throw new DeltaConfigException("Can't attach: data source already exists locally: "+dataState.getDatasourceName()); } DataState dataState = zone.create(datasourceId, dsd.getName(), dsd.getUri(), LocalStorageType.EXTERNAL); externalStorage(datasourceId, dsg); }
@Test public void patchStore_1() { PatchStore ps = provider(); DataRegistry dataRegistry = ps.getDataRegistry(); DataSourceDescription dsdSetup = new DataSourceDescription(Id.create(), "ABC", "http://example/ABC"); PatchLog patchLog = ps.createLog(dsdSetup); Id logId = patchLog.getLogId(); assertEquals(dsdSetup.getId(), logId); assertNotNull(dataRegistry.getByName("ABC")); assertFalse(dataRegistry.isEmpty()); assertTrue(ps.logExists(dsdSetup.getId())); assertEquals(patchLog, ps.getLog(logId)); }
@Test public void cmd_mk() { String LOG_NAME = "ABC_1"; cmdq("mk", "--server="+serverURL, LOG_NAME); DataSourceDescription dsd = dLink.getDataSourceDescriptionByName(LOG_NAME); assertNotNull(dsd); assertEquals(LOG_NAME, dsd.getName()); List<DataSourceDescription> list = dLink.listDescriptions(); assertEquals(1, list.size()); DeltaLog log = new DeltaLog(dLink, dsd.getId()); PatchLogInfo info = log.info(); assertEquals(0, log.getCurrentVersion().value()); }
@Test public void patchStore_2() { PatchStore ps = provider(); DataRegistry dataRegistry = ps.getDataRegistry(); DataSourceDescription dsdSetup = new DataSourceDescription(Id.create(), "ABC", "http://example/ABC"); PatchLog patchLog = ps.createLog(dsdSetup); assertEquals(dsdSetup.getId(), patchLog.getLogId()); Id logId = patchLog.getLogId(); assertFalse(dataRegistry.isEmpty()); assertNotNull(dataRegistry.getByName("ABC")); assertTrue(ps.logExists(dsdSetup.getId())); assertNotNull(ps.getLog(logId)); ps.release(patchLog); assertTrue(dataRegistry.isEmpty()); assertNull(dataRegistry.getByName("ABC")); assertFalse(ps.logExists(dsdSetup.getId())); assertNull(ps.getLog(logId)); }
private static void verifyServer(String URL) { DeltaLink dLink = DeltaLinkHTTP.connect(URL); cmdq("mk", "--server="+URL, "ABC"); DataSourceDescription dsd = dLink.getDataSourceDescriptionByName("ABC"); assertNotNull(dsd); cmdq("append", "--server="+URL, "--log=ABC", "testing/data.rdfp"); DeltaLog log = new DeltaLog(dLink, dsd.getId()); PatchLogInfo info = log.info(); assertEquals(1, log.getCurrentVersion().value()); cmdq("fetch", "--server="+URL, "--log=ABC", "1"); cmdq("rm", "--server="+URL, "ABC"); DataSourceDescription dsd1 = dLink.getDataSourceDescriptionByName("ABC"); assertNull(dsd1); } }