X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Forg%2Fvamsas%2Fclient%2Fsimpleclient%2FVamsasArchive.java;h=e697861fca9fb8590875f9e9cdb94040a17409b8;hb=30801ef84cde704404d052f00c70ae129820bb0b;hp=f065d04848e7158b68d7b23f6959a454386cf71c;hpb=4f11373ddecd53546b3b22e0358f3df01b24a6e6;p=vamsas.git diff --git a/src/org/vamsas/client/simpleclient/VamsasArchive.java b/src/org/vamsas/client/simpleclient/VamsasArchive.java index f065d04..e697861 100644 --- a/src/org/vamsas/client/simpleclient/VamsasArchive.java +++ b/src/org/vamsas/client/simpleclient/VamsasArchive.java @@ -154,7 +154,7 @@ public class VamsasArchive { */ File originalBackup = null; - boolean donotdeletebackup=false; + boolean donotdeletebackup=true; private final int _TRANSFER_BUFFER=4096*4; protected SimpleDocument vorba = null; /** @@ -216,7 +216,7 @@ public class VamsasArchive { */ public VamsasArchive(File archive, boolean overwrite, boolean vamsasdocument, SessionFile extantLock) throws IOException { super(); - if (archive==null || (archive!=null && !(archive.getParentFile().canWrite() && (!archive.exists() || archive.canWrite())))) { + if (archive==null || (archive!=null && !(archive.getAbsoluteFile().getParentFile().canWrite() && (!archive.exists() || archive.canWrite())))) { log.fatal("Expect Badness! -- Invalid parameters for VamsasArchive constructor:"+((archive!=null) ? "File cannot be overwritten." : "Null Object not valid constructor parameter")); return; @@ -248,9 +248,9 @@ public class VamsasArchive { else rchive = new SessionFile(archive); rchive.lockFile(); - if (rchive.fileLock==null || rchive.fileLock.rafile==null || !rchive.fileLock.isLocked()) + if (rchive.fileLock==null || !rchive.fileLock.isLocked()) throw new IOException("Lock failed for new archive"+archive); - rchive.fileLock.rafile.setLength(0); // empty the archive. + rchive.fileLock.getRaFile().setLength(0); // empty the archive. virginArchive = true; } this.openArchive(); // open archive @@ -383,7 +383,9 @@ public class VamsasArchive { newarchive.closeEntry(); if (!isDocumentWritten()) log.warn("Premature closure of archive '"+archive.getAbsolutePath()+"': No document has been written."); - newarchive.close(); // use newarchive.finish(); for a stream IO + newarchive.finish();// close(); // use newarchive.finish(); for a stream IO + newarchive.flush(); + // updateOriginal(); closeAndReset(); } else { @@ -563,9 +565,9 @@ public class VamsasArchive { if (!rchive.lockFile()) throw new IOException("Failed to get lock on file "+archive); // LATER: locked IO stream based access. - //Manifest newmanifest = new Manifest(); - //newarchive = new JarOutputStream(rchive.fileLock.getBufferedOutputStream(true), newmanifest); - newarchive = new JarOutputStream(new BufferedOutputStream(new java.io.FileOutputStream(archive))); + Manifest newmanifest = new Manifest(); + newarchive = new JarOutputStream(rchive.fileLock.getBufferedOutputStream(true), newmanifest); + //newarchive = new JarOutputStream(new BufferedOutputStream(new java.io.FileOutputStream(archive))); entries = new Hashtable(); } public void putVamsasDocument(VamsasDocument doc) throws IOException, @@ -781,14 +783,19 @@ public class VamsasArchive { odoclock.updateFrom(null, rchive); } catch (IOException e) { - // LATER: decide if leaving nastily named backup files around is necessary. - log.error("Problem updating archive from temporary file! - backup left in '" + // LATER: decide if leaving nastily named backup files around is necessary. + File backupFile=backupFile(); + if (backupFile!=null) + log.error("Problem updating archive from temporary file! - backup left in '" +backupFile().getAbsolutePath()+"'",e); + else + log.error("Problems updating, and failed to even make a backup file. Ooops!", e); } // Tidy up if necessary. removeBackup(); } else { + } } }