package com.proyecto.miniplan.server;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;
import javax.jdo.Query;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.proyecto.miniplan.client.ProyectoService;
import com.proyecto.miniplan.shared.ProyectoDTO;
import com.proyecto.miniplan.shared.TareaDTO;
public class ProyectoServiceImpl extends RemoteServiceServlet implements ProyectoService{
private static final PersistenceManagerFactory PMF =
JDOHelper.getPersistenceManagerFactory("transactions-optional");
@Override
public Long nuevoProyecto(String _usuario, String _nombre,
String _descripcion) {
// TODO Auto-generated method stub
PersistenceManager pm = getPersistenceManager();
Proyecto nuevo = new Proyecto(_usuario, _nombre, _descripcion);
try {
pm.makePersistent(nuevo);
} finally {
pm.close();
}
return nuevo.getID();
}
@Override
public void eliminarProyecto(Long _id, String _usuario) {
// TODO Auto-generated method stub
PersistenceManager pm = getPersistenceManager();
try {
Query q = pm.newQuery(Proyecto.class);
q.setFilter("id == proyParam");
//q.setOrdering("id asc");
q.declareParameters("Long proyParam");
List<Proyecto> resultados = (List<Proyecto>) q.execute(_id);
if (resultados.iterator().hasNext()) {
for (Proyecto proy : resultados) {
//deleteCount++;
//if(_id == proy.getID())
pm.deletePersistent(proy);
//proyectosDTO.add(new ProyectoDTO(proy.getID(),proy.getUsuario(), proy.getNombre(),proy.getDescripcion(), false));
}
} else {
// ... no results ...
}
} finally {
pm.close();
}
PersistenceManager pm2 = getPersistenceManager();
try {
Query q = pm2.newQuery(Tarea.class);
q.setFilter("proyecto == proyectoParam");
//q.setOrdering("id asc");
q.declareParameters("Long proyectoParam");
List<Tarea> resultados = (List<Tarea>) q.execute(_id);
if (resultados.iterator().hasNext()) {
for (Tarea tar : resultados) {
//deleteCount++;
pm2.deletePersistent(tar);
//tareasDTO.add(new TareaDTO(tar.getID(),tar.getProyecto(), tar.getNombre(), tar.getInicio(), tar.getFin(), tar.getDuracion()));
}
} else {
// ... no results ...
}
} finally {
pm2.close();
}
}
@Override
public void actualizarProyecto(Long _id, String _usuario, String _nombre,
String _descripcion) {
// TODO Auto-generated method stub
}
@Override
public ArrayList<ProyectoDTO> abrirProyectos(String _usuario) {
// TODO Auto-generated method stub
PersistenceManager pm = getPersistenceManager();
ArrayList<ProyectoDTO> proyectosDTO = new ArrayList<ProyectoDTO>();
try {
Query q = pm.newQuery(Proyecto.class);
q.setFilter("usuario == usuarioParam");
//q.setOrdering("id asc");
q.declareParameters("String usuarioParam");
List<Proyecto> resultados = (List<Proyecto>) q.execute(_usuario);
if (resultados.iterator().hasNext()) {
for (Proyecto proy : resultados) {
//deleteCount++;
// pm.deletePersistent(proyecto);
proyectosDTO.add(new ProyectoDTO(proy.getID(),proy.getUsuario(), proy.getNombre(),proy.getDescripcion(), false));
}
} else {
// ... no results ...
}
} finally {
pm.close();
}
return proyectosDTO;
}
@Override
public Long nuevaTarea(Long _proyecto, String _nombre, int _duracion,
Date _inicio, Date _fin) {
// TODO Auto-generated method stub
PersistenceManager pm = getPersistenceManager();
Tarea nueva = new Tarea(_proyecto, _nombre, _duracion, _inicio, _fin);
try {
pm.makePersistent(nueva);
} finally {
pm.close();
}
return nueva.getID();
}
@Override
public void eliminarTarea(Long _id, String _proyecto) {
// TODO Auto-generated method stub
PersistenceManager pm = getPersistenceManager();
try {
long deleteCount = 0;
Query q = pm.newQuery(Tarea.class, "proyecto == _proyecto");
q.declareParameters("String _proyecto");
List<Tarea> tareas = (List<Tarea>) q.execute(_proyecto);
for (Tarea tarea : tareas) {
if (_id.equals(tarea.getID())) {
deleteCount++;
pm.deletePersistent(tarea);
}
}
if (deleteCount != 1) {
//LOG.log(Level.WARNING, "removeStock deleted "+deleteCount+" Stocks");
}
} finally {
pm.close();
}
}
@Override
public void actualizarTarea(Long _id, String _nombre, int _duracion,
Date _inicio, Date _fin) {
// TODO Auto-generated method stub
}
@Override
public ArrayList<TareaDTO> abrirTarea(Long _proyecto) {
// TODO Auto-generated method stub
PersistenceManager pm = getPersistenceManager();
ArrayList<TareaDTO> tareasDTO = new ArrayList<TareaDTO>();
try {
Query q = pm.newQuery(Tarea.class);
q.setFilter("proyecto == proyectoParam");
//q.setOrdering("id asc");
q.declareParameters("Long proyectoParam");
List<Tarea> resultados = (List<Tarea>) q.execute(_proyecto);
if (resultados.iterator().hasNext()) {
for (Tarea tar : resultados) {
//deleteCount++;
// pm.deletePersistent(proyecto);
tareasDTO.add(new TareaDTO(tar.getID(),tar.getProyecto(), tar.getNombre(), tar.getInicio(), tar.getFin(), tar.getDuracion()));
}
} else {
// ... no results ...
}
} finally {
pm.close();
}
return tareasDTO;
}
private PersistenceManager getPersistenceManager() {
return PMF.getPersistenceManager();
}
public ProyectoDTO CvProyDTO(Proyecto original){
ProyectoDTO nuevo = new ProyectoDTO(original.getID(),original.getUsuario(), original.getNombre(), original.getDescripcion(), false);
return nuevo;
}
@Override
public void guardarProyecto(Long _id, List<TareaDTO> _tareas) {
List<TareaDTO> tars = new ArrayList<TareaDTO>();
tars = _tareas;
PersistenceManager pm = getPersistenceManager();
// TODO Auto-generated method stub
try {
Query q = pm.newQuery(Tarea.class);
q.setFilter("proyecto == proyectoParam");
//q.setOrdering("id asc");
q.declareParameters("Long proyectoParam");
List<Tarea> resultados = (List<Tarea>) q.execute(_id);
if (resultados.iterator().hasNext()) {
for (Tarea tar : resultados) {
//deleteCount++;
pm.deletePersistent(tar);
//tareasDTO.add(new TareaDTO(tar.getID(),tar.getProyecto(), tar.getNombre(), tar.getInicio(), tar.getFin(), tar.getDuracion()));
}
} else {
// ... no results ...
}
} finally {
pm.close();
}
//int i=0;
PersistenceManager pmt = getPersistenceManager();
try {
if (tars.iterator().hasNext()) {
for (TareaDTO tar : tars) {
//nuevaTareaP(_id, tar.nombre, 0, tar.inicio, tar.fin);
//Window.alert(nombre + " " + String.valueOf(duracion) + " " + String.valueOf(inicio) + " " + String.valueOf(fin));
Tarea nueva = new Tarea(_id, tar.nombre, tar.duracion, tar.inicio, tar.fin);
pmt.makePersistent(nueva);
}
} else {
// ... no results ...
}
} finally {
pmt.close();
}
}
public void nuevaTareaP(Long _proyecto, String _nombre, int _duracion,
Date _inicio, Date _fin) {
// TODO Auto-generated method stub
PersistenceManager pm = getPersistenceManager();
Tarea nueva = new Tarea(_proyecto, _nombre, _duracion, _inicio, _fin);
try {
pm.makePersistent(nueva);
} finally {
pm.close();
}
}
@Override
public void actualizarNombreProyecto(Long _id, String _nombre) {
PersistenceManager pm = getPersistenceManager();
try {
Query q = pm.newQuery(Proyecto.class);
q.setFilter("id == proyParam");
q.declareParameters("Long proyParam");
List<Proyecto> resultados = (List<Proyecto>) q.execute(_id);
if (resultados.iterator().hasNext()) {
for (Proyecto proy : resultados) {
proy.setNombre(_nombre);
}
} else {
// ... no results ...
}
} finally {
pm.close();
}
}
public void actualizarDescripcionProyecto(Long _id, String _descripcion) {
PersistenceManager pm = getPersistenceManager();
try {
Query q = pm.newQuery(Proyecto.class);
q.setFilter("id == proyParam");
q.declareParameters("Long proyParam");
List<Proyecto> resultados = (List<Proyecto>) q.execute(_id);
if (resultados.iterator().hasNext()) {
for (Proyecto proy : resultados) {
proy.setDescripcion(_descripcion);
}
} else {
// ... no results ...
}
} finally {
pm.close();
}
}
}