use of net.parostroj.timetable.model.OutputTemplate in project grafikon by jub77.
the class FileLoadSaveImpl method save.
@Override
public void save(TrainDiagram diagram, ZipOutputStream zipOutput) throws LSException {
try {
// save metadata
zipOutput.putNextEntry(new ZipEntry(METADATA));
this.createMetadata(METADATA_KEY_MODEL_VERSION).store(zipOutput, null);
FileLoadSaveAttachments attachments = new FileLoadSaveAttachments(DATA_ATTACHMENTS);
// increase save version (increment by one)
diagram.setSaveVersion(diagram.getSaveVersion() + 1);
// update save timestamp
diagram.setSaveTimestamp(new Date());
// save train diagram
this.save(zipOutput, DATA_TRAIN_DIAGRAM, new LSTrainDiagram(diagram));
// save net
this.save(zipOutput, DATA_NET, new LSNet(diagram.getNet()));
int cnt = 0;
// save train type categories
for (TrainTypeCategory category : diagram.getTrainTypeCategories()) {
this.save(zipOutput, this.createEntryName(DATA_TRAIN_TYPE_CATEGORIES, "xml", cnt++), new LSTrainTypeCategory(category));
}
cnt = 0;
// save routes
for (Route route : diagram.getRoutes()) {
this.save(zipOutput, this.createEntryName(DATA_ROUTES, "xml", cnt++), new LSRoute(route));
}
cnt = 0;
// save train types
for (TrainType trainType : diagram.getTrainTypes()) {
this.save(zipOutput, this.createEntryName(DATA_TRAIN_TYPES, "xml", cnt++), new LSTrainType(trainType));
}
cnt = 0;
// save trains
for (Train train : diagram.getTrains()) {
this.save(zipOutput, this.createEntryName(DATA_TRAINS, "xml", cnt++), new LSTrain(train));
}
cnt = 0;
// save engine classes
for (EngineClass engineClass : diagram.getEngineClasses()) {
this.save(zipOutput, this.createEntryName(DATA_ENGINE_CLASSES, "xml", cnt++), new LSEngineClass(engineClass));
}
cnt = 0;
// save text items
for (TextItem item : diagram.getTextItems()) {
this.save(zipOutput, this.createEntryName(DATA_TEXT_ITEMS, "xml", cnt++), new LSTextItem(item));
}
cnt = 0;
// save output templates
for (OutputTemplate template : diagram.getOutputTemplates()) {
LSOutputTemplate lsOutputTemplate = Boolean.TRUE.equals(properties.get("inline.output.template.attachments")) ? new LSOutputTemplate(template) : new LSOutputTemplate(template, attachments);
this.save(zipOutput, this.createEntryName(DATA_OUTPUT_TEMPLATES, "xml", cnt++), lsOutputTemplate);
}
cnt = 0;
// save diagram change sets
for (String version : diagram.getChangesTracker().getVersions()) {
DiagramChangeSet set = diagram.getChangesTracker().getChangeSet(version);
if (!set.getChanges().isEmpty())
this.save(zipOutput, this.createEntryName(DATA_CHANGES, "xml", cnt++), new LSDiagramChangeSet(set));
}
cnt = 0;
// save trains cycles
for (TrainsCycle cycle : diagram.getCycles()) {
this.save(zipOutput, this.createEntryName(DATA_TRAINS_CYCLES, "xml", cnt++), new LSTrainsCycle(cycle));
}
cnt = 0;
// save outputs
for (Output output : diagram.getOutputs()) {
this.save(zipOutput, this.createEntryName(DATA_OUTPUTS, "xml", cnt++), new LSOutput(output));
}
// save images
cnt = 0;
FileLoadSaveImages saveImages = new FileLoadSaveImages(DATA_IMAGES);
for (TimetableImage image : diagram.getImages()) {
this.save(zipOutput, createEntryName(DATA_IMAGES, "xml", cnt++), new LSImage(image));
saveImages.saveTimetableImage(image, zipOutput);
}
// save attachments
attachments.save(zipOutput);
// save freight net
this.save(zipOutput, FREIGHT_NET, new LSFreightNet(diagram.getFreightNet()));
} catch (IOException ex) {
throw new LSException(ex);
}
}
use of net.parostroj.timetable.model.OutputTemplate in project grafikon by jub77.
the class LibraryBuilder method importOutputTemplate.
public LibraryItem importOutputTemplate(OutputTemplate template) {
OutputTemplate templateCopy = copyFactory.copy(template, template.getId());
addHandler.stripObjectIdAttributes(templateCopy);
// create item and add it to library
return addImpl(templateCopy, LibraryItemType.OUTPUT_TEMPLATE);
}
use of net.parostroj.timetable.model.OutputTemplate in project grafikon by jub77.
the class LSOutputTemplate method createOutputTemplate.
public OutputTemplate createOutputTemplate(PartFactory partFactory, Function<String, ObjectWithId> mapping, FileLoadSaveAttachments flsAttachments) throws LSException {
OutputTemplate outputTemplate = partFactory.createOutputTemplate(id);
if (name != null) {
// name mapped to key
outputTemplate.setKey(name);
}
if (this.template != null) {
outputTemplate.setTemplate(this.template.createTextTemplate());
}
if (this.script != null) {
outputTemplate.setScript(this.script.createScript());
}
outputTemplate.getAttributes().add(attributes.createAttributes(mapping));
// process attachments
if (attachments != null) {
for (LSAttachment attachment : attachments) {
if (attachment.getRef() != null) {
if (flsAttachments == null) {
throw new LSException("Attachment loader cannot be null");
}
flsAttachments.addForLoad(attachment, outputTemplate);
} else {
// process inline data
if (attachment.getBinaryData() != null) {
outputTemplate.getAttachments().add(new Attachment(attachment.getName(), attachment.getBinaryData()));
} else if (attachment.getTextData() != null) {
outputTemplate.getAttachments().add(new Attachment(attachment.getName(), attachment.getTextData()));
}
}
}
}
return outputTemplate;
}
use of net.parostroj.timetable.model.OutputTemplate in project grafikon by jub77.
the class LoadFilter4d19 method removeDefaultTemplatesExceptDrawAndXml.
private void removeDefaultTemplatesExceptDrawAndXml(TrainDiagram diagram) {
Collection<String> noTemplateTypes = Arrays.asList("draw", "xml");
for (OutputTemplate template : new ArrayList<>(diagram.getOutputTemplates())) {
Boolean defaultTemplate = template.getAttributeAsBool("default.template");
if (defaultTemplate && !template.getOutput().equals("draw")) {
log.warn("Skipping output template {} because of default.template feature", template.getName());
diagram.getOutputTemplates().remove(template);
} else {
template.removeAttribute("default.template");
if (noTemplateTypes.contains(template.getOutput())) {
template.setTemplate(null);
}
}
}
}
Aggregations