diff options
Diffstat (limited to 'orktrack/src/net/sf/oreka/orktrack/TapeManager.java')
-rw-r--r-- | orktrack/src/net/sf/oreka/orktrack/TapeManager.java | 78 |
1 files changed, 78 insertions, 0 deletions
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"); + } + } + } +} |