use of difflib.Delta.TYPE in project Gargoyle by callakrsos.
the class HtmlBaseDiffAppController method extractedWrapperedChunk.
/**
* chunk객체를 UI로 표현하기 위해 wrapping처리함.
*
* @param deltaType
* @param deltas
* @param readLines
* @return
*/
private List<ChunkWrapper> extractedWrapperedChunk(final DeltaType deltaType, final List<Delta> deltas, final List<String> readLines) {
int size = readLines.size();
ArrayList<ChunkWrapper> collect = deltas.stream().map(delta -> {
Chunk chunk = null;
if (DeltaType.ORIGINAL == deltaType) {
chunk = delta.getOriginal();
} else {
chunk = delta.getRevised();
}
int position = chunk.getPosition();
@SuppressWarnings("unchecked") List<String> lines = (List<String>) chunk.getLines();
TYPE type = delta.getType();
ChunkWrapper chunkWrapper = new ChunkWrapper();
chunkWrapper.setType(type);
chunkWrapper.setLines(lines);
chunkWrapper.setChunk(chunk);
chunkWrapper.setPosition(position);
chunkWrapper.setDelta(delta);
return chunkWrapper;
}).collect(() -> {
ArrayList<ChunkWrapper> newChunk = new ArrayList<>(size);
for (int i = 0; i < readLines.size(); i++) {
ChunkWrapper chunkWrapper = new ChunkWrapper();
chunkWrapper.setStr(readLines.get(i));
chunkWrapper.setPosition(i);
newChunk.add(chunkWrapper);
}
return newChunk;
}, (collection, item) -> {
int position = item.getPosition();
List<String> lines = item.getLines();
TYPE type = item.getType();
int tmpPosition = position;
for (String str : lines) {
ChunkWrapper chunkWrapper = new ChunkWrapper();
chunkWrapper.setType(type);
chunkWrapper.setLines(lines);
chunkWrapper.setPosition(position);
chunkWrapper.setChunk(item.getChunk());
chunkWrapper.setStr(str);
chunkWrapper.setDelta(item.getDelta());
collection.set(tmpPosition++, chunkWrapper);
}
}, (collection1, collection2) -> collection1.addAll(collection2));
return collect;
}
use of difflib.Delta.TYPE in project Gargoyle by callakrsos.
the class FileBaseDiffAppController method extractedWrapperedChunk.
/**
* chunk객체를 UI로 표현하기 위해 wrapping처리함.
*
* @param deltaType
* @param deltas
* @param readLines
* @return
*/
private List<ChunkWrapper> extractedWrapperedChunk(final DeltaType deltaType, final List<Delta> deltas, final List<String> readLines) {
int size = readLines.size();
ArrayList<ChunkWrapper> collect = deltas.stream().map(delta -> {
Chunk chunk = null;
if (DeltaType.ORIGINAL == deltaType) {
chunk = delta.getOriginal();
} else {
chunk = delta.getRevised();
}
int position = chunk.getPosition();
@SuppressWarnings("unchecked") List<String> lines = (List<String>) chunk.getLines();
TYPE type = delta.getType();
ChunkWrapper chunkWrapper = new ChunkWrapper();
chunkWrapper.setType(type);
chunkWrapper.setLines(lines);
chunkWrapper.setChunk(chunk);
chunkWrapper.setPosition(position);
chunkWrapper.setDelta(delta);
return chunkWrapper;
}).collect(() -> {
ArrayList<ChunkWrapper> newChunk = new ArrayList<>(size);
for (int i = 0; i < readLines.size(); i++) {
ChunkWrapper chunkWrapper = new ChunkWrapper();
chunkWrapper.setStr(readLines.get(i));
chunkWrapper.setPosition(i);
newChunk.add(chunkWrapper);
}
return newChunk;
}, (collection, item) -> {
int position = item.getPosition();
List<String> lines = item.getLines();
TYPE type = item.getType();
int tmpPosition = position;
for (String str : lines) {
ChunkWrapper chunkWrapper = new ChunkWrapper();
chunkWrapper.setType(type);
chunkWrapper.setLines(lines);
chunkWrapper.setPosition(position);
chunkWrapper.setChunk(item.getChunk());
chunkWrapper.setStr(str);
chunkWrapper.setDelta(item.getDelta());
collection.set(tmpPosition++, chunkWrapper);
}
}, (collection1, collection2) -> collection1.addAll(collection2));
return collect;
}
use of difflib.Delta.TYPE in project spring-sync by spring-projects.
the class Diff method diffList.
// private helpers
private static void diffList(List<PatchOperation> operations, String path, List<?> original, List<?> modified) throws IOException, IllegalAccessException {
difflib.Patch diff = DiffUtils.diff(original, modified);
List<Delta> deltas = diff.getDeltas();
for (Delta delta : deltas) {
TYPE type = delta.getType();
int revisedPosition = delta.getRevised().getPosition();
if (type == TYPE.CHANGE) {
List<?> lines = delta.getRevised().getLines();
for (int offset = 0; offset < lines.size(); offset++) {
Object originalObject = original.get(revisedPosition + offset);
Object revisedObject = modified.get(revisedPosition + offset);
diffNonList(operations, path + "/" + (revisedPosition + offset), originalObject, revisedObject);
}
} else if (type == TYPE.INSERT) {
List<?> lines = delta.getRevised().getLines();
for (int offset = 0; offset < lines.size(); offset++) {
operations.add(new AddOperation(path + "/" + (revisedPosition + offset), lines.get(offset)));
}
} else if (type == TYPE.DELETE) {
List<?> lines = delta.getOriginal().getLines();
for (int offset = 0; offset < lines.size(); offset++) {
Object originalObject = original.get(revisedPosition + offset);
operations.add(new TestOperation(path + "/" + revisedPosition, originalObject));
operations.add(new RemoveOperation(path + "/" + revisedPosition));
}
}
}
}
use of difflib.Delta.TYPE in project Gargoyle by callakrsos.
the class TextBaseDiffAppController method extractedWrapperedChunk.
/**
* chunk객체를 UI로 표현하기 위해 wrapping처리함.
*
* @param deltaType
* @param deltas
* @param readLines
* @return
*/
private List<ChunkWrapper> extractedWrapperedChunk(final DeltaType deltaType, final List<Delta> deltas, final List<String> readLines) {
int size = readLines.size();
ArrayList<ChunkWrapper> collect = deltas.stream().map(delta -> {
Chunk chunk = null;
if (DeltaType.ORIGINAL == deltaType) {
chunk = delta.getOriginal();
} else {
chunk = delta.getRevised();
}
int position = chunk.getPosition();
@SuppressWarnings("unchecked") List<String> lines = (List<String>) chunk.getLines();
TYPE type = delta.getType();
ChunkWrapper chunkWrapper = new ChunkWrapper();
chunkWrapper.setType(type);
chunkWrapper.setLines(lines);
chunkWrapper.setChunk(chunk);
chunkWrapper.setPosition(position);
chunkWrapper.setDelta(delta);
return chunkWrapper;
}).collect(() -> {
ArrayList<ChunkWrapper> newChunk = new ArrayList<>(size);
for (int i = 0; i < readLines.size(); i++) {
ChunkWrapper chunkWrapper = new ChunkWrapper();
chunkWrapper.setStr(readLines.get(i));
chunkWrapper.setPosition(i);
newChunk.add(chunkWrapper);
}
return newChunk;
}, (collection, item) -> {
int position = item.getPosition();
List<String> lines = item.getLines();
TYPE type = item.getType();
int tmpPosition = position;
for (String str : lines) {
ChunkWrapper chunkWrapper = new ChunkWrapper();
chunkWrapper.setType(type);
chunkWrapper.setLines(lines);
chunkWrapper.setPosition(position);
chunkWrapper.setChunk(item.getChunk());
chunkWrapper.setStr(str);
chunkWrapper.setDelta(item.getDelta());
collection.set(tmpPosition++, chunkWrapper);
}
}, (collection1, collection2) -> collection1.addAll(collection2));
return collect;
}
use of difflib.Delta.TYPE in project Gargoyle by callakrsos.
the class TextBaseDiffAppController method initialize.
@FXML
public void initialize() {
/* initControls */
ivReviced = new ImageView();
ivpReviced = new ImageViewPane(ivReviced);
ivpReviced.setPrefWidth(200);
ivpReviced.setPrefHeight(150);
ivOrigin = new ImageView();
ivpOrigin = new ImageViewPane(ivOrigin);
ivpOrigin.setPrefWidth(200);
ivpOrigin.setPrefHeight(150);
gpSnap.add(ivpReviced, 0, 0);
gpSnap.add(ivpOrigin, 1, 0);
lvOrinal.setCellFactory(param -> new DefaultTextFieldListCell(ORIGINAL));
lvRevice.setCellFactory(param -> new DefaultTextFieldListCell(REVICED));
fileCompareResultProperty.addListener(compareResultListener);
lvRevice.setOnMouseClicked(event -> {
if (event.getClickCount() == 2) {
int movePosition = -1;
ChunkWrapper selectedItem = lvRevice.getSelectionModel().getSelectedItem();
Delta delta = selectedItem.getDelta();
if (delta != null && delta.getOriginal() != null) {
movePosition = selectedItem.getPosition();
lvOrinal.scrollTo(movePosition - 1);
lvOrinal.getSelectionModel().select(movePosition);
}
}
});
lvOrinal.setOnMouseClicked(event -> {
if (event.getClickCount() == 2) {
int movePosition = -1;
ChunkWrapper selectedItem = lvOrinal.getSelectionModel().getSelectedItem();
if (selectedItem != null) {
Delta delta = selectedItem.getDelta();
if (delta != null && delta.getRevised() != null) {
movePosition = delta.getRevised().getPosition();
lvRevice.scrollTo(movePosition - 1);
lvRevice.getSelectionModel().select(movePosition);
}
}
}
});
lvOrinal.addEventFilter(ScrollEvent.SCROLL, event -> {
snappOriginShot();
});
lvRevice.addEventFilter(ScrollEvent.SCROLL, event -> {
snappReviceShot();
});
btnCompare.setOnMouseClicked(event -> {
String ori = txtOrigin.getText();
String rev = txtRevice.getText();
if (!(ori.isEmpty() && rev.isEmpty())) {
clear();
try {
this.compare.setOriginal(ori);
this.compare.setRevised(rev);
CompareResult chunkResult = this.compare.getChunkResult();
this.fileCompareResultProperty.set(chunkResult);
snappOriginShot();
snappReviceShot();
} catch (Exception e) {
LOGGER.error(ValueUtil.toString(e));
}
}
});
colStatus.setCellValueFactory(new Callback<CellDataFeatures<ChunkWrapper, String>, ObservableValue<String>>() {
@Override
public ObservableValue<String> call(CellDataFeatures<ChunkWrapper, String> param) {
TYPE type = param.getValue().getType();
StringProperty prop = new SimpleStringProperty();
if (type != null)
prop.set(type.name());
return prop;
}
});
colPosition.setCellValueFactory(param -> new SimpleIntegerProperty(new Integer(param.getValue().getPosition() + 1)));
colRevice.setCellValueFactory(param -> {
Delta delta = param.getValue().getDelta();
SimpleStringProperty prop = new SimpleStringProperty();
if (delta != null) {
Chunk c = delta.getRevised();
prop.setValue(c.getLines().toString());
}
return prop;
});
colOrigin.setCellValueFactory(param -> {
Delta delta = param.getValue().getDelta();
SimpleStringProperty prop = new SimpleStringProperty();
if (delta != null) {
Chunk c = delta.getOriginal();
prop.setValue(c.getLines().toString());
}
return prop;
});
}
Aggregations