/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.uff.ic.oceano.core.service;
import br.uff.ic.oceano.core.dao.ProjectUserDao;
import br.uff.ic.oceano.core.dao.impl.ProjectUserDaoImpl;
import br.uff.ic.oceano.core.exception.ObjetoNaoEncontradoException;
import br.uff.ic.oceano.core.exception.ServiceException;
import br.uff.ic.oceano.core.factory.ObjectFactory;
import br.uff.ic.oceano.core.model.OceanoUser;
import br.uff.ic.oceano.core.model.SoftwareProject;
import br.uff.ic.oceano.core.model.ProjectUser;
import br.uff.ic.oceano.core.service.controletransacao.Transacional;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author DanCastellani
*/
public class ProjectUserService implements PersistenceService{
private ProjectUserDao projetUserDao;
public void setup() {
projetUserDao = ObjectFactory.getObjectWithDataBaseDependencies(ProjectUserDaoImpl.class);
}
public ProjectUserService() {
}
@Transacional
public void save(ProjectUser projectUser) throws ServiceException {
if (projectUser.getId() == null) {
try {
projetUserDao.getByProjectAndOceanoUser(projectUser.getProject(), projectUser.getOceanoUser());
throw new ServiceException("O cadastro do usuário selecionado nesse projeto já existe, realize a operação de alteração");
} catch (ObjetoNaoEncontradoException ex) {
projetUserDao.inclui(projectUser);
}
} else {
try {
projetUserDao.getPorIdComLock(projectUser.getId());
} catch (ObjetoNaoEncontradoException ex) {
throw new ServiceException("O vínculo foi removido no momento da operação de alteração");
}
projetUserDao.altera(projectUser);
}
}
public ProjectUser getByProjectAndOceanoUser(SoftwareProject project, OceanoUser oceanoUser) throws ServiceException {
try {
return projetUserDao.getByProjectAndOceanoUser(project, oceanoUser);
} catch (ObjetoNaoEncontradoException ex) {
throw new ServiceException(ex);
}
}
public ProjectUser getByProjectAndLogin(SoftwareProject project, String login) throws ServiceException{
try {
return projetUserDao.getByProjectAndLogin(project, login);
} catch (ObjetoNaoEncontradoException ex) {
throw new ServiceException(ex);
}
}
public List<ProjectUser> getByOceanoUser(OceanoUser oceanoUser){
return projetUserDao.getByOceanoUser(oceanoUser);
}
@Transacional
public void exclude(ProjectUser item) {
try {
item = projetUserDao.getPorIdComLock(item.getId());
} catch (ObjetoNaoEncontradoException ex) {
System.out.println("objeto já removido");
}
projetUserDao.exclui(item);
}
}