// copy file
byte[] lineFeed = MimeTypes.isBinary(remoteFile.getContentType())
? null
: LineOutputStream.LS_NATIVE;
VaultFileCopy copy;
try {
File temp = baseFile.openTempFile();
copy = VaultFileCopy.copy(remoteFile, temp, lineFeed);
baseFile.closeTempFile(false);
} catch (IOException e) {
throw exception("Error while copying files.", e);
}
// if md5 is equal, no update
if (copy.getMd5().equals(base.getMd5())) {
action = FileAction.VOID;
}
if (action == FileAction.VOID
&& (base.getContentType() != null || remoteFile.getContentType() != null)
&& (base.getContentType() == null || !base.getContentType().equals(remoteFile.getContentType()))) {
action = FileAction.UPDATED;
}
// update infos
VltEntryInfo work = entry.work();
base.setContentType(remoteFile.getContentType());
base.setSize(copy.getLength());
base.setMd5(copy.getMd5());
if (!baseOnly) {
// only copy if not equal
if (work == null || !work.getMd5().equals(copy.getMd5()) || !getFile().exists()) {
try {
baseFile.copyTo(getFile(), true);
entry.put(base.copyAs(VltEntryInfo.Type.WORK));
} catch (IOException e) {
throw exception("Error while copying files.", e);