@Override public PatchMessage<DiffMatchPatchEdit> createPatchMessage(final String documentId, final String clientId, final Queue<DiffMatchPatchEdit> edits) { return new DiffMatchPatchMessage(documentId, clientId, edits); }
@Override public DiffMatchPatchMessage fromJson(String json) { return JsonMapper.fromJson(json, DiffMatchPatchMessage.class); }
@Override public DiffMatchPatchEdit serverDiff(final Document<String> document, final ShadowDocument<String> shadowDocument) { final String shadowText = shadowDocument.document().content(); final LinkedList<DiffMatchPatch.Diff> diffs = diffMatchPatch.diffMain(shadowText, document.content()); return DiffMatchPatchEdit.withChecksum(checksum(shadowText)) .serverVersion(shadowDocument.serverVersion()) .clientVersion(shadowDocument.clientVersion()) .diffs(asAeroGearDiffs(diffs)) .build(); }
@Override public DiffMatchPatchEdit clientDiff(final Document<String> document, final ShadowDocument<String> shadowDocument) { final String shadowText = shadowDocument.document().content(); final LinkedList<DiffMatchPatch.Diff> diffs = diffMatchPatch.diffMain(document.content(), shadowText); return DiffMatchPatchEdit.withChecksum(checksum(shadowText)).diffs(asAeroGearDiffs(diffs)).build(); }
private LinkedList<Patch> patchesFrom(final DiffMatchPatchEdit edit) { return diffMatchPatch.patchMake(asDiffUtilDiffs(edit.diff().diffs())); }
private static LinkedList<DiffMatchPatch.Diff> asDiffUtilDiffs(final LinkedList<DiffMatchPatchDiff> diffs) { final LinkedList<DiffMatchPatch.Diff> dsf = new LinkedList<DiffMatchPatch.Diff>(); for (DiffMatchPatchDiff d : diffs) { dsf.add(DiffMatchPatch.diff(diffutilOp(d.operation()), d.text())); } return dsf; }
private static ObjectMapper createObjectMapper() { om = new ObjectMapper(); final SimpleModule module = new SimpleModule("DiffMatch", new Version(1, 0, 0, null, "aerogear", "sync")); module.addDeserializer(DiffMatchPatchEdit.class, new EditDeserializer()); module.addSerializer(DiffMatchPatchEdit.class, new EditSerializer()); module.addDeserializer(DiffMatchPatchMessage.class, new PatchMessageDeserializer()); module.addSerializer(DiffMatchPatchMessage.class, new PatchMessageSerializer()); om.registerModule(module); return om; }
/** * Find the differences between two texts. * Run a faster, slightly less optimal diff. * This method allows the 'checklines' of diffMain() to be optional. * Most of the time checklines is wanted, so default to true. * * @param text1 Old string to be diffed. * @param text2 New string to be diffed. * @return Linked List of Diff objects. */ public LinkedList<Diff> diffMain(String text1, String text2) { return diffMain(text1, text2, true); }
/** * Compute a list of patches to turn text1 into text2. * text2 is ignored, diffs are the delta between text2 and text2. * * @param text1 Old text * @param text2 Ignored. * @param diffs Array of Diff objects for text1 to text2. * @return LinkedList of Patch objects. * @deprecated Prefer {@link #patchMake(java.lang.String, java.util.LinkedList) }. */ public LinkedList<Patch> patchMake(String text1, String text2, LinkedList<Diff> diffs) { return patchMake(text1, diffs); }
@Override public String asJson() { return JsonMapper.toJson(this); }
public DiffMatchPatchEdit build() { return new DiffMatchPatchEdit(this); } }
public static Builder builder() { return new Builder(); }
public static Builder withChecksum(final String checksum) { return new Builder(checksum); }
public static Diff diff(final Operation operation, final String text) { return new Diff(operation, text); }
public DiffMatchPatch build() { return new DiffMatchPatch(this); }
@Override public int hashCode() { int result = operation.hashCode(); result = 31 * result + text.hashCode(); return result; }
@Override public int hashCode() { int result = checksum.hashCode(); result = 31 * result + (int) (clientVersion ^ clientVersion >>> 32); result = 31 * result + (int) (serverVersion ^ serverVersion >>> 32); result = 31 * result + diffs.hashCode(); return result; }
private DiffMatchPatchEdit(final Builder builder) { clientVersion = builder.clientVersion; serverVersion = builder.serverVersion; checksum = Arguments.checkNotNull(builder.checksum, "checksum must not be null"); diffs = new DiffMatchPatchDiffs(builder.diffs); }
@Override public PatchMessage<DiffMatchPatchEdit> patchMessageFromJson(String json) { return JsonMapper.fromJson(json, DiffMatchPatchMessage.class); }