package modelo;

/**
 * Title:
 * Description:
 * Copyright:    Copyright (c) 2002
 * Company:
 * @author
 * @version 1.0
 */


import java.util.*;
import java.util.Date;



import com.poet.jdo.*;
import javax.jdo.*;
import com.poet.jdo.admin.*;
//import com.poet.jdo.Extents;




public class ModuloCarga {
  Usuario user1, user2, user3;
  Rol admin, analista, desarrollador, tester, diseņador;
  TipoEstado creado,finalizado,analisis,desarrollo,diseņo,implementacion,testeo,evaluacion,validacion;
  TipoRequerimiento reporteBug,ampliacion,mejora,nuevo;
  Propiedad complejidad,duracion, costoProduccion;
  
  
  
  
  public ModuloCarga(){
	Sistema sistema = new Sistema((new LinkedList()), (new LinkedList()), (new LinkedList()), (new LinkedList()), (new LinkedList()),(new LinkedList()),(new LinkedList()),(new LinkedList()));
	sistema.setPropiedades(this.crearPropiedades());
	sistema.setRoles(this.crearRoles());
	sistema.setTiposEstados(this.crearTiposEstados());
	sistema.setTiposRequerimiento(this.crearTiposReq());
	sistema.setUsuarios(this.crearUsuarios());
	
	PersistenceManagerFactory pmf = null;
		  java.util.Properties pmfProps = new java.util.Properties();
		  pmfProps.put(
				"javax.jdo.PersistenceManagerFactoryClass",
				"com.poet.jdo.PersistenceManagerFactories" );
				// names the class responsible for creating the
				// FastObjects persistence manager factory implementation
			pmfProps.put(
				"javax.jdo.option.ConnectionURL",
				"fastobjects://LOCAL/bin/my_base.j1" );
				// names a connection to the database
				// specified by the URL
			pmf =
				JDOHelper.getPersistenceManagerFactory( pmfProps );
				// gets a persistence manager factory
				// with the specified properties
				// (non-managed)
			PersistenceManager pm = null;
			try
			{

				pm = pmf.getPersistenceManager();
					// retrieves the PersistenceManager for the data store
					// associated with the factory ("opens" the database)
			}
			catch ( JDOUserException e )
			{
				java.util.Properties prop = new java.util.Properties();
				prop.put("schema","MySchema");
				DatabaseAdministration.create(pmf.getConnectionURL(), prop);
				pm = pmf.getPersistenceManager();

			}
			Transaction txn = null;
			txn = pm.currentTransaction();
					// retrieves the transaction associated
					// with the persistence manager
			txn.begin();

			PersistenceManagers.makePersistent(pm,sistema,"Sistema");
				// makes the object persistent
				// (changes the object state to persistent-new)
			txn.commit();
				// writes the persistent objects in this transaction
				// to persistent storage (the FastObjects database)

			// retrieve the persistent MyClass objects

	  pm.close();
	  }
	  public static void main(String [] args){
	  	ModuloCarga mc=new ModuloCarga();

	  }
	  
	  public Collection crearUsuarios(){
	  	Collection list=new LinkedList();
	  	user1=new Usuario("German A.","Simoncini", "patito2004","daleriver", new LinkedList());
	  	user1.addRol(admin);
		user2=new Usuario("Juan Pablo","Giecco", "jpgfreesoft","pocopelo", new LinkedList());
		user2.addRol(analista);
		user2.addRol(desarrollador);
		user3=new Usuario("Luciano A.","Garcia", "aspecito","casartely", new LinkedList());
		user3.addRol(tester);
		user3.addRol(diseņador);
		list.add(user1);
		list.add(user2);
	  	list.add(user3);
	  	return list;
	  }
	public Collection crearRoles(){
		Collection list=new LinkedList();
		admin=new Rol("Administrador","Administra el Sistema",new LinkedList());
		analista=new Rol("Analistas","",new LinkedList());
		desarrollador=new Rol("Desarrollador","",new LinkedList());
		diseņador=new Rol("Diseņador","",new LinkedList());
		tester=new Rol("Tester","",new LinkedList());
		list.add(admin);
		list.add(analista);
		list.add(desarrollador);
		list.add(tester);
		list.add(diseņador);
		return list;
	}
	public Collection crearTiposEstados(){
		Collection list=new LinkedList();
		creado=new TipoEstado("Creado","");
		finalizado=new TipoEstado("Finalizado","");
		analisis=new TipoEstado("Analisis","");
		desarrollo=new TipoEstado("Desarrollo","");
		diseņo=new TipoEstado("Diseņo","");
		implementacion=new TipoEstado("Implementacion","");
		testeo=new TipoEstado("Testeo","");
		evaluacion=new TipoEstado("Evaluacion","");
		validacion=new TipoEstado("Validacion","");
		list.add(creado);
		list.add(finalizado);
		list.add(analisis);
		list.add(desarrollo);
		list.add(diseņo);
		list.add(implementacion);
		list.add(testeo);
		list.add(evaluacion);
		list.add(validacion);
		return list;
	}
	public Collection crearTiposReq(){
		Collection list=new LinkedList();
		reporteBug=new TipoRequerimiento("Reporte de Bug","",new Date(),new LinkedList());
		ampliacion=new TipoRequerimiento("Ampliacion","",new Date(),new LinkedList());
		mejora=new TipoRequerimiento("Mejora","",new Date(),new LinkedList());
		nuevo=new TipoRequerimiento("Nuevo","",new Date(),new LinkedList());
		list.add(reporteBug);
		list.add(ampliacion);
		list.add(mejora);
		list.add(nuevo);
		return list;
	}
	public Collection crearPropiedades(){
		Collection list=new LinkedList();
		complejidad=new Propiedad("Complejidad","");
		duracion=new Propiedad("Duracion","");
		costoProduccion=new Propiedad("Costa de produccion","");
		list.add(complejidad);
		list.add(duracion);
		list.add(costoProduccion);
		return list;
	}
	
}