package org.jabref.logic.exporter; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class StringSaveSession extends SaveSession { private static final Log LOGGER = LogFactory.getLog(StringSaveSession.class); private final ByteArrayOutputStream outputStream; public StringSaveSession(Charset encoding, boolean backup) { this(encoding, backup, new ByteArrayOutputStream()); } private StringSaveSession(Charset encoding, boolean backup, ByteArrayOutputStream outputStream) { super(encoding, backup, new VerifyingWriter(outputStream, encoding)); this.outputStream = outputStream; } public String getStringValue() { try { return outputStream.toString(encoding.name()); } catch (UnsupportedEncodingException e) { LOGGER.warn(e); return ""; } } @Override public void commit(Path file) throws SaveException { try { Files.write(file, outputStream.toByteArray()); } catch (IOException e) { throw new SaveException(e); } } @Override public void cancel() { try { outputStream.close(); } catch (IOException e) { LOGGER.warn(e); } } }