/** * ClarescoExperienceAPI * Copyright * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * Please contact Claresco, www.claresco.com, if you have any questions. **/ package com.claresco.tinman.lrs; import java.util.*; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.ISODateTimeFormat; import com.claresco.tinman.lrs.*; /** * XAPI_Statement.java * * The implementation for statement * * * * @author rheza * on Jan 14, 2014 * */ public class XapiStatement{ private UUID myID; private XapiActor myActor; private XapiVerb myVerb; private XapiObject myObject; private XapiResult myResult; private XapiContext myContext; private DateTime myTimeStamp; private String myTimeStampAsString; private DateTime myStored; private XapiAuthority myAuthority; private boolean isVoiding; /** * * Constructor * * Params: * * */ public XapiStatement(XapiActor theActor, XapiVerb theVerb, XapiObject theObject, XapiResult theResult, XapiContext theContext, String theTimeStamp){ this.myID = UUID.randomUUID(); this.myActor = theActor; this.myVerb = theVerb; this.myObject = theObject; this.myResult = theResult; this.myContext = theContext; this.myTimeStampAsString = theTimeStamp; DateTimeFormatter theFormatter = ISODateTimeFormat.dateTimeParser(); if(theTimeStamp != null){ myTimeStamp = theFormatter.parseDateTime(theTimeStamp); } else{ myTimeStamp = null; } this.isVoiding = myVerb.isVoided(); } public XapiStatement(UUID theID, XapiActor theActor, XapiVerb theVerb, XapiObject theObject, XapiResult theResult, XapiContext theContext, String theTimeStamp){ this(theActor, theVerb, theObject, theResult, theContext, theTimeStamp); if(theID != null){ this.myID = theID; } } public XapiStatement(UUID theID, XapiActor theActor, XapiVerb theVerb, XapiObject theObject, XapiResult theResult, XapiContext theContext, String theTimeStamp, DateTime theStored){ this(theID, theActor, theVerb, theObject, theResult, theContext, theTimeStamp); this.myStored = theStored; } public boolean isNested(){ if(this.myObject.getObjectType().equals("SubStatement")){ return true; } return false; } /** * @return the myActor */ public XapiActor getActor() { return myActor; } /** * @return the myObject */ public XapiObject getObject() { return myObject; } public XapiVerb getVerb(){ return this.myVerb; } public String getId(){ return this.myID.toString(); } public XapiResult getResult(){ return this.myResult; } public XapiContext getContext(){ return this.myContext; } public DateTime getTimeStamp(){ return this.myTimeStamp; } public String getTimeStampAsString(){ return this.myTimeStampAsString; } public DateTime getStored(){ return this.myStored; } public boolean hasID(){ return this.myID != null; } public boolean hasActor(){ return this.myActor != null; } public boolean hasVerb(){ return this.myVerb != null; } public boolean hasObject(){ return this.myObject != null; } public boolean hasResult(){ return this.myResult != null; } public boolean hasContext(){ return this.myContext != null; } public boolean hasTimeStamp(){ return this.myTimeStamp != null; } public boolean isValid(){ return hasID() && hasActor() && hasVerb() && hasObject(); } public boolean isVoiding(){ return isVoiding; } public void setID(String theID){ this.myID = UUID.fromString(theID); } // bunch of other stuffs public String toString(){ return "[id: " + myID.toString() + "\nactor: " + myActor + "\nverb: " + myVerb + "\nobject: " + myObject + "\nresult: " + myResult + "\ncontext: " + myContext +"]"; } }