Author: fdesbois Date: 2010-07-25 16:57:12 +0000 (Sun, 25 Jul 2010) New Revision: 631 Log: Ano #2366 : - Add tests to check sampleRow nullity in contact save - Block sampleRow delete if contacts exists with it Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java trunk/wao-business/src/main/xmi/wao.zargo trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactImplTest.java trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2010-07-25 13:15:50 UTC (rev 630) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2010-07-25 16:57:12 UTC (rev 631) @@ -39,6 +39,8 @@ import fr.ifremer.wao.bean.ConnectedUser; import fr.ifremer.wao.bean.FacadeRow; import fr.ifremer.wao.bean.FacadeRowImpl; +import fr.ifremer.wao.entity.Contact; +import fr.ifremer.wao.entity.ContactDAO; import fr.ifremer.wao.io.ImportResults; import fr.ifremer.wao.io.ImportResultsImpl; import fr.ifremer.wao.bean.SamplingFilter; @@ -515,10 +517,19 @@ @Override public void executeDeleteSampleRow(TopiaContext transaction, - List<Object> errorArgs, SampleRow sampleRow) throws TopiaException { + List<Object> errorArgs, + SampleRow sampleRow) + throws TopiaException, WaoBusinessException { errorArgs.add(sampleRow.getCode()); + // Check if contacts exists linked with this sampleRow, no delete permitted in this case. + ContactDAO contactDAO = WaoDAOHelper.getContactDAO(transaction); + if (contactDAO.existByProperties(Contact.SAMPLE_ROW, sampleRow)) { + throw new WaoBusinessException("Des contacts liés à cette ligne" + + " existent, aucune suppression n'est possible."); + } + SampleRowDAO dao = WaoDAOHelper.getSampleRowDAO(transaction); SampleRow row = dao.findByTopiaId(sampleRow.getTopiaId()); Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ) Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactImplTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactImplTest.java 2010-07-25 13:15:50 UTC (rev 630) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactImplTest.java 2010-07-25 16:57:12 UTC (rev 631) @@ -23,10 +23,12 @@ package fr.ifremer.wao.service; import fr.ifremer.wao.AbstractServiceTest; +import fr.ifremer.wao.WaoException; import fr.ifremer.wao.bean.ContactFilter; import fr.ifremer.wao.bean.ContactFilterImpl; import fr.ifremer.wao.bean.UserRole; import fr.ifremer.wao.entity.Contact; +import fr.ifremer.wao.entity.ContactImpl; import fr.ifremer.wao.entity.WaoUser; import java.util.Map; import org.apache.commons.collections.CollectionUtils; @@ -85,4 +87,20 @@ results = service.getContacts(filter); Assert.assertEquals(0, results.size()); } + + @Test + public void testSaveContact() throws TopiaException { + + Contact contact = new ContactImpl(); + WaoUser observer = createDefaultObserver(); + contact.setObserver(observer); + + + try { + service.saveContact(contact, false); + Assert.fail(); + } catch (WaoException eee) { + + } + } } Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java 2010-07-25 13:15:50 UTC (rev 630) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java 2010-07-25 16:57:12 UTC (rev 631) @@ -35,6 +35,9 @@ import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.CompanyDAO; +import fr.ifremer.wao.entity.Contact; +import fr.ifremer.wao.entity.ContactDAO; +import fr.ifremer.wao.entity.ContactImpl; import fr.ifremer.wao.entity.ElligibleBoat; import fr.ifremer.wao.entity.ElligibleBoatDAO; import fr.ifremer.wao.entity.FishingZone; @@ -47,6 +50,7 @@ import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.SampleRowDAO; import fr.ifremer.wao.entity.SampleRowLogImpl; +import fr.ifremer.wao.entity.WaoUser; import fr.ifremer.wao.io.ImportResults; import org.junit.Assert; import org.junit.Test; @@ -157,6 +161,29 @@ result = serviceSampling.getSampleRow(row.getTopiaId()); assertEquals(2, result.getFishingZone().size()); + log.info("test if sampleRow becomes null in contact after update"); + + Contact contact = new ContactImpl(); + WaoUser observer = createDefaultObserver(); + contact.setObserver(observer); + contact.setSampleRow(result); + + manager.getServiceContact().saveContact(contact, false); + + serviceSampling.createUpdateSampleRow(result, boats, new SampleRowLogImpl()); + + transaction = manager.getContext().beginTransaction(); + try { + ContactDAO contactDAO = WaoDAOHelper.getContactDAO(transaction); + + Contact contactFound = contactDAO.findBySampleRow(row); + + Assert.assertNotNull(contactFound); + + } finally { + transaction.closeContext(); + } + } @Test @@ -473,7 +500,28 @@ ElligibleBoatDAO elligibleDAO = WaoDAOHelper.getElligibleBoatDAO(transaction); List<ElligibleBoat> elligibles = elligibleDAO.findAll(); assertEquals(0, elligibles.size()); + + log.info("test if sampleRow can't be deleted if contacts are associated"); + + row = rowDAO.findByCode("2010_0002"); transaction.closeContext(); + + Contact contact = new ContactImpl(); + WaoUser observer = createDefaultObserver(); + contact.setObserver(observer); + contact.setSampleRow(row); + + manager.getServiceContact().saveContact(contact, false); + + boolean errorCatched = false; + try { + serviceSampling.deleteSampleRow(row); + Assert.fail(); + } catch (WaoBusinessException eee) { + log.debug("Business error", eee); + errorCatched = true; + } + Assert.assertTrue(errorCatched); } @Test Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2010-07-25 13:15:50 UTC (rev 630) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2010-07-25 16:57:12 UTC (rev 631) @@ -41,6 +41,7 @@ import fr.ifremer.wao.ui.components.Layout; import fr.ifremer.wao.ui.data.ExportStreamResponse; import fr.ifremer.wao.ui.data.RequiresAuthentication; +import fr.ifremer.wao.ui.services.WaoManager; import org.apache.tapestry5.StreamResponse; import org.apache.tapestry5.annotations.IncludeStylesheet; import org.apache.tapestry5.annotations.InjectComponent; @@ -50,6 +51,7 @@ import org.apache.tapestry5.annotations.SessionState; import org.apache.tapestry5.corelib.components.Form; import org.apache.tapestry5.corelib.components.Zone; +import org.apache.tapestry5.ioc.Messages; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.upload.services.UploadedFile; import org.nuiton.util.PeriodDates; @@ -80,6 +82,12 @@ private Logger logger; @Inject + private WaoManager manager; + + @Inject + private Messages messages; + + @Inject private ServiceSampling serviceSampling; @Inject @@ -486,7 +494,12 @@ void onActionFromDeleteSampleRow(int rowIndex) throws WaoException { row = getData().get(rowIndex); - serviceSampling.deleteSampleRow(row); + try { + serviceSampling.deleteSampleRow(row); + } catch (WaoBusinessException eee) { + String error = manager.getErrorMessage(eee, messages, logger); + layout.addError(error); + } } public boolean isRowNotFinished() {