X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FJalview2XML.java;h=12f2cb20640daf23751f617cd02c13317b8e049d;hb=339c2de5fce77a1e1518df6df0c2d894352d6648;hp=008be21188ac3dbb809014943462fe666b309df9;hpb=c901bd1778574b5792a7ee168bfe3e1addd3e181;p=jalview.git diff --git a/src/jalview/gui/Jalview2XML.java b/src/jalview/gui/Jalview2XML.java index 008be21..12f2cb2 100755 --- a/src/jalview/gui/Jalview2XML.java +++ b/src/jalview/gui/Jalview2XML.java @@ -12,12 +12,17 @@ import javax.swing.JInternalFrame; public class Jalview2XML { + // SAVES SEVERAL ALIGNEMENT WINDOWS TO SAME JARFILE public static void SaveState(File statefile) { long creation = System.currentTimeMillis(); JInternalFrame[] frames = Desktop.desktop.getAllFrames(); try{ - JalviewState state = new JalviewState(); + FileOutputStream fos = new FileOutputStream(statefile); + JarOutputStream jout = new JarOutputStream(fos); + //NOTE UTF-8 MUST BE USED FOR WRITING UNICODE CHARS + //////////////////////////////////////////////////// + PrintWriter out = new PrintWriter(new OutputStreamWriter(jout, "UTF-8")); Vector shortNames = new Vector(); for (int i = 0; i < frames.length; i++) @@ -30,7 +35,6 @@ public class Jalview2XML shortName = shortName.replace('/', '_'); shortName = shortName.replace('\\', '_'); - String jarFile = statefile.getParent()+File.separatorChar+shortName+".jar"; int count=1; while( shortNames.contains(shortName) ) @@ -46,22 +50,33 @@ public class Jalview2XML if(!shortName.endsWith(".xml")) shortName = shortName+".xml"; - jarFile = statefile.getParent()+File.separatorChar+shortName+".jar"; - - SaveState( af, creation, shortName, jarFile); - state.addFile(jarFile); - } + SaveState( af, creation, shortName, jout, out); + } } - - PrintWriter out = new PrintWriter(new FileWriter(statefile)); - state.marshal(out); out.close(); + jout.close(); } catch(Exception ex){ex.printStackTrace();} } + // USE THIS METHOD TO SAVE A SINGLE ALIGNMENT WINDOW + public static void SaveState( AlignFrame af, String jarFile, String fileName) + { + try{ + FileOutputStream fos = new FileOutputStream(jarFile); + JarOutputStream jout = new JarOutputStream(fos); + //NOTE UTF-8 MUST BE USED FOR WRITING UNICODE CHARS + //////////////////////////////////////////////////// + PrintWriter out = new PrintWriter(new OutputStreamWriter(jout, "UTF-8")); + + SaveState(af, System.currentTimeMillis(), fileName, jout, out); + out.close(); + jout.close(); + }catch(Exception ex){} + } - public static void SaveState( AlignFrame af, long timeStamp, String fileName, String jarFile) + public static void SaveState( AlignFrame af, long timeStamp, + String fileName, JarOutputStream jout, PrintWriter out) { Vector seqids = new Vector(); @@ -240,16 +255,6 @@ public class Jalview2XML try { - // NAME OF FILE - FileOutputStream fos = new FileOutputStream(jarFile); - - //PUT IT IN THIS JARFILE - JarOutputStream jout = new JarOutputStream(fos); - - //NOTE UTF-8 MUST BE USED FOR WRITING UNICODE CHARS - //////////////////////////////////////////////////// - PrintWriter out = new PrintWriter(new OutputStreamWriter(jout, "UTF-8")); - if(!fileName.endsWith(".xml")) fileName = fileName+".xml"; @@ -257,9 +262,6 @@ public class Jalview2XML jout.putNextEntry(entry); object.marshal(out); - out.close(); - fos.close(); - jout.close(); } catch (Exception ex) { @@ -267,37 +269,38 @@ public class Jalview2XML } } - public static void LoadState(String file) - { - try{ - JalviewState state = new JalviewState(); - BufferedReader in = new BufferedReader(new FileReader(file)); - state = (JalviewState)state.unmarshal(in); - Enumeration en = state.enumerateFile(); - while( en.hasMoreElements() ) - { - LoadJalviewAlign( en.nextElement().toString()); - } - } - catch(Exception ex) - { ex.printStackTrace(); return; } - } public static void LoadJalviewAlign(String file) { JalviewModel object = new JalviewModel(); - Vector seqids = new Vector(); try{ - FileInputStream fis = new FileInputStream(file); - JarInputStream jin = new JarInputStream(fis); - jin.getNextJarEntry(); - InputStreamReader in = new InputStreamReader(jin, "UTF-8"); - object = (JalviewModel) object.unmarshal(in); + //UNMARSHALLER SEEMS TO CLOSE JARINPUTSTREAM, MOST ANNOYING + JarInputStream jin = new JarInputStream(new FileInputStream(file)); + JarEntry jarentry=null; + int entryCount = 1; + do{ + jin = new JarInputStream(new FileInputStream(file)); + for(int i=0; i