Author: tchemit Date: 2008-04-05 20:37:02 +0000 (Sat, 05 Apr 2008) New Revision: 361 Modified: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/runner/VCSActionManager.java trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/runner/VCSActionThread.java Log: refactor PRovider, Handler and Connexion Modified: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/runner/VCSActionManager.java =================================================================== --- trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/runner/VCSActionManager.java 2008-04-05 20:36:45 UTC (rev 360) +++ trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/runner/VCSActionManager.java 2008-04-05 20:37:02 UTC (rev 361) @@ -15,10 +15,7 @@ package org.codelutin.vcs.runner; import org.codelutin.vcs.VCSAction; -import org.codelutin.vcs.VCSFileState; -import org.codelutin.vcs.VCSHandler; -import org.codelutin.vcs.VCSHandlerEvent; -import org.codelutin.vcs.VCSHandlerEventListener; +import org.codelutin.vcs.VCSEntry; import java.util.concurrent.PriorityBlockingQueue; @@ -29,10 +26,10 @@ * * @author chemit */ -public class VCSActionManager implements VCSHandlerEventListener { +public class VCSActionManager { /** special item to add in queue to stop the thread */ - protected static final QueueItem STOP_ITEM = new QueueItem(null, new VCSFileState[0]); + protected static final QueueItem STOP_ITEM = new QueueItem(null, new VCSEntry[0], null); /** vcs actions runner thread */ protected VCSActionThread thread; @@ -40,54 +37,60 @@ /** queue */ protected PriorityBlockingQueue<QueueItem> queue; - public VCSActionManager(VCSHandler handler) { + public VCSActionManager() { queue = new PriorityBlockingQueue<QueueItem>(1024); - thread = new VCSActionThread(handler, queue); - handler.addVCSHandlerEventListener(this); } - public boolean add(VCSAction action, VCSFileState[] states) { - QueueItem queueItem = new QueueItem(action, states); + public boolean add(VCSAction action, VCSEntry[] states, String message) { + QueueItem queueItem = new QueueItem(action, states, message); return queue.add(queueItem); } - public void init(VCSHandlerEvent event) { + public void open() { + if (thread != null) { + // thread is already opend + throw new IllegalStateException("thread is already opened"); + } + (thread = new VCSActionThread(queue)).start(); } - public void open(VCSHandlerEvent event) { - thread.start(); - } - - public void close(VCSHandlerEvent event) { - thread.handler.removeVCSHandlerEventListener(this); + public void close() { if (!queue.isEmpty()) { queue.clear(); } queue.add(VCSActionManager.STOP_ITEM); + // remove thread reference: threas was stopped, and can not be any longer restart... + thread = null; } /** @author chemit */ public static class QueueItem implements Comparable<QueueItem> { protected long time; - protected VCSFileState[] states; + + protected VCSEntry[] entries; protected VCSAction action; + protected String message; - - public QueueItem(VCSAction action, VCSFileState[] states) { + public QueueItem(VCSAction action, VCSEntry[] entries, String message) { this.time = System.nanoTime(); - this.states = states; + this.entries = entries; this.action = action; + this.message = message; } public VCSAction getAction() { return action; } - public VCSFileState[] getStates() { - return states; + public VCSEntry[] getEntries() { + return entries; } + public String getMessage() { + return message; + } + @Override public boolean equals(Object o) { return this == o || o instanceof QueueItem && time == ((QueueItem) o).time; @@ -100,7 +103,7 @@ @Override public String toString() { - return super.toString() + ", time:" + time + ", action:" + action + ", size:" + (states == null ? 0 : states.length); + return super.toString() + ", time:" + time + ", action:" + action + ", size:" + (entries == null ? 0 : entries.length); } public int compareTo(QueueItem o) { Modified: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/runner/VCSActionThread.java =================================================================== --- trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/runner/VCSActionThread.java 2008-04-05 20:36:45 UTC (rev 360) +++ trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/runner/VCSActionThread.java 2008-04-05 20:37:02 UTC (rev 361) @@ -17,7 +17,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import static org.codelutin.i18n.I18n._; -import org.codelutin.vcs.VCSHandler; +import org.codelutin.vcs.VCSException; import java.util.Date; import java.util.concurrent.BlockingQueue; @@ -31,12 +31,8 @@ /** queue */ protected BlockingQueue<VCSActionManager.QueueItem> queue; - /** handler to use for vcs operations */ - protected VCSHandler handler; - - public VCSActionThread(VCSHandler handler, BlockingQueue<VCSActionManager.QueueItem> queue) { - super("VCSAction Thread [" + handler + "]"); - this.handler = handler; + public VCSActionThread(BlockingQueue<VCSActionManager.QueueItem> queue) { + super("VCSActionThread"); this.queue = queue; } @@ -47,8 +43,6 @@ VCSActionManager.QueueItem item = null; try { while (run) { - // item qui sert a faire la simulation courante - log.info("waiting for action..."); item = queue.take(); if (item.getAction() == null) { @@ -67,8 +61,9 @@ log.info("Stop " + getName() + " at " + new Date()); } - protected void doAction(VCSActionManager.QueueItem item) { - log.info("Just take " + item); + protected void doAction(VCSActionManager.QueueItem item) throws VCSException { + log.info(item); + //TODO switch (item.getAction()) { case ADD: break; @@ -93,5 +88,4 @@ } } - }
participants (1)
-
tchemit@users.labs.libre-entreprise.org