[Suiviobsmer-commits] r141 - in trunk: suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity suiviobsmer-business/src/main/xmi suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/webapp suiviobsmer-ui/src/main/webapp/img
Author: fdesbois Date: 2009-12-21 14:22:59 +0000 (Mon, 21 Dec 2009) New Revision: 141 Added: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatInfosImplTest.java trunk/suiviobsmer-ui/src/main/webapp/img/calendar-unavailable.png Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties trunk/suiviobsmer-ui/src/main/webapp/Boats.tml Log: - Show activityCalendar fieldset even if no calendar is set - Add calcul on boarding for boatInfos - Remove old methods in BoatImpl Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java 2009-12-21 10:22:48 UTC (rev 140) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java 2009-12-21 14:22:59 UTC (rev 141) @@ -50,92 +50,11 @@ private static final long serialVersionUID = 1L; - @Override - @Deprecated - public BoatInfos getBoatInfos(Company company) throws SuiviObsmerException { - TopiaContext transaction = null; - BoatInfos boatInfos = null; - try { - if (company == null) { - throw new IllegalArgumentException("company parameter can't be null to getBoatsInfos " + - "for boat '" + this.getName() + "'"); - } - transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction(); - - /*CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction); - Company companyFromDB = companyDAO.findByTopiaId(company.getTopiaId());*/ - - BoatInfosDAO boatInfosDAO = SuiviObsmerModelDAOHelper.getBoatInfosDAO(transaction); - boatInfos = boatInfosDAO.findByProperties(BoatInfos.BOAT, this, BoatInfos.COMPANY, company); - if (boatInfos == null) { - boatInfos = new BoatInfosImpl(); - boatInfos.setBoat(this); - boatInfos.setCompany(company); - } else { - // load data - boatInfos.getBoat(); - } - - if (log.isDebugEnabled()) { - log.debug("Boat infos : " + boatInfos); - log.debug("Boat infos boat : " + boatInfos.getBoat()); - } - - transaction.closeContext(); - } catch (Exception eee) { - SuiviObsmerContext.serviceException(transaction, - "Impossible de récupérer les informations privées du navire lié à la société " + - "'" + company.getName() + "'", - eee); - } - return boatInfos; - } - /** - * Get the last boat contact for the creator company. - * No test on contact state is done here. - * @param company which is the creator of the contact - * @return the last boat contact (opened or not) - * @throws SuiviObsmerException - */ - @Override - @Deprecated - public Contact getLastContact(Company company) throws SuiviObsmerException { - TopiaContext transaction = null; - Contact contact = null; - try { - transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction(); - - List results = transaction.find( - "FROM ContactImpl C1" + - " WHERE C1.user.company = :company AND C1.boat = :boat " + - " AND C1.topiaCreateDate = " + - " (SELECT MAX(C2.topiaCreateDate) FROM ContactImpl C2" + - " WHERE C2.user.company = :company AND C2.boat = C1.boat)", - "company", company, - "boat", this); - - if (!results.isEmpty()) { - contact = (Contact)results.get(0); - DataLoader.loadContactForBoatInfos(contact); - } - - transaction.closeContext(); - } catch (Exception eee) { - SuiviObsmerContext.serviceException(transaction, - "Impossible de récupérer le dernier contact du navire " + this.getImmatriculation() + - " pour la société '" + company.getName() + "'", - eee); - } - return contact; - } - - /** * Check if a contact for this boat, company and sampleRow can be created. * The state is tested for the last created contact. * A new contact can be created only if the last state is final and is not 'Refus définitif'. * @param company which is the creator of the contact - * @param row for the contact to be created * @return true if the contact can be created, false either * @throws SuiviObsmerException */ Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java 2009-12-21 10:22:48 UTC (rev 140) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatInfosImpl.java 2009-12-21 14:22:59 UTC (rev 141) @@ -21,12 +21,17 @@ package fr.ifremer.suiviobsmer.entity; +import fr.ifremer.suiviobsmer.SuiviObsmerContext; +import fr.ifremer.suiviobsmer.SuiviObsmerException; +import fr.ifremer.suiviobsmer.bean.ContactState; import java.io.Serializable; import java.util.ArrayList; -import java.util.Calendar; +import java.util.Arrays; +import java.util.Collections; +import org.nuiton.topia.TopiaContext; import java.util.Date; -import java.util.GregorianCalendar; import java.util.List; +import org.nuiton.topia.TopiaException; /** * BoatInfosImpl @@ -43,46 +48,109 @@ private static final long serialVersionUID = 1L; - protected Date firstBoardingDate; - protected List<String> professionLibelles; protected int nbBoarding; protected int nbBoardingForCompany; - - @Override - public List<String> getProfessionLibelles() { - List<String> professions = new ArrayList<String>(); - professions.add("PTM DEF - Chalutage pélagique en bœuf à bar"); - professions.add("OTB DEF80-90 - Chalutage de fond côtier"); - // TODO get professions libelles from sampleRows (change method name, get sampleRows code) - return professions; - } /** - * @return + * Calculate the number of boarding done on the boat since the date in argument. + * Only the validate contacts by company will be count. + * + * @param fromDate the date to start calcul + * @return a number of boarding done on the boat for all companies + * @throws SuiviObsmerException */ @Override - public int getNbBoarding() { - // TODO : calculate total nbBoarding from getFirstBoardingDate - return 18; + public int getNbBoarding(Date fromDate) throws SuiviObsmerException { + TopiaContext transaction = null; + int result = 0; + try { + transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction(); + + result = countDoneContactsFromDate(transaction, fromDate, false); + + transaction.closeContext(); + } catch (Exception eee) { + SuiviObsmerContext.serviceException(transaction, + "Impossible de récupérer le nombre d'embarquements réels depuis le " + + "'" + fromDate + "'", + eee); + } + return result; } /** - * @return + * Calculate the number of boarding done on the boat and the company since the date in argument. + * Only the validate contacts by company will be count. + * + * @param fromDate the date to start calcul + * @return a number of boarding done on the boat for the current company + * @throws SuiviObsmerException */ @Override - public int getNbBoardingForCompany() { - // TODO : calculate nbBoarding for Company - //ContextUtil.getRootContext().beginTransaction(); - return 5; + public int getNbBoardingForCompany(Date fromDate) throws SuiviObsmerException { + TopiaContext transaction = null; + int result = 0; + try { + transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction(); + + result = countDoneContactsFromDate(transaction, fromDate, true); + + transaction.closeContext(); + } catch (Exception eee) { + SuiviObsmerContext.serviceException(transaction, + "Impossible de récupérer le nombre d'embarquements réels depuis le " + + "'" + fromDate + "' pour la société '" + getCompany().getName() + "'", + eee); + } + return result; } /** - * @return + * Execute the HQL query for counting contact with BoardingDone state since the fromDate. + * This query is used to get all boarding dones on this boat for all companies or only for the + * current one. Only the validate contacts by company will be count. The param fromDate can be null, + * in this case, all contacts will be counted (not matter which date then started). + * + * @param transaction TopiaContext to execute the query + * @param fromDate the date to start calcul + * @param companyOnly boolean used to filter by the current company or not + * @return the number of boarding done since fromDate + * @throws TopiaException */ - @Override - public Date getFirstBoardingDate() { - Calendar calendar = new GregorianCalendar(); - calendar.add(Calendar.MONTH, 12); - return calendar.getTime(); + protected int countDoneContactsFromDate(TopiaContext transaction, Date fromDate, boolean companyOnly) throws TopiaException { + int result = 0; + + List<Object> params = new ArrayList<Object>(); + String contactClassName = Contact.class.getName(); + String query = "SELECT COUNT(*)" + + " FROM " + contactClassName + + " WHERE boat = :boat AND state = :boardingDone" + + " AND validationCompany = :booleanTrue" + + " AND (validationProgram IS NULL OR validationProgram = :booleanTrue)"; + + params.add("boat"); params.add(getBoat()); + params.add("boardingDone"); params.add(ContactState.BOARDING_DONE.toString()); + params.add("booleanTrue"); params.add(Boolean.TRUE); + + if (fromDate != null) { + query += " AND tideBeginDate >= :fromDate"; + params.add("fromDate"); + params.add(fromDate); + } + + if (companyOnly) { + query+= " AND user.company = :company"; + params.add("company"); + params.add(getCompany()); + } + + List results = transaction.find(query, params.toArray()); + + if (!results.isEmpty()) { + Long tmp = (Long) results.get(0); + result += tmp.intValue(); + } + + return result; } } Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo =================================================================== (Binary files differ) Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java =================================================================== --- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java 2009-12-21 10:22:48 UTC (rev 140) +++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatImplTest.java 2009-12-21 14:22:59 UTC (rev 141) @@ -28,7 +28,7 @@ import org.slf4j.LoggerFactory; /** - * BoatImpl + * BoatImplTest * * Created: 15 déc. 2009 * @@ -67,71 +67,6 @@ } /** - * Test of getBoatInfos method, of class BoatImpl. - */ - //@Test - public void testGetBoatInfos() throws Exception { - System.out.println("getBoatInfos"); - } - - /** - * Test of getLastContact method, of class BoatImpl. - */ - @Test - public void testGetLastContact() throws Exception { - log.info("getLastContact"); - - /** PREPARE DATA **/ - ServiceUser serviceUser = new ServiceUserImpl(); - Company company = new CompanyImpl(); - company.setName("TARTANPION"); - serviceUser.createUpdateCompany(company); - User user = new UserImpl(); - user.setFirstName("Jean"); - user.setLastName("Michmuche"); - user.setCompany(company); - serviceUser.createUpdateUser(user, true); - - InputStream input = getClass().getResourceAsStream("/import/navires.csv"); - ServiceBoat serviceBoat = new ServiceBoatImpl(); - serviceBoat.importBoatCsv(input); - List<Boat> boats = serviceBoat.getBoats("174258"); - Boat boat = boats.get(0); - - TopiaContext transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction(); - - FishingZoneDAO zoneDAO = SuiviObsmerModelDAOHelper.getFishingZoneDAO(transaction); - FishingZone zoneIId = zoneDAO.create(FishingZone.DISTRICT_CODE, "IId"); - FishingZone zoneIV = zoneDAO.create(FishingZone.DISTRICT_CODE, "IV"); - FishingZone zoneI = zoneDAO.create(FishingZone.DISTRICT_CODE, "I"); - - transaction.commitTransaction(); - - ServiceSampling serviceSampling = new ServiceSamplingImpl(); - input = getClass().getResourceAsStream("/import/echantillonnage.csv"); - serviceSampling.importSamplingPlanCsv(input); - - SampleRowDAO rowDAO = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction); - SampleRow row = rowDAO.findByCode("2010_1"); - row.getCompany(); - row.getProgram(); - row.getProfession(); - transaction.closeContext(); - - row.setCompany(company); - serviceSampling.createUpdateSampleRow(row, boats); - - ServiceContact serviceContact = new ServiceContactImpl(); - Contact contact1 = serviceContact.getNewContact(user, row, boat); - contact1.setState(ContactState.CONTACT_START.toString()); - serviceContact.saveContact(contact1, false); - - /** EXEC METHOD **/ - Contact result = boat.getLastContact(company); - Assert.assertEquals(contact1.getTopiaId(), result.getTopiaId()); - } - - /** * Test of canCreateContact method, of class BoatImpl. */ @Test Added: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatInfosImplTest.java =================================================================== --- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatInfosImplTest.java (rev 0) +++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatInfosImplTest.java 2009-12-21 14:22:59 UTC (rev 141) @@ -0,0 +1,170 @@ + +package fr.ifremer.suiviobsmer.entity; + +import fr.ifremer.suiviobsmer.SuiviObsmerContext; +import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper; +import fr.ifremer.suiviobsmer.SuiviObsmerRunner; +import fr.ifremer.suiviobsmer.bean.ContactState; +import fr.ifremer.suiviobsmer.business.SuiviObsmerRunnerTest; +import fr.ifremer.suiviobsmer.impl.ServiceBoatImpl; +import fr.ifremer.suiviobsmer.impl.ServiceContactImpl; +import fr.ifremer.suiviobsmer.services.ServiceBoat; +import fr.ifremer.suiviobsmer.services.ServiceContact; +import org.nuiton.topia.TopiaContext; +import java.io.InputStream; +import java.util.Date; +import java.util.List; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.nuiton.util.DateUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * BoatInfosImplTest + * + * Created: 21 déc. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class BoatInfosImplTest { + + private static SuiviObsmerRunner runner; + + private static final Logger log = LoggerFactory.getLogger(BoatInfosImplTest.class); + + public BoatInfosImplTest() { + } + + @BeforeClass + public static void setUpClass() throws Exception { + runner = new SuiviObsmerRunnerTest(); + } + + @AfterClass + public static void tearDownClass() throws Exception { + } + + @Before + public void setUp() throws Exception { + runner.start(); + } + + @After + public void tearDown() throws Exception { + runner.stop(); + } + + /** + * Test of getNbBoarding method, of class BoatInfosImpl. + */ + @Test + public void testGetNbBoarding() throws Exception { + log.info("getNbBoarding"); + + /** PREPARE DATA **/ + InputStream input = getClass().getResourceAsStream("/import/navires.csv"); + ServiceBoat serviceBoat = new ServiceBoatImpl(); + serviceBoat.importBoatCsv(input); + List<Boat> boats = serviceBoat.getBoats("174258"); + Boat boat = boats.get(0); + + TopiaContext transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction(); + + CompanyDAO companyDAO = SuiviObsmerModelDAOHelper.getCompanyDAO(transaction); + Company company = companyDAO.create(Company.NAME, "TARTANPION"); + Company company2 = companyDAO.create(Company.NAME, "BIS"); + + UserDAO userDAO = SuiviObsmerModelDAOHelper.getUserDAO(transaction); + User user = userDAO.create(User.FIRST_NAME,"Jean", User.LAST_NAME, "Michmuche", + User.COMPANY, company); + company.addUser(user); + User user2 = userDAO.create(User.FIRST_NAME,"Bill", User.LAST_NAME, "Murray", + User.COMPANY, company2); + company2.addUser(user2); + + BoatInfosDAO boatInfosDAO = SuiviObsmerModelDAOHelper.getBoatInfosDAO(transaction); + BoatInfos boatInfos = boatInfosDAO.create(BoatInfos.BOAT, boat, BoatInfos.COMPANY, company); + + transaction.commitTransaction(); + transaction.closeContext(); + + ServiceContact serviceContact = new ServiceContactImpl(); + // First contact : OK + Contact contact1 = new ContactImpl(); + contact1.setBoat(boat); + contact1.setUser(user); + contact1.setState(ContactState.BOARDING_DONE.toString()); + Date begin = DateUtils.createDate(3, 3, 2009); + contact1.setTideBeginDate(begin); + contact1.setValidationCompany(Boolean.TRUE); + serviceContact.saveContact(contact1, false); + + /** EXEC METHOD **/ + + Date fromDate = DateUtils.createDate(1, 1, 2009); + int result = boatInfos.getNbBoarding(fromDate); + Assert.assertEquals(1, result); + + Contact contact2 = new ContactImpl(); + // Second contact with ValidationProgram = FALSE + contact2.setBoat(boat); + contact2.setUser(user); + contact2.setState(ContactState.BOARDING_DONE.toString()); + begin = DateUtils.createDate(3, 8, 2009); + contact2.setTideBeginDate(begin); + contact2.setValidationCompany(Boolean.TRUE); + contact2.setValidationProgram(Boolean.FALSE); + serviceContact.saveContact(contact2, false); + + result = boatInfos.getNbBoarding(fromDate); + Assert.assertEquals(1, result); + + Contact contact3 = new ContactImpl(); + // Third contact with tideBeginDate < fromDate + contact3.setBoat(boat); + contact3.setUser(user); + contact3.setState(ContactState.BOARDING_DONE.toString()); + begin = DateUtils.createDate(3, 8, 2008); + contact3.setTideBeginDate(begin); + contact3.setValidationCompany(Boolean.TRUE); + serviceContact.saveContact(contact3, false); + + result = boatInfos.getNbBoarding(fromDate); + Assert.assertEquals(1, result); + + Contact contact4 = new ContactImpl(); + // Fourth contact : OK with an other company + contact4.setBoat(boat); + contact4.setUser(user2); + contact4.setState(ContactState.BOARDING_DONE.toString()); + begin = DateUtils.createDate(3, 4, 2009); + contact4.setTideBeginDate(begin); + contact4.setValidationCompany(Boolean.TRUE); + serviceContact.saveContact(contact4, false); + + result = boatInfos.getNbBoarding(fromDate); + Assert.assertEquals(2, result); + + // Calcul with a fromDate null + result = boatInfos.getNbBoarding(null); + Assert.assertEquals(3, result); + } + + /** + * Test of getNbBoardingForCompany method, of class BoatInfosImpl. + */ + //@Test + public void testGetNbBoardingForCompany() { + System.out.println("getNbBoardingForCompany"); + } + +} \ No newline at end of file Property changes on: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/BoatInfosImplTest.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL" Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java =================================================================== --- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java 2009-12-21 10:22:48 UTC (rev 140) +++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java 2009-12-21 14:22:59 UTC (rev 141) @@ -29,6 +29,7 @@ import fr.ifremer.suiviobsmer.business.SuiviObsmerRunnerTest; import fr.ifremer.suiviobsmer.bean.BoatFilter; import fr.ifremer.suiviobsmer.bean.CompanyBoatInfos; +import fr.ifremer.suiviobsmer.bean.ContactState; import fr.ifremer.suiviobsmer.entity.ActivityCalendar; import fr.ifremer.suiviobsmer.entity.ActivityCalendarDAO; import fr.ifremer.suiviobsmer.entity.Boat; @@ -37,11 +38,16 @@ import fr.ifremer.suiviobsmer.entity.Company; import fr.ifremer.suiviobsmer.entity.CompanyDAO; import fr.ifremer.suiviobsmer.entity.CompanyImpl; +import fr.ifremer.suiviobsmer.entity.Contact; import fr.ifremer.suiviobsmer.entity.ElligibleBoat; import fr.ifremer.suiviobsmer.entity.SampleRow; import fr.ifremer.suiviobsmer.entity.SampleRowDAO; +import fr.ifremer.suiviobsmer.entity.User; +import fr.ifremer.suiviobsmer.entity.UserImpl; +import fr.ifremer.suiviobsmer.services.ServiceContact; import fr.ifremer.suiviobsmer.services.ServiceReferential; import fr.ifremer.suiviobsmer.services.ServiceSampling; +import fr.ifremer.suiviobsmer.services.ServiceUser; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; @@ -211,19 +217,37 @@ service.importBoatCsv(input); List<Boat> boats = service.getBoats("174592"); + Boat boat = boats.get(0); // Two rows created : 2009_3 & 2010_4 and one Company : "TARTANPION" + ServiceUser serviceUser = new ServiceUserImpl(); Company company = new CompanyImpl(); company.setName("TARTANPION"); + serviceUser.createUpdateCompany(company); + User user = new UserImpl(); + user.setFirstName("Jean"); + user.setLastName("Michmuche"); + user.setCompany(company); + serviceUser.createUpdateUser(user, true); List<SampleRow> rows = prepareSampleRows(company); + + TopiaContext transaction = SuiviObsmerContext.getTopiaRootContext().beginTransaction(); + SampleRowDAO rowDAO = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction); + SampleRow row = rowDAO.findByCode("2010_1"); + row.getCompany(); + row.getProgram(); + row.getProfession(); + transaction.closeContext(); - Boat boat = boats.get(0); - // Return new BoatInfos - BoatInfos boatInfos = boat.getBoatInfos(company); + ServiceContact serviceContact = new ServiceContactImpl(); + Contact contact1 = serviceContact.getNewContact(user, row, boat); + contact1.setState(ContactState.CONTACT_START.toString()); + serviceContact.saveContact(contact1, false); CompanyBoatInfos companyBoatInfos = service.getCompanyBoatInfos(174592, company); /** EXEC METHOD **/ + BoatInfos boatInfos = companyBoatInfos.getBoatInfos(); boatInfos.setDup(2); boatInfos.setContactFirstName("Jean-Paul"); @@ -266,7 +290,11 @@ assertNull(elligible.getCompanyActive()); assertTrue(elligible.getGlobalActive()); + /** EXEC METHOD **/ + Contact result = companyBoatInfos.getLastContact(); + Assert.assertEquals(contact1.getTopiaId(), result.getTopiaId()); + } /** Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2009-12-21 10:22:48 UTC (rev 140) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2009-12-21 14:22:59 UTC (rev 141) @@ -29,7 +29,6 @@ import fr.ifremer.suiviobsmer.bean.CompanyBoatInfos; import fr.ifremer.suiviobsmer.entity.BoatInfos; import fr.ifremer.suiviobsmer.entity.Company; -import fr.ifremer.suiviobsmer.entity.Contact; import fr.ifremer.suiviobsmer.entity.ElligibleBoat; import fr.ifremer.suiviobsmer.entity.FishingZone; import fr.ifremer.suiviobsmer.entity.Profession; @@ -49,6 +48,9 @@ import java.io.InputStream; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; import java.util.List; import java.util.Map; import org.apache.commons.lang.BooleanUtils; @@ -451,6 +453,12 @@ //boatInfos = null; companyBoatInfos = null; //companyId = null; + + // Initialize from Date for boarding calcul in BoatInfos + Calendar calendar = new GregorianCalendar(); + calendar.add(Calendar.MONTH, -12); + boardingFromDate = calendar.getTime(); + return boatsZone.getBody(); } @@ -484,6 +492,9 @@ @Property private String companyId; + @Property + private Date boardingFromDate; + /*@Persist private SuiviObsmerPropertyChangeListener propertyChange;*/ @@ -626,6 +637,10 @@ return boatInfosZone.getBody(); } + Block onSuccessFromCalculateBoardings() { + return boatInfosZone.getBody(); + } + /**************************** Create new contact **************************/ @InjectPage Modified: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties =================================================================== --- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties 2009-12-21 10:22:48 UTC (rev 140) +++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties 2009-12-21 14:22:59 UTC (rev 141) @@ -26,4 +26,5 @@ contactPhoneNumber-label: T\u00E9l\u00E9phone contactEmail-label: E-mail shipOwner-label: Armateur +fromDate-label: Embarquements depuis le dup-label: Capacit\u00E9 d'accueil du navire en personnels sp\u00E9cialis\u00E9s \ No newline at end of file Modified: trunk/suiviobsmer-ui/src/main/webapp/Boats.tml =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2009-12-21 10:22:48 UTC (rev 140) +++ trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2009-12-21 14:22:59 UTC (rev 141) @@ -125,52 +125,50 @@ <!-- BOATINFOS:: Informations du navire sélectionné --> <t:if t:test="boatSelectedImmatriculation"> - <t:zone t:id="boatInfosZone" t:update="show" class="fleft" id="so-boats-boat-infos"> - <t:unless t:test="activityCalendarImportRun"> - <!-- HEADER For admin --> - <t:if t:test="user.admin"> - <h2>Informations sur <!--${companyBoatInfos.boatInfos.boat.name}-->${boatName}</h2> - <form t:type="form" t:id="companySelectForm" t:zone="so-boats-boat-infos"> - <t:label t:for="company" /> : - <input t:type="select" t:id="company" t:model="companySelectModel" t:value="companyId" /> - <input t:type="submit" class="ico search" t:id="searchCompany" value="Search" /> - </form> - </t:if> - <!-- BODY - delegator --> - <t:if t:test="canShowActiveBoatInfos()"> - <t:delegate to="activeBoatInfosBlock" /> - </t:if> - <!-- BODY - activity calendar --> - <t:if t:test="hasActivityCalendar()"> - <fieldset id="so-boats-boat-infos-calendar"> - <legend>Calendrier d'activité</legend> - <p> + <t:zone t:id="boatInfosZone" t:update="show" class="fleft" id="so-boats-boat-infos"> + <!-- HEADER For admin --> + <t:if t:test="user.admin"> + <h2>Informations sur <!--${companyBoatInfos.boatInfos.boat.name}-->${boatName}</h2> + <form t:type="form" t:id="companySelectForm" t:zone="so-boats-boat-infos"> + <t:label t:for="company" /> : + <input t:type="select" t:id="company" t:model="companySelectModel" t:value="companyId" /> + <input t:type="submit" class="ico search" t:id="searchCompany" value="Search" /> + </form> + </t:if> + <!-- BODY - delegator --> + <t:if t:test="canShowActiveBoatInfos()"> + <t:delegate to="activeBoatInfosBlock" /> + </t:if> + <!-- BODY - activity calendar --> + <fieldset id="so-boats-boat-infos-calendar"> + <legend>Calendrier d'activité</legend> + <t:unless t:test="activityCalendarImportRun"> + <p> + <t:if t:test="hasActivityCalendar()"> <a t:type="actionlink" t:id="showLastActivityCalendar"> <img src="${asset:context:}/img/calendar.png" title="Calendrier d'activité"/> </a> - </p> - </fieldset> - </t:if> - <!-- FOOTER For user --> - <t:unless t:test="user.admin"> - <div id="so-boats-boat-infos-message"> - Les informations saisies sont confidentielles et propriété de la société. <br /> - Elles sont néanmoins consultables par un administrateur - </div> + <p:else> + <img src="${asset:context:}/img/calendar-unavailable.png" title="Calendrier d'activité indisponible"/> + </p:else> + </t:if> + </p> + <p:else> + <div class="fb-info"> + Le chargement des calendriers d'activité dans l'application est actuellement en cours d'exécution... + </div> + </p:else> </t:unless> - - <p:else> - <div class="fb-info"> - Le chargement des calendriers d'activité est en cours. <br /> - Vous ne pouvez pas accéder aux informations du navire pour l'instant. <br /> - Veuillez réessayer ultérieurement. - </div> - </p:else> + </fieldset> + <!-- FOOTER For user --> + <t:unless t:test="user.admin"> + <div id="so-boats-boat-infos-message"> + Les informations saisies sont confidentielles et propriété de la société. <br /> + Elles sont néanmoins consultables par un administrateur + </div> </t:unless> </t:zone> - - <!-- BOATINFOS:: DISPLAY MODE --> <t:block t:id="displayBoatInfos"> @@ -233,12 +231,17 @@ </t:if> </p> <p class="sep"> </p> - <p><label>Embarquements :</label></p> <p> - <strong>${boatInfos.nbBoarding}</strong> embarquements - dont <strong>${boatInfos.nbBoardingForCompany}</strong> pour votre société - depuis le <strong><t:output value="boatInfos.firstBoardingDate" format="dateFormat" /></strong> + <form t:type="form" t:id="CalculateBoardings" t:zone="so-boats-boat-infos"> + <t:label t:for="fromDate"/> : + <input t:type="datefield" t:id="fromDate" value="boardingFromDate" /> + <input t:type="submit" class="ico refresh" t:id="refreshBoardings" value="Refresh" title="Recalculer les embarquements"/> + </form> </p> + <p> + <strong>${boatInfos.getNbBoarding(boardingFromDate)}</strong> embarquements + dont <strong>${boatInfos.getNbBoardingForCompany(boardingFromDate)}</strong> dans votre société + </p> <t:if t:test="companyBoatInfos.elligibleBoatsValues.size()"> <p class="sep"> </p> <label>Ligne(s) du plan :</label> @@ -306,11 +309,15 @@ <div> <p><t:label t:for="dup"/> : <input t:type="textfield" t:id="dup" class="dup" value="boatInfos.dup" /></p> <p class="sep"> </p> +<!-- <p> + <t:label t:for="fromDate"/> : + <input t:type="datefield" t:id="fromDate" value="boardingFromDate" /> + <input t:type="submit" class="ico refresh" t:id="refreshBoardings" value="Refresh" title="Recalculer les embarquements"/> + </p> <p> - <strong>${boatInfos.nbBoarding}</strong> embarquements - dont <strong>${boatInfos.nbBoardingForCompany}</strong> dans votre société - depuis le <strong><t:output value="boatInfos.firstBoardingDate" format="dateFormat" /></strong> - </p> + <strong>${boatInfos.getNbBoarding(boardingFromDate)}</strong> embarquements + dont <strong>${boatInfos.getNbBoardingForCompany(boardingFromDate)}</strong> dans votre société + </p>--> <p class="sep"> </p> <label>Ligne(s) du plan :</label> <ul> Added: trunk/suiviobsmer-ui/src/main/webapp/img/calendar-unavailable.png =================================================================== (Binary files differ) Property changes on: trunk/suiviobsmer-ui/src/main/webapp/img/calendar-unavailable.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream
participants (1)
-
fdesbois@users.labs.libre-entreprise.org