import java.io.{FileOutputStream, File}
import gr.grnet.aquarium.util.{Loggable, stringOfStackTrace}
import gr.grnet.aquarium.util.date.{TimeHelpers, MutableDateCalc}
-import gr.grnet.aquarium.simulation.uid.{EAIOUUIDGenerator, UIDGenerator}
-import gr.grnet.aquarium.events.{UserEvent, ResourceEvent}
+import gr.grnet.aquarium.event.model.im.IMEventModel
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
* This is used whenever the property `events.store.folder` is setup in aquarium configuration.
*
- * The public methods guarantee they will not propagate any failure.
- *
* @author Christos KK Loverdos <loverdos@gmail.com>
*/
object LocalFSEventStore extends Loggable {
- private[this] final val UIDGen: UIDGenerator = EAIOUUIDGenerator
private[this] final val NewLine = "\n".getBytes("UTF-8")
private[this] final val NewLine2 = NewLine ++ NewLine
logger.debug("Wrote to file {}", file.getCanonicalPath)
}
- private[this] def resourceEventsFolder(root: File): File = {
+ private[this] def createResourceEventsFolder(root: File): File = {
val folder = new File(root, "rc")
folder.mkdirs()
folder
}
- private[this] def userEventsFolder(root: File): File = {
+ private[this] def createIMEventsFolder(root: File): File = {
val folder = new File(root, "im")
folder.mkdirs()
folder
folder: File,
jsonPayload: Array[Byte],
occurredString: String,
- uid: String,
extraName: Option[String],
isParsed: Boolean,
- appendString: Option[String] = None): Unit = {
+ appendString: Option[String]): Unit = {
val file = new File(
folder,
- "%s-%s%s.%s.%s.json".format(
+ "%s-%s%s.%s.json".format(
tag,
occurredString,
extraName match {
case Some(s) ⇒ "-" + s
case None ⇒ ""
},
- uid,
if(isParsed) "p" else "u"
))
def storeUnparsedResourceEvent(mc: Configurator, initialPayload: Array[Byte], exception: Throwable): Unit = {
for(root <- mc.eventsStoreFolder) {
- val uid = UIDGen.nextUID()
- val occurredMDC = new MutableDateCalc(TimeHelpers.nowMillis)
+ val occurredMDC = new MutableDateCalc(TimeHelpers.nowMillis())
val occurredString = occurredMDC.toFilename_YYYYMMDDHHMMSSSSS
- val rcEventsFolder = resourceEventsFolder(root)
+ val rcEventsFolder = createResourceEventsFolder(root)
val trace = stringOfStackTrace(exception)
- writeJson("rc", rcEventsFolder, initialPayload, occurredString, uid, None, false, Some(trace))
+ writeJson("rc", rcEventsFolder, initialPayload, occurredString, None, false, Some(trace))
}
}
- def storeResourceEvent(mc: Configurator, event: ResourceEvent, initialPayload: Array[Byte]): Unit = {
+ def storeResourceEvent(mc: Configurator, event: ResourceEventModel, initialPayload: Array[Byte]): Unit = {
require(event ne null, "Resource event must be not null")
for(root <- mc.eventsStoreFolder) {
- val uid = UIDGen.nextUID()
-
val occurredMDC = new MutableDateCalc(event.occurredMillis)
val occurredString = occurredMDC.toFilename_YYYYMMDDHHMMSSSSS
- val rcEventsFolder = resourceEventsFolder(root)
+ val rcEventsFolder = createResourceEventsFolder(root)
// Store parsed file
writeJson(
rcEventsFolder,
initialPayload,
occurredString,
- uid,
Some("[%s]-[%s]-[%s]-[%s]".format(
event.id,
event.userID,
event.resource,
event.instanceID)),
- true
+ true,
+ None
)
}
}
- def storeUnparsedUserEvent(mc: Configurator, initialPayload: Array[Byte], exception: Throwable): Unit = {
+ def storeUnparsedIMEvent(mc: Configurator, initialPayload: Array[Byte], exception: Throwable): Unit = {
for(root <- mc.eventsStoreFolder) {
- val uid = UIDGen.nextUID()
- val occurredMDC = new MutableDateCalc(TimeHelpers.nowMillis)
+ val occurredMDC = new MutableDateCalc(TimeHelpers.nowMillis())
val occurredString = occurredMDC.toFilename_YYYYMMDDHHMMSSSSS
- val rcEventsFolder = userEventsFolder(root)
+ val imEventsFolder = createIMEventsFolder(root)
val trace = stringOfStackTrace(exception)
- writeJson("im", rcEventsFolder, initialPayload, occurredString, uid, None, false, Some(trace))
+ writeJson("im", imEventsFolder, initialPayload, occurredString, None, false, Some(trace))
}
}
- def storeUserEvent(mc: Configurator, event: UserEvent, initialPayload: Array[Byte]): Unit = {
- require(event ne null, "User event must be not null")
+ def storeIMEvent(mc: Configurator, event: IMEventModel, initialPayload: Array[Byte]): Unit = {
+ require(event ne null, "IM event must be not null")
for(root <- mc.eventsStoreFolder) {
- val uid = UIDGen.nextUID()
-
val occurredMDC = new MutableDateCalc(event.occurredMillis)
val occurredString = occurredMDC.toFilename_YYYYMMDDHHMMSSSSS
- val imEventsFolder = userEventsFolder(root)
+ val imEventsFolder = createIMEventsFolder(root)
writeJson(
"im",
imEventsFolder,
initialPayload,
occurredString,
- uid,
Some("[%s]-[%s]".format(event.id, event.userID)),
- true
+ true,
+ None
)
}
}