Search in sources :

Example 1 with DiagramChangeSet

use of net.parostroj.timetable.model.changes.DiagramChangeSet in project grafikon by jub77.

the class ChangesTrackerPanel method fillVersions.

private void fillVersions() {
    // fill list of versions
    ChangesTrackerListModel model = new ChangesTrackerListModel();
    if (diagram != null) {
        String currentVersion = diagram.getChangesTracker().isTrackingEnabled() ? diagram.getChangesTracker().getCurrentVersion() : null;
        for (DiagramChangeSet set : diagram.getChangesTracker().getChangeSets()) {
            model.addElement(new ChangeSetWrapper(set, currentVersion));
        }
    }
    versionsList.setModel(model);
    if (!model.isEmpty()) {
        Object object = model.getElementAt(model.getSize() - 1);
        versionsList.setSelectedValue(object, true);
    }
}
Also used : DiagramChangeSet(net.parostroj.timetable.model.changes.DiagramChangeSet)

Example 2 with DiagramChangeSet

use of net.parostroj.timetable.model.changes.DiagramChangeSet 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);
    }
}
Also used : TrainsCycle(net.parostroj.timetable.model.TrainsCycle) TextItem(net.parostroj.timetable.model.TextItem) ZipEntry(java.util.zip.ZipEntry) Output(net.parostroj.timetable.model.Output) TrainTypeCategory(net.parostroj.timetable.model.TrainTypeCategory) TrainType(net.parostroj.timetable.model.TrainType) Route(net.parostroj.timetable.model.Route) TimetableImage(net.parostroj.timetable.model.TimetableImage) DiagramChangeSet(net.parostroj.timetable.model.changes.DiagramChangeSet) IOException(java.io.IOException) Date(java.util.Date) OutputTemplate(net.parostroj.timetable.model.OutputTemplate) EngineClass(net.parostroj.timetable.model.EngineClass) Train(net.parostroj.timetable.model.Train) LSException(net.parostroj.timetable.model.ls.LSException)

Example 3 with DiagramChangeSet

use of net.parostroj.timetable.model.changes.DiagramChangeSet in project grafikon by jub77.

the class ModelUtils method saveModelData.

public static void saveModelData(final ApplicationModel model, File file) throws LSException {
    // update author and date before save
    TrainDiagram diagram = model.getDiagram();
    boolean originalSkip = diagram.getAttributes().isSkipListeners();
    diagram.getAttributes().setSkipListeners(true);
    String user = model.getProgramSettings().getUserNameOrSystemUser();
    diagram.setSaveUser(user);
    final ChangesTracker tracker = diagram.getChangesTracker();
    final DiagramChangeSet set = tracker.getCurrentChangeSet();
    if (set != null && tracker.isTrackingEnabled()) {
        try {
            // do the update in event dispatch thread (because of events)
            SwingUtilities.invokeAndWait(() -> {
                tracker.updateCurrentChangeSet(set.getVersion(), user, Calendar.getInstance());
            });
        } catch (Exception e) {
            log.warn("Error updating values for current diagram change set.", e);
        }
    }
    log.info("Saving: {}", file);
    LSFile ls = LSFileFactory.getInstance().createForSave();
    ls.save(diagram, file);
    diagram.getAttributes().setSkipListeners(originalSkip);
}
Also used : LSFile(net.parostroj.timetable.model.ls.LSFile) ChangesTracker(net.parostroj.timetable.model.changes.ChangesTracker) DiagramChangeSet(net.parostroj.timetable.model.changes.DiagramChangeSet) IOException(java.io.IOException) LSException(net.parostroj.timetable.model.ls.LSException)

Aggregations

DiagramChangeSet (net.parostroj.timetable.model.changes.DiagramChangeSet)3 IOException (java.io.IOException)2 LSException (net.parostroj.timetable.model.ls.LSException)2 Date (java.util.Date)1 ZipEntry (java.util.zip.ZipEntry)1 EngineClass (net.parostroj.timetable.model.EngineClass)1 Output (net.parostroj.timetable.model.Output)1 OutputTemplate (net.parostroj.timetable.model.OutputTemplate)1 Route (net.parostroj.timetable.model.Route)1 TextItem (net.parostroj.timetable.model.TextItem)1 TimetableImage (net.parostroj.timetable.model.TimetableImage)1 Train (net.parostroj.timetable.model.Train)1 TrainType (net.parostroj.timetable.model.TrainType)1 TrainTypeCategory (net.parostroj.timetable.model.TrainTypeCategory)1 TrainsCycle (net.parostroj.timetable.model.TrainsCycle)1 ChangesTracker (net.parostroj.timetable.model.changes.ChangesTracker)1 LSFile (net.parostroj.timetable.model.ls.LSFile)1