/*
* DrakkarKeel - An Enterprise Collaborative Search Platform
*
* The contents of this file are subject under the terms described in the
* DRAKKARKEEL_LICENSE file included in this distribution; you may not use this
* file except in compliance with the License.
*
* 2013-2014 DrakkarKeel Platform.
*/
package drakkar.stern.servant;
import drakkar.oar.Communication;
import drakkar.oar.Request;
import drakkar.oar.util.KeyTransaction;
import drakkar.stern.Stern;
import drakkar.stern.controller.ContainerController;
import drakkar.stern.controller.SessionController;
import java.util.*;
/**
* Esta clase constitye el sirviente del objeto ice Configuration, por lo cual
* implementa los métodos definidos en esta interfaz, los cuales tienen objetivo
* brindar a los desarrolladores operaciones que le permitan la administración
* del servidor
*/
public class ConfigurationServant {
private ArrayList<ContainerController> containersList = null;
private Communication communication = null;
private Stern server = null;
/**
* Constructor de la clase.
*
* @param containers lista de ContainerController
* @param comm objeto Communnication
* @param serv objeto Stern
*/
public ConfigurationServant(ArrayList<ContainerController> containers, Communication comm, Stern serv) {
this.containersList = containers;
this.communication = comm;
this.server = serv;
}
/**
* Devuelve el uuid de un contenedor apartir de su nombre
*
* @param request objeto que contiene el nombre de la operación y los
* parámetros de entrada del método
*
* @return uuid del contenedor
*/
public String getUUIDContainer(Request request) {
String name = (String) request.get(KeyTransaction.CONTAINER_NAME);
String uuid = null;
for (ContainerController item : containersList) {
if (item.servant.getName().equals(name)) {
uuid = item.servant.getUUID();
break;
}
}
return uuid;
}
/**
* Elimina una sesión apartir del uuid de su contenedor y su nombre
*
* @param request objeto que contiene el nombre de la operación y los
* parámetros de entrada del método
*
* @return true si se elimino la sesión, false en caso contrario.
*/
public boolean removeNameSession(Request request) {
boolean flag = false;
String containerUUID = (String) request.get(KeyTransaction.CONTAINER_UUID);
String sessionName = (String) request.get(KeyTransaction.SESSION_NAME);
// implementación
return flag;
}
/**
* Elimina una sesión apartir del uuid de su contenedor y su id
*
* @param request objeto que contiene el nombre de la operación y los
* parámetros de entrada del método
*
* @return un objeto Response con el resultado de la operación
*/
public boolean removeIdSession(Request request) {
boolean flag = false;
String containerUUID = (String) request.get(KeyTransaction.CONTAINER_UUID);
String sessionID = (String) request.get(KeyTransaction.SESSION_ID);
// code
//
return flag;
}
/**
* Este método crea una sesión persitente
*
* @param request - objeto que contiene el nombre de la operación y los
* parámetros de entrada del método
*
* Estructura del Objeto Request:
* <OPERATION,CREATE_SESSION> nombre de la operación
* <CONTAINER_UUID,....> uuid del contenedor de la sesión
* <SESSION_ID,........> id de la sesión
* <SESSION_NAME,......> nombre de la sesión
* <SESSION_DESCRIPTION,......> descripción de la sesión
*
* @return un objeto Response con el resultado de la operación
*/
public boolean createSession(Request request) {
boolean flag = false;
String containerUUID = (String) request.get(KeyTransaction.CONTAINER_UUID);
String sessionName = (String) request.get(KeyTransaction.SESSION_NAME);
String sessionDesc = (String) request.get(KeyTransaction.SESSION_DESCRIPTION);
for (ContainerController item : containersList) {
if (containerUUID.equals(item.servant.getUUID())) {
SessionController session = new SessionController(communication,
item.servant, sessionName, sessionDesc, server.getUUID());
if (session != null) {
// Connection Conexcion = null;
// ClsPersistenciaCache CacheObjetosPersistentes;
// Conexion = item.getConectPersistence();
// CacheObjetosPersistentes = new ClsPersistenciaCache();
// publicarCache(CacheObjetosPersistentes, Conexcion,session.getsessionI()());
// session.getSessionI().setCache(CacheObjetosPersistentes);
// session.getJSession().setPersistence(item.getConectPersistence());
// session.setUUIDClass(item.getUUIDClass());
// session.startServerCommunicationWithPersistence();
flag = true;
// item.AdicionarSessionConPersistencia(session);
}
}
}
return flag;
}
/**
* Este método registra un nuevo miembro(Member) en servidor
*
* @param request - objeto que contiene el nombre de la operación y los
* parámetros de entrada del método
*
* Estructura del Objeto Request:
* <"met","registerMember"> nombre de la operación
* <"member", Member> instancia de la clase Member
*
* @return un objeto Response con el resultado de la operación
*/
public boolean registerMember(Request request) {
boolean flag = false;
return flag;
}
/**
* Elimina un miembro(Member) del servidor
*
* @param request objeto que contiene el nombre de la operación y los
* parámetros de entrada del método
*
* Estructura del Objeto Request:
* <"met","unregisterMember"> nombre de la operación
* <"member", Member> instancia de la clase Member
*
* @return un objeto Response con el resultado de la operación
*/
public boolean unregisterMember(Request request) {
boolean flag = false;
return flag;
}
}