/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.uff.ic.oceano.ostra.service;
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.Revision;
import br.uff.ic.oceano.core.service.PersistenceService;
import br.uff.ic.oceano.ostra.dao.VersionedItemDao;
import br.uff.ic.oceano.ostra.dao.impl.VersionedItemDaoImpl;
import br.uff.ic.oceano.ostra.model.Item;
import br.uff.ic.oceano.ostra.model.VersionedItem;
import br.uff.ic.oceano.core.service.controletransacao.Transacional;
/**
*
* @author Heliomar
*/
public class VersionedItemService implements PersistenceService{
private VersionedItemDao versionedItemDao;
public void setup() {
versionedItemDao = ObjectFactory.getObjectWithDataBaseDependencies(VersionedItemDaoImpl.class);
}
public VersionedItemService() {
}
@Transacional
public void save(VersionedItem versionedItemToSave) throws ServiceException {
try {
final Revision r = versionedItemToSave.getRevision();
final Item i = versionedItemToSave.getItem();
final Long id = versionedItemDao.getByItemAndRevision(i, r).getId();
versionedItemToSave.setId(id);
} catch (ObjetoNaoEncontradoException ex) {
//ok, its new.
// Logger.getLogger(VersionedItemService.class.getName()).log(Level.SEVERE, null, ex);
}
if (versionedItemToSave.getId() == null) {
versionedItemDao.inclui(versionedItemToSave);
} else {
versionedItemDao.altera(versionedItemToSave);
}
}
}