package com.baidu.disconf.web.common.comparator;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import difflib.Chunk;
import difflib.Delta;
/**
* @author knightliao
*/
public abstract class CommonComparator {
public List<Chunk> getChangesFromOriginal() throws IOException {
return getChunksByType(Delta.TYPE.CHANGE);
}
public List<Chunk> getInsertsFromOriginal() throws IOException {
return getChunksByType(Delta.TYPE.INSERT);
}
public List<Chunk> getDeletesFromOriginal() throws IOException {
return getChunksByType(Delta.TYPE.DELETE);
}
protected abstract List<Delta> getDeltas() throws IOException;
private List<Chunk> getChunksByType(Delta.TYPE type) throws IOException {
final List<Chunk> listOfChanges = new ArrayList<Chunk>();
final List<Delta> deltas = getDeltas();
for (Delta delta : deltas) {
if (delta.getType() == type) {
listOfChanges.add(delta.getRevised());
}
}
return listOfChanges;
}
}