diff options
6 files changed, 116 insertions, 16 deletions
diff --git a/orkbasej/java/net/sf/oreka/persistent/RecSegment.java b/orkbasej/java/net/sf/oreka/persistent/RecSegment.java index 009070b..30a848e 100644 --- a/orkbasej/java/net/sf/oreka/persistent/RecSegment.java +++ b/orkbasej/java/net/sf/oreka/persistent/RecSegment.java @@ -48,7 +48,8 @@ public class RecSegment { private Direction direction;; private User user; private String loginString = ""; - private RecPort port; + private RecPort recPort; + private String recPortName; //private java.util.Set RecPrograms; private Collection<RecProgram> recPrograms; @@ -307,13 +308,23 @@ public class RecSegment { } @ManyToOne - public RecPort getPort() { - return port; + public RecPort getRecPort() { + return recPort; } - public void setPort(RecPort port) { - this.port = port; + public void setRecPort(RecPort port) { + this.recPort = port; } + + public String getRecPortName() { + return recPortName; + } + + + public void setRecPortName(String recPortName) { + this.recPortName = recPortName; + } + diff --git a/orkbasej/java/net/sf/oreka/persistent/RecTape.java b/orkbasej/java/net/sf/oreka/persistent/RecTape.java index 67bc16b..8278c29 100644 --- a/orkbasej/java/net/sf/oreka/persistent/RecTape.java +++ b/orkbasej/java/net/sf/oreka/persistent/RecTape.java @@ -38,7 +38,8 @@ public class RecTape { private String localEntryPoint = ""; private String remoteParty = ""; private Direction direction; - private RecPort port; + private RecPort recPort; + private String recPortName; private Date expiryTimestamp = new Date(0); public RecTape() @@ -153,15 +154,15 @@ public class RecTape { * @return Returns the port. */ @ManyToOne - public RecPort getPort() { - return port; + public RecPort getRecPort() { + return recPort; } /** * @param port The port to set. */ - public void setPort(RecPort port) { - this.port = port; + public void setRecPort(RecPort port) { + this.recPort = port; } /** @@ -244,5 +245,15 @@ public class RecTape { return "javascript:play('" + getUrl() + "')"; } + + public String getRecPortName() { + return recPortName; + } + + + public void setRecPortName(String recPortName) { + this.recPortName = recPortName; + } + } diff --git a/orktrack/src/net/sf/oreka/orktrack/Port.java b/orktrack/src/net/sf/oreka/orktrack/Port.java index 4ebd1e3..72a82fb 100644 --- a/orktrack/src/net/sf/oreka/orktrack/Port.java +++ b/orktrack/src/net/sf/oreka/orktrack/Port.java @@ -163,7 +163,7 @@ public class Port { recSegment.setLocalParty(metadataMessage.getLocalParty()); recSegment.setLocalEntryPoint(metadataMessage.getLocalEntryPoint()); recSegment.setRecSessionOffset(0); - recSegment.setPort(recPort); + recSegment.setRecPort(recPort); if(metadataMessage.getLocalParty() != "") { User user = UserManager.instance().getByLoginString(metadataMessage.getLocalParty(), hbnSession); @@ -218,7 +218,7 @@ public class Port { recTape.setExpiryTimestamp(new Date()); recTape.setFilename(stopMessage.getFilename()); recTape.setLocalParty(stopMessage.getLocalParty()); - recTape.setPort(recPort); + recTape.setRecPort(recPort); recTape.setRemoteParty(stopMessage.getRemoteParty()); recTape.setTimestamp(timestamp); recTape.setService(srv); @@ -234,7 +234,7 @@ public class Port { recSegment.setLocalParty(stopMessage.getLocalParty()); recSegment.setLocalEntryPoint(stopMessage.getLocalEntryPoint()); recSegment.setRecTape(recTape); - recSegment.setPort(recPort); + recSegment.setRecPort(recPort); if(stopMessage.getLocalParty() != "") { User user = UserManager.instance().getByLoginString(stopMessage.getLocalParty(), hbnSession); diff --git a/orktrack/src/net/sf/oreka/orktrack/ProgramManager.java b/orktrack/src/net/sf/oreka/orktrack/ProgramManager.java index c21e688..8bcbd94 100644 --- a/orktrack/src/net/sf/oreka/orktrack/ProgramManager.java +++ b/orktrack/src/net/sf/oreka/orktrack/ProgramManager.java @@ -151,7 +151,7 @@ public class ProgramManager { if ( !drop && (prog.getTargetPort() != null) && - (seg.getPort().getId() != prog.getTargetPort().getId()) ) { + (seg.getRecPort().getId() != prog.getTargetPort().getId()) ) { dropReason = "Target Port"; drop = true; } diff --git a/orktrack/src/net/sf/oreka/orktrack/TapeManager.java b/orktrack/src/net/sf/oreka/orktrack/TapeManager.java new file mode 100644 index 0000000..21544bf --- /dev/null +++ b/orktrack/src/net/sf/oreka/orktrack/TapeManager.java @@ -0,0 +1,78 @@ +package net.sf.oreka.orktrack; + +import java.util.Date; + +import net.sf.oreka.orktrack.messages.TapeMessage; +import net.sf.oreka.persistent.RecSegment; +import net.sf.oreka.persistent.RecTape; +import net.sf.oreka.persistent.Service; +import net.sf.oreka.persistent.User; + +import org.apache.log4j.Logger; +import org.hibernate.Session; + +public class TapeManager { + + static Logger logger = Logger.getLogger(TapeManager.class); + + static TapeManager tapeManager = null; + + private TapeManager () { + } + + public static TapeManager instance() { + if (tapeManager == null) { + tapeManager = new TapeManager(); + } + return tapeManager; + } + + + public void notifyTapeMessage(TapeMessage tapeMessage, Session hbnSession, Service srv) { + + if (tapeMessage.getStage() == TapeMessage.CaptureStage.START) { + ; // tape start message + } + else { + // Tape stop message + long date = ((long)tapeMessage.getTimestamp()) * 1000; + Date timestamp = new Date(date); + + // create a new tape record + RecTape recTape = new RecTape(); + recTape.setDirection(tapeMessage.getDirection()); + recTape.setDuration(tapeMessage.getDuration()); + recTape.setExpiryTimestamp(new Date()); + recTape.setFilename(tapeMessage.getFilename()); + recTape.setLocalParty(tapeMessage.getLocalParty()); + recTape.setRecPortName(tapeMessage.getCapturePort()); + recTape.setRemoteParty(tapeMessage.getRemoteParty()); + recTape.setTimestamp(timestamp); + recTape.setService(srv); + hbnSession.save(recTape); + logger.info("Written tape:" + tapeMessage.getRecId() + " as " + recTape.getId()); + + RecSegment recSegment = new RecSegment(); + recSegment.setTimestamp(timestamp); + recSegment.setDirection(tapeMessage.getDirection()); + recSegment.setDuration(tapeMessage.getDuration()); + recSegment.setRemoteParty(tapeMessage.getRemoteParty()); + recSegment.setLocalParty(tapeMessage.getLocalParty()); + recSegment.setLocalEntryPoint(tapeMessage.getLocalEntryPoint()); + recSegment.setRecTape(recTape); + recSegment.setRecPortName(recTape.getRecPortName()); + + if(tapeMessage.getLocalParty() != "") { + User user = UserManager.instance().getByLoginString(tapeMessage.getLocalParty(), hbnSession); + recSegment.setUser(user); + } + if (ProgramManager.instance().filterSegmentAgainstAllPrograms(recSegment, hbnSession)) { + hbnSession.save(recSegment); + logger.info("Written segment:" + tapeMessage.getRecId() + " as " + recSegment.getId()); + } + else { + logger.info("Tape:" + tapeMessage.getRecId() + " generates no segment"); + } + } + } +} diff --git a/orktrack/src/net/sf/oreka/orktrack/test/PortTest.java b/orktrack/src/net/sf/oreka/orktrack/test/PortTest.java index 9c4e30c..9359ffb 100644 --- a/orktrack/src/net/sf/oreka/orktrack/test/PortTest.java +++ b/orktrack/src/net/sf/oreka/orktrack/test/PortTest.java @@ -190,8 +190,8 @@ public class PortTest extends TestCase { Session hbnSession = OrkTrack.hibernateManager.getSession(); Transaction tx = hbnSession.beginTransaction(); - Service recService = ServiceManager.retrieveOrCreate("recservice", hbnSession); - Service ctiService = ServiceManager.retrieveOrCreate("ctiservice", hbnSession); + Service recService = ServiceManager.retrieveOrCreate("recservice", "localhost", hbnSession); + Service ctiService = ServiceManager.retrieveOrCreate("ctiservice", "localhost", hbnSession); ctiService.setRecordMaster(true); hbnSession.save(recService); |