[Suiviobsmer-commits] r293 - in trunk: . suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-business/src/main/xmi suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/webapp
Author: fdesbois Date: 2010-01-28 21:53:14 +0000 (Thu, 28 Jan 2010) New Revision: 293 Modified: trunk/changelog.txt trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ChartUtils.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml Log: Evo #1967 : Static graph for boardings on boat (todo style) Modified: trunk/changelog.txt =================================================================== --- trunk/changelog.txt 2010-01-28 19:51:18 UTC (rev 292) +++ trunk/changelog.txt 2010-01-28 21:53:14 UTC (rev 293) @@ -4,6 +4,7 @@ 0.3.1 ----- +- [fdesbois] Amélioration import pour prise en charge du code ligne du plan (sur 4 digits dans l'application) - [fdesbois] Evo #2061 : Synthèse : ajouter le filtre "Programme ou règlement rattachement" - [fdesbois] Ano #2056 : Le filtre sur la date de début pour les contacts ne reste pas Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java 2010-01-28 19:51:18 UTC (rev 292) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactDAOImpl.java 2010-01-28 21:53:14 UTC (rev 293) @@ -77,12 +77,15 @@ @Override public TopiaQuery<E> createQueryDoneContactsFromDate(Boat boat, Date fromDate) { TopiaQuery<E> query = createQuery(). - add(Contact.BOAT, boat). add(Contact.STATE, ContactState.BOARDING_DONE.toString()). add(Contact.VALIDATION_COMPANY, Boolean.TRUE). add(Contact.VALIDATION_PROGRAM + " IS NULL OR " + Contact.VALIDATION_PROGRAM + " = :booleanTrue"). addParam("booleanTrue", Boolean.TRUE); + if (boat != null) { + query.add(Contact.BOAT, boat); + } + if (fromDate != null) { query.add(Contact.TIDE_BEGIN_DATE, Op.GE, fromDate); } Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-01-28 19:51:18 UTC (rev 292) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-01-28 21:53:14 UTC (rev 293) @@ -25,6 +25,9 @@ import fr.ifremer.suiviobsmer.SuiviObsmerException; import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper; import fr.ifremer.suiviobsmer.bean.SamplingFilter; +import fr.ifremer.suiviobsmer.entity.Company; +import fr.ifremer.suiviobsmer.entity.Contact; +import fr.ifremer.suiviobsmer.entity.ContactDAO; import fr.ifremer.suiviobsmer.entity.SampleMonth; import fr.ifremer.suiviobsmer.entity.SampleMonthDAO; import fr.ifremer.suiviobsmer.entity.SampleRow; @@ -38,6 +41,7 @@ import java.util.TreeMap; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.framework.TopiaQuery; +import org.nuiton.topia.framework.TopiaQuery.Op; import org.nuiton.util.PeriodDates; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -124,4 +128,49 @@ return results; } + @Override + public SortedMap<Integer, Integer> getBoardingBoats(Company company, Date fromDate) throws SuiviObsmerException { + TopiaContext transaction = null; + SortedMap<Integer, Integer> results = new TreeMap<Integer, Integer>(); + try { + transaction = rootContext.beginTransaction(); + + for (int i = 1; i <= 12; i++) { + results.put(i, 0); + } + + ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction); + TopiaQuery<Contact> query = dao.createQueryDoneContactsFromDate(null, fromDate); + + // Only for sampleRows with averageTideTime less or equals to 2 days + query.add(Contact.SAMPLE_ROW + "." + SampleRow.AVERAGE_TIDE_TIME, Op.LE, 2.). + addGroup(Contact.BOAT).setSelect("COUNT(*)"); + + if (company != null) { + query.add(Contact.SAMPLE_ROW + "." + SampleRow.COMPANY, company); + } + + if (log.isTraceEnabled()) { + log.trace("Exec query : " + query); + } + + List<Long> nbBoardingsByBoat = (List<Long>)query.execute(); + + for (Long boardings : nbBoardingsByBoat) { + int value = boardings.intValue(); + if (value >= 12) { + value = 12; + } + Integer nbBoats = results.get(value); + results.put(value, nbBoats + 1); + } + + transaction.closeContext(); + } catch (Exception eee) { + SuiviObsmerContext.serviceException(transaction, + "Impossible de récupérer les données pour le graphique dynamique des efforts de marées", eee); + } + return results; + } + } Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo =================================================================== (Binary files differ) Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ChartUtils.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ChartUtils.java 2010-01-28 19:51:18 UTC (rev 292) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ChartUtils.java 2010-01-28 21:53:14 UTC (rev 293) @@ -78,24 +78,35 @@ } - public static JFreeChart createCategoryChart(String title, String axisName, ChartType type, - Map<String, SortedMap<Date, Integer>> input) { + public static JFreeChart createCategoryChart(String title, String axisName, String categoryName, ChartType type, + Map<String, SortedMap<?, Integer>> input) { DateFormat format = new SimpleDateFormat("MM/yyyy"); + boolean dateType = false; DefaultCategoryDataset dataset = new DefaultCategoryDataset(); // Fill data in dataset int i = 0; - for (Map.Entry<String, SortedMap<Date, Integer>> map : input.entrySet()) { - for (Map.Entry<Date, Integer> data : map.getValue().entrySet()) { - dataset.setValue(data.getValue(), map.getKey(), format.format(data.getKey())); + for (Map.Entry<String, SortedMap<?, Integer>> map : input.entrySet()) { + for (Map.Entry<?, Integer> data : map.getValue().entrySet()) { + Object dataKey = data.getKey(); + String columnKey = ""; + if (Date.class.isAssignableFrom(dataKey.getClass())) { + columnKey = format.format((Date)dataKey); + dateType = true; + } else { + columnKey = dataKey.toString(); + } + dataset.setValue(data.getValue(), map.getKey(), columnKey); } i++; } // Axises - CategoryAxis categoryAxis = new CategoryAxis("Mois"); - categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90); + CategoryAxis categoryAxis = new CategoryAxis(categoryName); + if (dateType) { + categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90); + } if (type.noCategoryMargin) { categoryAxis.setCategoryMargin(0); } Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-01-28 19:51:18 UTC (rev 292) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-01-28 21:53:14 UTC (rev 293) @@ -24,6 +24,7 @@ import fr.ifremer.suiviobsmer.SuiviObsmerException; import fr.ifremer.suiviobsmer.bean.BoatFilter; import fr.ifremer.suiviobsmer.bean.BoatFilterImpl; +import fr.ifremer.suiviobsmer.entity.Company; import fr.ifremer.suiviobsmer.entity.WaoUser; import fr.ifremer.suiviobsmer.services.ServiceSynthesis; import fr.ifremer.suiviobsmer.ui.base.AbstractFilteredPage; @@ -31,6 +32,8 @@ import fr.ifremer.suiviobsmer.ui.data.BusinessUtils; import fr.ifremer.suiviobsmer.ui.data.ChartUtils; import fr.ifremer.suiviobsmer.ui.data.ChartUtils.ChartType; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -44,6 +47,7 @@ import org.apache.tapestry5.corelib.components.Zone; import org.apache.tapestry5.ioc.annotations.Inject; import org.jfree.chart.JFreeChart; +import org.nuiton.util.DateUtils; import org.nuiton.util.PeriodDates; import org.slf4j.Logger; @@ -126,11 +130,11 @@ log.info("BUSINESS REQUEST [getDataSampling]"); } List<SortedMap<Date, Integer>> res = serviceSynthesis.getDataSampling(getFilter()); - Map<String, SortedMap<Date, Integer>> data = new HashMap<String, SortedMap<Date, Integer>>(); + Map<String, SortedMap<?, Integer>> data = new HashMap<String, SortedMap<?, Integer>>(); data.put("Planifié", res.get(0)); data.put("Réalisé", res.get(1)); String title = BusinessUtils.getDataSamplingTitle(getFilter()); - return ChartUtils.createCategoryChart(title, "Nb marées", getDataSamplingChartType(), data); + return ChartUtils.createCategoryChart(title, "Nb marées", "Mois", getDataSamplingChartType(), data); } public ChartType getDataSamplingChartType() { @@ -169,5 +173,22 @@ } return this; } - + + /********************* STATIC GRAPH : BOARDINGBOAT ************************/ + + public JFreeChart getBoardingBoatsChart() throws SuiviObsmerException { + if (log.isInfoEnabled()) { + log.info("BUSINESS REQUEST [getBoardingBoats]"); + } + //Company company = user.getAdmin() ? null : user.getCompany(); + Date fromDate = DateUtils.createDateAfterToday(0, -12, 0); + SortedMap<Integer, Integer> res = serviceSynthesis.getBoardingBoats(getFilter().getCompany(), fromDate); + Map<String, SortedMap<?, Integer>> data = new HashMap<String, SortedMap<?, Integer>>(); + data.put("Navires", res); + + DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); + + String title = "Sollicitations des navires depuis le " + dateFormat.format(fromDate); + return ChartUtils.createCategoryChart(title, "Nb navires", "Nb embarquements", ChartType.BAR, data); + } } Modified: trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-01-28 19:51:18 UTC (rev 292) +++ trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-01-28 21:53:14 UTC (rev 293) @@ -106,4 +106,7 @@ </p> <t:chart t:width="600" t:height="400" t:chart="dataSamplingChart" /> </div> + <div class="acenter"> + <t:chart t:width="600" t:height="400" t:chart="boardingBoatsChart" /> + </div> </t:layout>
participants (1)
-
fdesbois@users.labs.libre-entreprise.org