public void logDetails() { // Information. List<DataSource> sources = listDataSources(); if ( sources.isEmpty() ) FmtLog.info(LOG, " No data sources"); else { //descriptions.forEach(dsd->FmtLog.info(LOG, " Data source : %s", dsd)); // Print nicely. sources.sort( (ds1, ds2)-> ds1.getName().compareTo(ds2.getName()) ); sources.forEach(ds->{ PatchLogInfo info = ds.getPatchLog().getInfo(); FmtLog.info(Delta.DELTA_LOG, " Data source: %s version [%s,%s]", info.getDataSourceDescr(), verString(info.getMinVersion()), verString(info.getMaxVersion()) ); }); } }
/** Actively get the remote latest patch id */ public Id getRemotePatchId() { checkDeltaConnection(); return getPatchLogInfo().getLatestPatch(); }
public JsonObject asJson() { return JSONX.buildObject(b->addJsonFields(b)); }
private void detailsByDSD(DataSourceDescription dsd) { PatchLogInfo logInfo = dLink.getPatchLogInfo(dsd.getId()); if ( logInfo == null ) { // Some thing bad somewhere. System.out.printf("[%s %s <%s> [no info] %s]\n", dsd.getId(), dsd.getName(), dsd.getUri()); return; } if ( Version.INIT.equals(logInfo.getMinVersion()) && Version.INIT.equals(logInfo.getMaxVersion()) ) { if ( logInfo.getLatestPatch() != null ) // Should not happen. System.out.printf("[%s %s <%s> [empty] %s]\n", dsd.getId(), dsd.getName(), dsd.getUri(), logInfo.getLatestPatch().toString()); else System.out.printf("[%s %s <%s> [empty]]\n", dsd.getId(), dsd.getName(), dsd.getUri()); return; } if ( logInfo.getMinVersion().isValid() ) { System.out.printf("[%s %s <%s> [%s,%s] %s]\n", dsd.getId(), dsd.getName(), dsd.getUri(), logInfo.getMinVersion(), logInfo.getMaxVersion(), (logInfo.getLatestPatch()==null)?"<no patches>":logInfo.getLatestPatch().toString() ); } }
/** Return our local track of the remote version */ private Version getRemoteVersionCached() { //checkDeltaConnection(); if ( remote.get() == null ) return Version.UNSET; return remote.get().getMaxVersion(); }
@Override public PatchLogInfo getInfo() { // AbstractPatchLog return new PatchLogInfo(dsd, getEarliestVersion(), getLatestVersion(), getLatestId()); }
private PatchLogInfo getPatchLogInfo(JsonObject arg) { JsonObject obj = rpc(DeltaConst.OP_DESCR_LOG, arg); if ( obj.isEmpty() ) return null; return PatchLogInfo.fromJson(obj); }
@Test public void patchLog_1_empty() { PatchLog patchLog = patchLog(); boolean b = patchLog.isEmpty(); assertTrue(patchLog.isEmpty()); PatchLogInfo x = patchLog.getInfo(); assertEquals(null, x.getLatestPatch()); assertEquals(Version.INIT, x.getMaxVersion()); assertEquals(Version.INIT, x.getMinVersion()); }
/** Get the current version: if this is an HTTP connection, this causes network traffic. */ public default Version getCurrentVersion(Id dsRef) { return getPatchLogInfo(dsRef).getMaxVersion(); }
public static PatchLogInfo fromJson(JsonObject obj) { DataSourceDescription dsd = DataSourceDescription.fromJson(obj); Version minVer = Version.fromJson(obj, F_MINVER, Version.UNSET) ; Version maxVer = Version.fromJson(obj, F_MAXVER, Version.UNSET) ; String latestPatchStr = JSONX.getStrOrNull(obj, F_LATEST); Id latestPatch = null; if ( latestPatchStr != null && !latestPatchStr.isEmpty() ) latestPatch = Id.fromString(latestPatchStr); return new PatchLogInfo(dsd, minVer, maxVer, latestPatch); }
@Override public List<PatchLogInfo> listPatchLogInfo() { JsonObject obj = rpc(DeltaConst.OP_LIST_LOG_INFO, emptyObject); JsonArray array = obj.get(DeltaConst.F_ARRAY).getAsArray(); List<PatchLogInfo> x = array.stream() .map(jv->PatchLogInfo.fromJson(jv.getAsObject())) .collect(Collectors.toList()) ; return x ; }
@Test public void patchLog_2_singlePatch() { PatchLog patchLog = patchLog(); assertTrue(patchLog.isEmpty()); RDFPatch patch = RDFPatchOps.emptyPatch(); Version v = patchLog.append(patch); assertEquals(version_1, v); assertFalse(patchLog.isEmpty()); RDFPatch patch1 = patchLog.fetch(version_1); assertNotNull(patch1); PatchLogInfo x = patchLog.getInfo(); assertEquals(patch.getId(), x.getLatestPatch().asNode()); x.getMaxVersion(); assertEquals(Version.FIRST, x.getMaxVersion()); assertEquals(Version.FIRST, x.getMinVersion()); RDFPatch patch2 = patchLog.fetch(version_2); assertNull(patch2); }
/** Actively get the remote version */ public Version getRemoteVersionLatest() { checkDeltaConnection(); PatchLogInfo info = getPatchLogInfo(); if ( info == null ) return Version.UNSET; return info.getMaxVersion(); }
/** Actively get the remote log latest id */ public Id getRemoteIdLatest() { checkDeltaConnection(); PatchLogInfo logInfo = dLink.getPatchLogInfo(datasourceId); if ( logInfo == null ) { // Can this happen? Deleted datasourceId? FmtLog.warn(LOG, "Failed to get remote latest patchId"); return null; } return logInfo.getLatestPatch(); }
@Override public PatchLogInfo getInfo() { // Called when polling for changes during dataset sync. synchronized(this) { logIndex.syncVersionInfo(); return new PatchLogInfo(dsd, getEarliestVersion(), getLatestVersion(), getLatestId()); } }
/** Insert as a nested-object into the builder */ public void addJsonObject(JsonBuilder b) { b.startObject(); addJsonFields(b); b.finishObject(); }
assertEquals(patchFetch2.getId(), x.getLatestPatch().asNode()); assertEquals(version_2, x.getMaxVersion()); assertEquals(Version.FIRST, x.getMinVersion());
public void sync(PatchLogInfo logInfo) { checkDeltaConnection(); syncToVersion(logInfo.getMaxVersion()); }
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()); }
public PatchLogInfo getPatchLogInfo() { checkDeltaConnection(); PatchLogInfo info = dLink.getPatchLogInfo(datasourceId); if ( info != null ) { if ( remote.get() != null ) { if ( Version.isValid(getRemoteVersionCached()) && info.getMaxVersion().value() < getRemoteVersionCached().value() ) { String dsName = dLink.getDataSourceName(datasourceId); FmtLog.warn(LOG, "[ds:%s %s] Remote version behind local tracking of remote version: [%d, %d]", datasourceId, dsName, info.getMaxVersion(), getRemoteVersionCached()); } } // Set the local copy whenever we get the remote latest. remote.set(info); } return info; }