X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fuk%2Fac%2Fvamsas%2Ftest%2Fsimpleclient%2FArchiveWatcher.java;h=e0d2f9fe3b9bc1d96b42471e04d96b97711c7811;hb=844ccad5a3fcbedec17b2af66d460f31abc7cff1;hp=d784a8ecab2b56c841eb72e3d4b695c3012e56ed;hpb=6f33f705957d674dc2ab6c994a6ea87f7a91f40f;p=vamsas.git diff --git a/src/uk/ac/vamsas/test/simpleclient/ArchiveWatcher.java b/src/uk/ac/vamsas/test/simpleclient/ArchiveWatcher.java index d784a8e..e0d2f9f 100644 --- a/src/uk/ac/vamsas/test/simpleclient/ArchiveWatcher.java +++ b/src/uk/ac/vamsas/test/simpleclient/ArchiveWatcher.java @@ -1,106 +1,140 @@ -package uk.ac.vamsas.test.simpleclient; - -import java.io.File; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import uk.ac.vamsas.client.ClientHandle; -import uk.ac.vamsas.client.simpleclient.FileWatcher; -import uk.ac.vamsas.client.simpleclient.Lock; -import uk.ac.vamsas.client.simpleclient.SimpleDocument; -import uk.ac.vamsas.client.simpleclient.VamsasArchiveReader; -import uk.ac.vamsas.client.simpleclient.VamsasFile; -import uk.ac.vamsas.objects.core.VamsasDocument; -/** - * demo of archive watching process - should mimic the clientsfileTest watcher/monitor process. - * @author jimp - * - */ -public class ArchiveWatcher { - private static Log log = LogFactory.getLog(ArchiveWatcher.class); - private static CommandProcessor cproc=new CommandProcessor(); - static { - cproc.addCommand("new", 0, "no args"); - cproc.addCommand("delete", 0, "no args"); - cproc.addCommand("watch", 0, "no args"); - cproc.addCommand("file", 1, "Need vamsas archive as argument."); - } - - public static void main(String[] args) { - try { - - if (args!=null && args.length>0) { - File archive = new File(args[0]); - log.info("Watching file "+args[0]); - int argc=1; - while (argc < args.length) { - // vars needed for operations - ClientHandle ch; - int com = cproc.getCommand(args, argc); - argc++; - switch (com) { - case 0: - // new - log.info("Doing locked deletion and new-file creation."); - { - if (!archive.exists()) - archive.createNewFile(); - VamsasFile sf = new VamsasFile(archive); - Lock l = sf.getLock(); - archive.delete(); - archive.createNewFile(); - sf.unLock(); - } - break; - case 1: - // delete - log.info("Deleting "+archive+" without locking it first."); - archive.delete(); - break; - case 2: - // watch - log.info("Endlessly Watching file "+archive); - /* if (!archive.exists()) - archive.createNewFile(); - */ // watch the new file... - taken straight from ClientsFileTest - FileWatcher w = new FileWatcher(archive); - while (true) { - // get watcher's lock to ensure state change is fixed for retrieval - Lock chlock = w.getChangedState(); - if (chlock != null) { - log.info("Got lock on "+archive+(archive.exists() ? " exists l="+archive.length() : "(non existant)")); - if (archive.length()>0) { - VamsasArchiveReader vreader = new VamsasArchiveReader(archive); - SimpleDocument sdoc = new SimpleDocument("testing vamsas watcher"); - try { - VamsasDocument d = sdoc.getVamsasDocument(vreader); - if (d!=null) { - ArchiveReports.reportDocument(d, vreader, false, System.out); - } - System.out.println("Update at "+System.currentTimeMillis()+"\n\n********************************************************\n"); - } catch (Exception e) { - log.error("Unmarshalling failed.",e); - } - vreader.close(); - w.setState(); - } - } - } - // break; - case 3: // set file - archive = new File(args[argc++]); - break; - case 4: - break; - default: - log.warn("Unknown command + "+args[argc++]); - } - } - } - } catch (Exception e) { - log.error(e); - } - - } -} +/* + * This file is part of the Vamsas Client version 0.1. + * Copyright 2009 by Jim Procter, Iain Milne, Pierre Marguerite, + * Andrew Waterhouse and Dominik Lindner. + * + * Earlier versions have also been incorporated into Jalview version 2.4 + * since 2008, and TOPALi version 2 since 2007. + * + * The Vamsas Client is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Vamsas Client is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with the Vamsas Client. If not, see . + */ +package uk.ac.vamsas.test.simpleclient; + +import java.io.File; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import uk.ac.vamsas.client.ClientHandle; +import uk.ac.vamsas.client.simpleclient.FileWatcher; +import uk.ac.vamsas.client.simpleclient.Lock; +import uk.ac.vamsas.client.simpleclient.SimpleDocument; +import uk.ac.vamsas.client.simpleclient.VamsasArchiveReader; +import uk.ac.vamsas.client.simpleclient.VamsasFile; +import uk.ac.vamsas.objects.core.VamsasDocument; + +/** + * demo of archive watching process - should mimic the clientsfileTest + * watcher/monitor process. + * + * @author jimp + * + */ +public class ArchiveWatcher { + private static Log log = LogFactory.getLog(ArchiveWatcher.class); + + private static CommandProcessor cproc = new CommandProcessor(); + static { + cproc.addCommand("new", 0, "no args"); + cproc.addCommand("delete", 0, "no args"); + cproc.addCommand("watch", 0, "no args"); + cproc.addCommand("file", 1, "Need vamsas archive as argument."); + } + + public static void main(String[] args) { + try { + + if (args != null && args.length > 0) { + File archive = new File(args[0]); + log.info("Watching file " + args[0]); + int argc = 1; + while (argc < args.length) { + // vars needed for operations + ClientHandle ch; + int com = cproc.getCommand(args, argc); + argc++; + switch (com) { + case 0: + // new + log.info("Doing locked deletion and new-file creation."); + { + if (!archive.exists()) + archive.createNewFile(); + VamsasFile sf = new VamsasFile(archive); + Lock l = sf.getLock(); + archive.delete(); + archive.createNewFile(); + sf.unLock(); + } + break; + case 1: + // delete + log.info("Deleting " + archive + " without locking it first."); + archive.delete(); + break; + case 2: + // watch + log.info("Endlessly Watching file " + archive); + /* + * if (!archive.exists()) archive.createNewFile(); + */// watch the new file... - taken straight from ClientsFileTest + FileWatcher w = new FileWatcher(archive); + while (true) { + // get watcher's lock to ensure state change is fixed for + // retrieval + Lock chlock = w.getChangedState(); + if (chlock != null) { + log.info("Got lock on " + + archive + + (archive.exists() ? " exists l=" + archive.length() + : "(non existant)")); + if (archive.length() > 0) { + VamsasArchiveReader vreader = new VamsasArchiveReader(archive); + SimpleDocument sdoc = new SimpleDocument( + "testing vamsas watcher"); + try { + VamsasDocument d = sdoc.getVamsasDocument(vreader); + if (d != null) { + ArchiveReports.reportDocument(d, vreader, false, + System.out); + } + System.out + .println("Update at " + + System.currentTimeMillis() + + "\n\n********************************************************\n"); + } catch (Exception e) { + log.error("Unmarshalling failed.", e); + } + vreader.close(); + w.setState(); + } + } + } + // break; + case 3: // set file + archive = new File(args[argc++]); + break; + case 4: + break; + default: + log.warn("Unknown command + " + args[argc++]); + } + } + } + } catch (Exception e) { + log.error(e); + } + + } +}