package org.jabref.logic.exporter; import java.nio.charset.Charset; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.Objects; import org.jabref.model.FieldChange; public abstract class SaveSession { protected boolean backup; protected final Charset encoding; protected final VerifyingWriter writer; private final List<FieldChange> undoableFieldChanges = new ArrayList<>(); protected SaveSession(Charset encoding, boolean backup, VerifyingWriter writer) { this.encoding = Objects.requireNonNull(encoding); this.backup = backup; this.writer = Objects.requireNonNull(writer); } public VerifyingWriter getWriter() { return writer; } public Charset getEncoding() { return encoding; } public void setUseBackup(boolean useBackup) { this.backup = useBackup; } public abstract void commit(Path file) throws SaveException; public void commit(String path) throws SaveException { commit(Paths.get(path)); } public abstract void cancel(); public List<FieldChange> getFieldChanges() { return undoableFieldChanges; } public void addFieldChanges(List<FieldChange> newUndoableFieldChanges) { this.undoableFieldChanges.addAll(newUndoableFieldChanges); } }