public static void updateContact( Contact contact, Map<String, List<ContactPhone>> phoneGroups, Map<String, List<ContactAttachment>> attachmentGroups) throws ServiceException { log.debug("updateContact: " + contact.getSurname() + " " + contact.getEmail()); try { DaoFactory daoFactory = DaoFactory.getDaoFactory(); ContactModificationDao modificationDao = daoFactory.getContactModificationDao(); PersistenceManager.startTransaction(); contact.setPhoneList(phoneGroups.get("update")); contact.setAttachmentList(attachmentGroups.get("update")); modificationDao.updateContact(contact); modificationDao.deleteContactPhones(phoneGroups.get("delete")); modificationDao.deleteContactAttachments(attachmentGroups.get("delete")); modificationDao.saveContactPhones(phoneGroups.get("new")); modificationDao.saveContactAttachments(attachmentGroups.get("new")); PersistenceManager.finishTransaction(); } catch (SQLException | NamingException e) { log.error(e); throw new ServiceException("Can't update contact.", e); } catch (DaoException e) { try { PersistenceManager.rollbackTransaction(); } catch (SQLException e1) { log.error(e1); } log.error(e); throw new ServiceException("Can't update contact.", e); } }
public static Contact addNewContact(Contact contact) throws ServiceException { log.debug("addNewContact: " + contact.getSurname() + " " + contact.getEmail()); Contact savedContact = null; try { DaoFactory daoFactory = DaoFactory.getDaoFactory(); ContactModificationDao modificationDao = daoFactory.getContactModificationDao(); PersistenceManager.startTransaction(); savedContact = modificationDao.addNewContact(contact); PersistenceManager.finishTransaction(); } catch (SQLException | NamingException e) { log.error(e); throw new ServiceException("Can not add new contact.", e); } catch (DaoException e) { try { PersistenceManager.rollbackTransaction(); } catch (SQLException e1) { log.error(e1); } log.error(e); throw new ServiceException("Can not add new contact.", e); } return savedContact; }