package jetbrains.mps.vcs.core.mergedriver; /*Generated by MPS */ import org.jetbrains.annotations.Nullable; import jetbrains.mps.baseLanguage.tuples.runtime.Tuples; import org.tmatesoft.svn.core.wc.SVNDiffOptions; import org.tmatesoft.svn.core.internal.wc.FSMergerBySequence; import de.regnis.q.sequence.line.QSequenceLineRAData; import de.regnis.q.sequence.line.QSequenceLineRAByteData; import java.io.ByteArrayOutputStream; import org.tmatesoft.svn.core.internal.wc.SVNDiffConflictChoiceStyle; import jetbrains.mps.baseLanguage.tuples.runtime.MultiTuple; import java.io.IOException; /*package*/ class TextMerger extends AbstractContentMerger { public TextMerger() { } @Nullable @Override public Tuples._2<Integer, byte[]> mergeContents(FileContent baseContent, FileContent localContent, FileContent latestContent) { SVNDiffOptions diffOptions = null; FSMergerBySequence merger = new FSMergerBySequence(myConflictStart, mySeparator, myConflictEnd); QSequenceLineRAData baseData = new QSequenceLineRAByteData(baseContent.getData()); QSequenceLineRAData localData = new QSequenceLineRAByteData(localContent.getData()); QSequenceLineRAData latestData = new QSequenceLineRAByteData(latestContent.getData()); ByteArrayOutputStream out = new ByteArrayOutputStream(); try { int mergeResult = merger.merge(baseData, localData, latestData, diffOptions, out, SVNDiffConflictChoiceStyle.CHOOSE_MODIFIED_LATEST); return MultiTuple.<Integer,byte[]>from((mergeResult == FSMergerBySequence.CONFLICTED ? CONFLICTS : MERGED), out.toByteArray()); } catch (IOException e) { return null; } } }