
//crea un nuevo sistema con todas sus colecciones de objetos vacías
Sistema sistema = new Sistema((new LinkedList()), (new LinkedList()), (new LinkedList()), (new LinkedList()), (new LinkedList()),(new LinkedList()),(new LinkedList()),(new LinkedList()));

//Crea un comando CrearRol
CrearRol crearRol = new CrearRol();

//Arma la HashMap con el sistema, el nombre y la descripcion del rol
Map m = new HashMap();
m.put(Constants.SISTEMA,sistema);
m.put(Constants.NOMBRE,Constants.ADMIN);
m.put(Constants.DESCRIPCION,"rol de administrador de sistema");
//Ejecuta el comando
Rol rolAdmin = (Rol) crearRol.execute(m);

//Creamos el rol de lider de proyecto
//Arma la HashMap con el sistema, el nombre y la descripcion del rol
m.clear();
m.put(Constants.SISTEMA,sistema);
m.put(Constants.NOMBRE,Constants.LIDER);
m.put(Constants.DESCRIPCION,"rol de lider de proyecto");
//Ejecuta el comando
Rol rolLider = (Rol) crearRol.execute(m);

//Crea un comando AgregarFuncionRol
AgregarFuncionRol agregarFuncionRol = new AgregarFuncionRol();

//Arma la HashMap con el rol de administrador y el comando crearRol a agregar
m.clear();
m.put(Constants.ROL,rolAdmin);
m.put(Constants.FUNCION,crearRol);
//Ejecuta el comando AgregarFuncionRol
agregarFuncionRol.execute(m);

//Arma la HashMap con el rol de administrador y el comando AgregarFuncionRol a agregar
m.clear();
m.put(Constants.ROL,rolAdmin);
m.put(Constants.FUNCION,agregarFuncionRol);
//Ejecuta el comando
agregarFuncionRol.execute(m);

String msg = new String();
Usuario usrAdmin = new Usuario();
Usuario usrLider = new Usuario();
Usuario usrMiembro1 = new Usuario();

//Crea un comando AgregarUsuario
AgregarUsuario agregarUsuario = new AgregarUsuario();

//Crea un comando CambiarEstadoReq
CambiarEstadoReq crearEstadoReq = new CambiarEstadoReq();

//Crea un rol analista
//Arma la HashMap con el sistema, el nombre y la descripcion del rol
m.clear();
m.put(Constants.SISTEMA,sistema);
m.put(Constants.NOMBRE,"Analista");
m.put(Constants.DESCRIPCION,"rol de analista de proyecto");
//Ejecuta el comando
Rol rolAnalista = (Rol) crearRol.execute(m);

//Crea un rol desarrollador
//Arma la HashMap con el sistema, el nombre y la descripcion del rol
m.clear();
m.put(Constants.SISTEMA,sistema);
m.put(Constants.NOMBRE,"Desarrollador");
m.put(Constants.DESCRIPCION,"rol de desarrollador de proyecto");
//Ejecuta el comando
Rol rolDesarrollador = (Rol) crearRol.execute(m);

try {
//Crea un usuario
m.clear();
m.put(Constants.NOMBRE,"Juan Pablo");
m.put(Constants.APELLIDO,"Giecco");
m.put(Constants.PASSWORD,"linuxerocc2004");
m.put(Constants.USER,"linuxero");
List roles = new LinkedList();
roles.add(rolAdmin); 
m.put(Constants.ROLES,roles);
m.put(Constants.SISTEMA,sistema);
//Ejecuta el comando
usrAdmin = (Usuario) agregarUsuario.execute(m);
}
catch (ExcepcionUsuarioExistente e) {
	msg = e.getMessage();
}

try {
//	Crea otro usuario
  m.clear();
  m.put(Constants.NOMBRE,"German A.");
  m.put(Constants.APELLIDO,"Simoncini");
  m.put(Constants.PASSWORD,"pato2004");
  m.put(Constants.USER,"pato");
  List roles = new LinkedList();
  roles.add(rolLider);
  m.put(Constants.ROLES,roles);
  m.put(Constants.SISTEMA,sistema);
  usrLider = (Usuario) agregarUsuario.execute(m);
}
catch (ExcepcionUsuarioExistente e) {
	msg = e.getMessage();
}

try {
//	Crea otro usuario
  m.clear();
  m.put(Constants.NOMBRE,"Luciano");
  m.put(Constants.APELLIDO,"Gonzalez");
  m.put(Constants.PASSWORD,"luchoriver2004");
  m.put(Constants.USER,"lucho");
  List roles = new LinkedList();
  roles.add(rolAnalista);
  roles.add(rolDesarrollador);
  m.put(Constants.ROLES,roles);
  m.put(Constants.SISTEMA,sistema);
  usrMiembro1 = (Usuario) agregarUsuario.execute(m);
}
catch (ExcepcionUsuarioExistente e) {
	msg = e.getMessage();
}

//Crea un comando CrearTipoEstado
CrearTipoEstado crearTipoEstado = new CrearTipoEstado();
TipoEstado creado=null;
TipoEstado finalizado=null;
TipoEstado desarrollo=null;
TipoEstado analisis=null;
TipoEstado implementacion=null;

//Crea el tipo de estado creado
m.clear();
m.put(Constants.SISTEMA,sistema);
m.put(Constants.NOMBRE,Constants.CREADO);
m.put(Constants.DESCRIPCION,"estado inicial");
creado=(TipoEstado)crearTipoEstado.execute(m);

//Crea el tipo de estado desarrollo
m.clear();
m.put(Constants.SISTEMA,sistema);
m.put(Constants.NOMBRE,"desarrollo");
m.put(Constants.DESCRIPCION,"estado en desarrollo");
desarrollo=(TipoEstado)crearTipoEstado.execute(m);

//Crea el tipo de estado análisis
m.clear();
m.put(Constants.SISTEMA,sistema);
m.put(Constants.NOMBRE,"analisis");
m.put(Constants.DESCRIPCION,"estado en analisis");
analisis=(TipoEstado)crearTipoEstado.execute(m);

//Crea el tipo de estado implementacion
m.clear();
m.put(Constants.SISTEMA,sistema);
m.put(Constants.NOMBRE,"implementacion");
m.put(Constants.DESCRIPCION,"estado en implementacion");
implementacion=(TipoEstado)crearTipoEstado.execute(m);

//Crea el tipo de estado finalizado
m.clear();
m.put(Constants.SISTEMA,sistema);
m.put(Constants.NOMBRE,Constants.FINALIZADO);
m.put(Constants.DESCRIPCION,"estado final");
finalizado=(TipoEstado)crearTipoEstado.execute(m);

//Crea el comando AgregarProyecto
AgregarProyecto agregarProyecto = new AgregarProyecto();

//Arma la HashMap con el rol de lider de proyecto y el comando AgregarProyecto a agregar
m.clear();
m.put(Constants.SISTEMA,sistema);
m.put(Constants.ROL,rolLider);
m.put(Constants.FUNCION,agregarProyecto);
agregarFuncionRol.execute(m);

//Arma la HashMap con el nombre del proyecto, la descripción, el usuario que será el lider de proyecto y el sistema
Proyecto proyecto=null;
m.clear();
m.put(Constants.NOMBRE, "CD Software Libre U.N.L.P");
m.put(Constants.DESCRIPCION,"Cd con Software Libre para Windows creado por el Centro de Estudiantes de Facultad " +
	"de Informática de La Plata");
m.put(Constants.USUARIO,usrLider);
m.put(Constants.SISTEMA,sistema);
try{
proyecto=(Proyecto)agregarProyecto.execute(m);}
catch (ExcepcionUsuarioNoRolLider e) {
	msg = e.getMessage();
}

//Crea el comando AgregarMiembro
AgregarMiembro agregarMiembro = new AgregarMiembro();

//Arma la HashMap con el sistema, el proyecto, el usuario, y la coleccion de roles
m.clear();
m.put(Constants.USUARIO,usrMiembro1);
m.put(Constants.SISTEMA,sistema);
m.put(Constants.PROYECTO, proyecto);
List roles = new LinkedList();
roles.add(rolAnalista);
roles.add(rolDesarrollador);
m.put(Constants.ROLES,roles);
agregarMiembro.execute(m);

//fdsfsdfsdfsd
TipoRequerimiento tReqReporteBug=null;
TipoRequerimiento tReqAmpliacion=null;

//Crea un comando CrearTipoReq
CrearTipoReq crearTipoReq = new CrearTipoReq();

//Arma la HashMap con el Sistema, el nombre del tipo de requerimiento, la descripción, y el proyecto 
//al cual se va a agregar el tipo de requerimiento
m.clear();
m.put(Constants.SISTEMA,sistema);
m.put(Constants.NOMBRE,"Reporte de Bug");
m.put(Constants.DESCRIPCION,"reporte de una falla");
m.put(Constants.PROYECTO,proyecto);
//Ejecuta el comando
tReqReporteBug=(TipoRequerimiento)crearTipoReq.execute(m); 

//Crea el comando CrearCamino
AgregarCamino agregarCamino = new AgregarCamino();

//Arma la HashMap con  un tipo de estado origen, un tipo de estado destino , un tipo de requerimiento y un proyecto
m.clear();
m.put(Constants.ORIGEN,creado);
m.put(Constants.DESTINO,analisis);
m.put(Constants.TIPOREQ,tReqReporteBug);
m.put(Constants.PROYECTO,proyecto);
agregarCamino.execute(m);

//Arma la HashMap con  un tipo de estado origen, un tipo de estado destino , un tipo de requerimiento y un proyecto
m.clear();
m.put(Constants.ORIGEN,analisis);
m.put(Constants.DESTINO,desarrollo);
m.put(Constants.TIPOREQ,tReqReporteBug);
m.put(Constants.PROYECTO,proyecto);
agregarCamino.execute(m);

//Arma la HashMap con  un tipo de estado origen, un tipo de estado destino , un tipo de requerimiento y un proyecto
m.clear();
m.put(Constants.ORIGEN,desarrollo);
m.put(Constants.DESTINO,finalizado);
m.put(Constants.TIPOREQ,tReqReporteBug);
m.put(Constants.PROYECTO,proyecto);
agregarCamino.execute(m);
 
//Arma la HashMap con  un tipo de estado origen, un tipo de estado destino , un tipo de requerimiento y un proyecto
m.clear();
m.put(Constants.ORIGEN,creado);
m.put(Constants.DESTINO,desarrollo);
m.put(Constants.TIPOREQ,tReqReporteBug);
m.put(Constants.PROYECTO,proyecto);
agregarCamino.execute(m);

//Arma la HashMap con el Sistema, el nombre del tipo de requerimiento, la descripción, y el proyecto 
//al cual se va a agregar el tipo de requerimiento
m.clear();
m.put(Constants.SISTEMA,sistema);
m.put(Constants.NOMBRE,"ampliacion");
m.put(Constants.DESCRIPCION,"Se decide agregar funcionalidad");
m.put(Constants.PROYECTO,proyecto);
//Ejecuta el comando
tReqAmpliacion=(TipoRequerimiento)crearTipoReq.execute(m); 

//Arma la HashMap con  un tipo de estado origen, un tipo de estado destino , un tipo de requerimiento y un proyecto
m.clear();
m.put(Constants.ORIGEN,creado);
m.put(Constants.DESTINO,analisis);
m.put(Constants.TIPOREQ,tReqAmpliacion);
m.put(Constants.PROYECTO,proyecto);
agregarCamino.execute(m);

//Arma la HashMap con  un tipo de estado origen, un tipo de estado destino , un tipo de requerimiento y un proyecto
m.clear();
m.put(Constants.ORIGEN,analisis);
m.put(Constants.DESTINO,desarrollo);
m.put(Constants.TIPOREQ,tReqAmpliacion);
m.put(Constants.PROYECTO,proyecto);
agregarCamino.execute(m);

//Arma la HashMap con  un tipo de estado origen, un tipo de estado destino , un tipo de requerimiento y un proyecto
m.clear();
m.put(Constants.ORIGEN,desarrollo);
m.put(Constants.DESTINO,finalizado);
m.put(Constants.TIPOREQ,tReqAmpliacion);
m.put(Constants.PROYECTO,proyecto);
agregarCamino.execute(m);

//Crea el comando Agregar Propiedad
AgregarPropiedad agregarPropiedad=new AgregarPropiedad();

//Arma la HashMap n nombre, una descripción, el sistema, el tipo de requerimiento y el tipo de estado
m.clear();
m.put(Constants.NOMBRE,"Complejidad");
m.put(Constants.DESCRIPCION,"Porcentaje de complejidad que se espera que tenga un requerimiento");
m.put(Constants.TIPOREQ,tReqReporteBug);
m.put(Constants.TIPOESTADO,desarrollo);
m.put(Constants.SISTEMA,sistema);

//Ejecuta el comnado Agregar Propiedad
Propiedad complejidad =(Propiedad) agregarPropiedad.execute(m);

//Arma la HashMap n nombre, una descripción, el sistema, el tipo de requerimiento y el tipo de estado
m.clear();
m.put(Constants.NOMBRE,"complejidad");
m.put(Constants.DESCRIPCION,"Porcentaje de complejidad que se espera que tenga un requerimiento");
m.put(Constants.TIPOREQ,tReqAmpliacion);
m.put(Constants.TIPOESTADO,analisis);
m.put(Constants.SISTEMA,sistema);


try{
agregarPropiedad.execute(m);}
catch(ExcepcionPropiedadExistente e){
	System.out.println(e.getMessage()); }

//Crea el Comando Asignar Propiedad
AsignarPropiedad asignarPropiedad= new AsignarPropiedad();

//Arma el HashMap con una propiedad, el sistema, el tipo de requerimiento y el tipo de estado
m.clear();
m.put(Constants.PROPIEDAD,complejidad);
m.put(Constants.TIPOREQ,tReqAmpliacion);
m.put(Constants.TIPOESTADO,analisis);
m.put(Constants.SISTEMA,sistema);

//Ejecuta el Comando Asignar Propiedad

asignarPropiedad.execute(m);

//Crea el Comando Crear Requerimiento
CrearReq crearReq=new CrearReq();

//Arma la HashMap con //como parametro viene el sistema, proyecto, nombre,descripcion, prioridad, tipoReq
m.clear();
m.put(Constants.SISTEMA,sistema);
m.put(Constants.PROYECTO,proyecto);
m.put(Constants.NOMBRE,"Requerimiento A");
m.put(Constants.DESCRIPCION,"Requermiento A para el proyecto CD Software Libre U.N.L.P");
m.put(Constants.PRIORIDAD,new Integer(10));
m.put(Constants.TIPOREQ,tReqReporteBug);

//Ejecuta el comando Crear Requermiento

Requerimiento reqA=(Requerimiento)crearReq.execute(m);  
reqA.getNextStates();

//Arma la HashMap con //como parametro viene el sistema, proyecto, nombre,descripcion, prioridad, tipoReq
m.clear();
m.put(Constants.SISTEMA,sistema);
m.put(Constants.PROYECTO,proyecto);
m.put(Constants.NOMBRE,"Requerimiento B");
m.put(Constants.DESCRIPCION,"Requermiento B para el proyecto CD Software Libre U.N.L.P");
m.put(Constants.PRIORIDAD,new Integer(10));
m.put(Constants.TIPOREQ,tReqAmpliacion);

//Ejecuta el comando Crear Requermiento

Requerimiento reqB=(Requerimiento)crearReq.execute(m);  
reqB.getNextStates();


sistema

