Session.java
/*
* CNR - IIT (2015-2016)
*
* @authors Fabio Bindi and Filippo Lauria
*/
package it.cnr.iit.ucs.sessionmanager;
import com.j256.ormlite.dao.ForeignCollection;
import com.j256.ormlite.field.DataType;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.field.ForeignCollectionField;
import com.j256.ormlite.table.DatabaseTable;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
/**
* Creates Session objects. It configures OrmLite annotations to persist these
* objects in the sessions table of the database.
*
* @author Fabio Bindi, Filippo Lauria and Antonio La Marra
*/
@DatabaseTable(tableName = "sessions")
public final class Session implements SessionInterface {
private static final Logger log = Logger.getLogger(Session.class.getName());
public static final String ID_FIELD_NAME = "id";
public static final String POLICYSET_FIELD_NAME = "policy_set";
public static final String ORIGINALREQUEST_FIELD_NAME = "original_request";
public static final String STATUS_FIELD_NAME = "status";
public static final String PEPURI_FIELD_NAME = "pep_uri";
public static final String MYIP_FIELD = "myip";
@DatabaseField(id = true, columnName = ID_FIELD_NAME)
private String id;
@DatabaseField(columnName = POLICYSET_FIELD_NAME, dataType = DataType.LONG_STRING)
private String policySet;
@DatabaseField(columnName = ORIGINALREQUEST_FIELD_NAME, dataType = DataType.LONG_STRING)
private String originalRequest;
@DatabaseField(columnName = STATUS_FIELD_NAME)
private String status;
@DatabaseField(columnName = PEPURI_FIELD_NAME)
private String pepURI;
@DatabaseField(columnName = MYIP_FIELD)
private String myIP;
@ForeignCollectionField(eager = true, columnName = OnGoingAttribute.ATTRIBUTEID_FIELD)
private ForeignCollection<OnGoingAttribute> onGoingAttributes;
public Session() {
}
/**
* @param id session ID
* @param policySet policy containing all the mutable attributes needed during the session
* @param originalRequest original XAML request containing information about the subject/object
* @param status status of the session
* @param pepURI URI of the PEP that started the session
*/
public Session(String id, String policySet, String originalRequest, String status, String pepURI,
String myIP) {
this.id = id;
this.policySet = policySet;
this.originalRequest = originalRequest;
this.status = status;
this.pepURI = pepURI;
this.myIP = myIP;
}
/**
* Retrieves session ID
*
* @return session ID
*/
@Override
public String getId() {
return id;
}
/**
* Sets the session ID
*
* @param id session ID to be set
*/
public void setId(String id) {
this.id = id;
}
/**
* Retrieves the PolicySet
*
* @return policySet
*/
@Override
public String getPolicySet() {
return policySet;
}
/**
* Sets the policySet
*
* @param policySet policySet to set
*/
public void setPolicySet(String policySet) {
this.policySet = policySet;
}
/**
* Retrieves the originalRequest
*
* @return originalRequest
*/
@Override
public String getOriginalRequest() {
return originalRequest;
}
/**
* Sets the originalRequest
*
* @param originalRequest originalRequest to be set
*/
public void setOriginalRequest(String originalRequest) {
this.originalRequest = originalRequest;
}
/**
* Retrieves the status of the session
*
* @return status
*/
@Override
public String getStatus() {
return status;
}
/**
* Sets the status of the session
*
* @param status status to be set
*/
public void setStatus(String status) {
this.status = status;
}
@Override
public boolean isStatus(String status) {
return this.status.equalsIgnoreCase(status);
}
/**
* Sets the URI of the PEP
*
* @param pepURI URI of the PEP to be set
*/
public void setPepURI(String pepURI) {
this.pepURI = pepURI;
}
public void setMyIP(String ip) {
this.myIP = ip;
}
/**
* Retrieves the list of mutable attributes of the session
*
* @return list of mutable attributes
*/
@Override
public List<OnGoingAttributesInterface> getOnGoingAttributes() {
List<OnGoingAttributesInterface> list = new ArrayList<>();
for (OnGoingAttribute onGoingAttribute : onGoingAttributes) {
list.add(onGoingAttribute);
}
return list;
}
/**
* Retrieves the list of mutable attributes of the session
*
* @return list of mutable attributes
*/
public List<OnGoingAttributesInterface> getOnGoingAttribute() {
List<OnGoingAttributesInterface> list = new ArrayList<>();
for (OnGoingAttributesInterface onGoingAttribute : onGoingAttributes) {
list.add(onGoingAttribute);
}
return list;
}
/**
* Retrieves the list of mutable attributes of the session
*
* @return list of mutable attributes
*/
public ForeignCollection<OnGoingAttribute> getOnGoingAttributesAsForeign() {
return onGoingAttributes;
}
@Override
public String toString() {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("SessionId = ").append(id).append("\nPolicySet = ").append(policySet).append("\n");
stringBuilder.append("OriginalRequest = ").append(originalRequest).append("\n");
stringBuilder.append("Status = ").append(status).append("\npepURI = ").append(pepURI).append("\n");
if (onGoingAttributes != null) {
stringBuilder.append("OnGoingAttributes = ");
try {
for (OnGoingAttribute a : onGoingAttributes) {
stringBuilder.append(a.toString()).append(" ");
}
} catch (NullPointerException e) {
log.warning("Error null ongoing attributes");
}
}
return stringBuilder.toString();
}
@Override
public String getPepId() {
return pepURI;
}
@Override
public String getIP() {
return myIP;
}
@Override
public void setRequest(String request) {
this.originalRequest = request;
}
}