use of net.parostroj.timetable.model.imports.ImportComponent in project grafikon by jub77.
the class ImportModelAction method backgroundAction.
@Override
protected void backgroundAction() {
setWaitMessage(ResourceLoader.getString("wait.message.import"));
setWaitDialogVisible(true);
long time = System.currentTimeMillis();
try {
ExportImportSelection selection = context.getAttribute("selection", ExportImportSelection.class);
TrainDiagram diagram = context.getAttribute("diagramImport", TrainDiagram.class);
TrainImportConfig trainImportConfig = context.getAttribute("trainImport", TrainImportConfig.class);
Map<ImportComponent, Collection<ObjectWithId>> map = selection.getObjectMap();
imports = new TrainDiagramPartImport(diagram, selection.getImportMatch(), selection.isImportOverwrite());
List<ObjectWithId> list = map.values().stream().sequential().flatMap(item -> item.stream().sequential()).collect(Collectors.toList());
if (list.isEmpty()) {
return;
}
if (trainImportConfig != null && trainImportConfig.isRemoveExisting()) {
// remove existing trains in group
Consumer<ObjectWithId> deleteProcess = item -> diagram.getTrains().remove(item);
Iterable<Train> filteredTrains = Iterables.filter(diagram.getTrains(), ModelPredicates.inGroup(trainImportConfig.getToGroup()));
processItems(filteredTrains, deleteProcess);
}
// import new objects
Consumer<ObjectWithId> importProcess = item -> {
ImportComponent i = ImportComponent.getByComponentClass(item.getClass());
if (i != null) {
ObjectWithId imported = imports.importPart(item);
processImportedObject(imported, trainImportConfig);
} else {
log.warn("No import for class {}", item.getClass().getName());
}
};
processItems(list, importProcess);
} finally {
log.debug("Import finished in {}ms", System.currentTimeMillis() - time);
setWaitDialogVisible(false);
}
}
use of net.parostroj.timetable.model.imports.ImportComponent in project grafikon by jub77.
the class ImportModelAction method eventDispatchActionAfter.
@Override
protected void eventDispatchActionAfter() {
if (context.isCancelled()) {
return;
}
List<ImportError> errors = new LinkedList<>();
for (ImportComponent comp : imports.getImportComponents()) {
errors.addAll(imports.getErrors(comp));
}
// create string ...
if (!errors.isEmpty()) {
StringBuilder message = new StringBuilder();
int lineLength = 70;
int nextLimit = lineLength;
for (ImportError error : errors) {
if (message.length() != 0) {
message.append(", ");
}
if (nextLimit < message.length()) {
message.append('\n');
nextLimit += lineLength;
}
message.append(getText(error));
}
JOptionPane.showConfirmDialog(getActionContext().getLocationComponent(), message, ResourceLoader.getString("import.warning.title"), JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE);
}
}
use of net.parostroj.timetable.model.imports.ImportComponent in project grafikon by jub77.
the class ExportImportSelectionPanel method setSelectionSource.
public void setSelectionSource(ExportImportSelectionSource source) {
typeComboBox.removeAllItems();
currentSelection = null;
selectionMap.clear();
for (ImportComponent type : source.getTypes()) {
Collection<ObjectWithId> elements = source.getElementsForType(type);
if (!elements.isEmpty()) {
Selection selection = new Selection(type, Wrapper.getWrapperList(elements), new ArrayList<>());
selectionMap.put(type, selection);
typeComboBox.addItem(Wrapper.getWrapper(type));
}
}
typeComboBox.setMaximumRowCount(source.getTypes().size());
}
Aggregations