Author: fdesbois Date: 2010-01-13 18:35:55 +0000 (Wed, 13 Jan 2010) New Revision: 194 Added: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BusinessUtils.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ChartUtils.java Removed: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/BusinessUtils.java Modified: 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/components/Chart.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/AppModule.java trunk/suiviobsmer-ui/src/main/resources/log4j.properties trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml Log: Add dynamic graph synthesis with Tapestry (no filter yet) 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-13 18:06:05 UTC (rev 193) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-01-13 18:35:55 UTC (rev 194) @@ -5,9 +5,10 @@ import fr.ifremer.suiviobsmer.SuiviObsmerException; import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper; import fr.ifremer.suiviobsmer.entity.SampleMonth; -import fr.ifremer.suiviobsmer.entity.SampleRow; -import fr.ifremer.suiviobsmer.entity.SampleRowDAO; +import fr.ifremer.suiviobsmer.entity.SampleMonthDAO; import fr.ifremer.suiviobsmer.services.ServiceSynthesis; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -63,27 +64,38 @@ serie2.put(month, 0); } - SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction); - TopiaQuery<SampleRow> query = dao.createQuery("S"). - addFrom(SampleMonth.class.getName() + " M").add("M IN elements(S)"). + SampleMonthDAO dao = SuiviObsmerModelDAOHelper.getSampleMonthDAO(transaction); + TopiaQuery<SampleMonth> query = dao.createQuery("M"). + setSelect("M.periodDate, SUM(M.realTidesValue), SUM(M.expectedTidesValue)"). + //addFrom(SampleRow.class.getName() + " M").add("M IN elements(S)"). +// add("M.periodDate >= :fromDate").addParam("fromDate", period.getFromDate()). +// add("M.periodDate <= :thruDate").addParam("thruDate", period.getThruDate()). add("M.periodDate", Op.GE, period.getFromDate()). add("M.periodDate", Op.LE, period.getThruDate()). addGroup("M.periodDate").addOrder("M.periodDate"); - List<Object[]> res = - (List<Object[]>)query.setSelect("M.periodDate, SUM(M.realTidesValue), SUM(M.expectedTidesValue)").execute(); + if (log.isTraceEnabled()) { + log.trace("Exec query : " + query); + } + List<Object[]> res = (List<Object[]>)query.execute(); + for (Object[] tab : res) { Date date = (Date)tab[0]; - int sumReal = (Integer)tab[1]; - int sumExpected = (Integer)tab[2]; + int sumReal = ((Long)tab[1]).intValue(); + int sumExpected = ((Long)tab[2]).intValue(); serie1.put(date, sumExpected); serie2.put(date, sumReal); + if (log.isTraceEnabled()) { + DateFormat dateFormat = new SimpleDateFormat(period.getPattern()); + log.trace("Res : " + dateFormat.format(date) + " : " + sumReal + " / " + sumExpected); + } } 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) Deleted: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/BusinessUtils.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/BusinessUtils.java 2010-01-13 18:06:05 UTC (rev 193) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/BusinessUtils.java 2010-01-13 18:35:55 UTC (rev 194) @@ -1,83 +0,0 @@ -/* - * *##% - * SuiviObsmer :: Web Interface - * Copyright (C) 2009 - 2010 Ifremer - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * ##%* - */ - -package fr.ifremer.suiviobsmer.ui.base; - -import fr.ifremer.suiviobsmer.entity.Boat; -import fr.ifremer.suiviobsmer.entity.FishingZone; -import fr.ifremer.suiviobsmer.entity.Profession; -import fr.ifremer.suiviobsmer.entity.SampleRow; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import org.apache.commons.lang.StringUtils; - -/** - * DataUtils - * - * Created: 3 déc. 2009 - * - * @author fdesbois - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author$ - */ -public class BusinessUtils { - - - public static String getTooltipSampleRow(SampleRow row) { - String result = ""; - DateFormat dateFormat = new SimpleDateFormat("MM/yyyy"); - Profession profession = row.getProfession(); - result += "<strong>Métier : </strong>" + profession.getCodeDCF5(); - if (!StringUtils.isEmpty(profession.getMeshSize())) { - result+= " " + profession.getMeshSize(); - } - if (!StringUtils.isEmpty(profession.getSize())) { - result+= " " + profession.getSize(); - } - if (!StringUtils.isEmpty(profession.getOther())) { - result+= " " + profession.getOther(); - } - result += " - " + profession.getLibelle(); - if (!StringUtils.isEmpty(profession.getSpecies())) { - result += "<br /><strong>Espèces cibles : </strong>" + profession.getSpecies(); - } - result += "<br /><strong>Programme : </strong>" + row.getProgramName(); - result += "<br /><strong>Période : </strong> du " + dateFormat.format(row.getPeriodBegin()) + - " au " + dateFormat.format(row.getPeriodEnd()); - - for (FishingZone zone : row.getFishingZone()) { - result += "<br /><strong>Zone de pêche : </strong>" + zone.getCode(); - } - - return result; - } - - public static String getTooltipBoat(Boat boat) { - String result = ""; - result += "<strong>" + boat.getImmatriculation() + "</strong>"; - result += "<br /><strong>Quartier : </strong>" + boat.getDistrictCode(); - result += "<br /><strong>Longueur : </strong>" + boat.getBoatLength() + " m"; - result += "<br /><strong>Année de construction : </strong>" + boat.getBuildYear(); - return result; - } -} Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Chart.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Chart.java 2010-01-13 18:06:05 UTC (rev 193) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/components/Chart.java 2010-01-13 18:35:55 UTC (rev 194) @@ -16,12 +16,10 @@ package fr.ifremer.suiviobsmer.ui.components; -import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.util.List; import org.apache.tapestry5.ComponentResources; import org.apache.tapestry5.Link; @@ -34,7 +32,6 @@ import org.apache.tapestry5.services.Response; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; -import org.nuiton.util.ArrayUtil; /** * Composant qui affiche un graphe de type PieChart. @@ -93,6 +90,8 @@ void beginRender(MarkupWriter writer) { + currentChart = _chart; + // event link params Object[] params = new Object[] { _title, _width, _height }; // params = ArrayUtil.concat(params, _values.toArray()); @@ -154,10 +153,13 @@ } public InputStream getStream() throws IOException { - BufferedImage image = currentChart.createBufferedImage(width, height); - ByteArrayOutputStream byteArray = new ByteArrayOutputStream(); - ChartUtilities.writeBufferedImageAsPNG(byteArray, image); - return new ByteArrayInputStream(byteArray.toByteArray()); +// BufferedImage image = currentChart.createBufferedImage(width, height); +// ByteArrayOutputStream byteArray = new ByteArrayOutputStream(); +// ChartUtilities.writeBufferedImageAsPNG(byteArray, image); +// return new ByteArrayInputStream(byteArray.toByteArray()); + File res = new File("/tmp", "chart.png"); + ChartUtilities.saveChartAsPNG(res, currentChart, width, height); + return new FileInputStream(res); } public void prepareResponse(Response response) { Copied: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BusinessUtils.java (from rev 185, trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/BusinessUtils.java) =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BusinessUtils.java (rev 0) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BusinessUtils.java 2010-01-13 18:35:55 UTC (rev 194) @@ -0,0 +1,105 @@ +/* + * *##% + * SuiviObsmer :: Web Interface + * Copyright (C) 2009 - 2010 Ifremer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * ##%* + */ + +package fr.ifremer.suiviobsmer.ui.data; + +import fr.ifremer.suiviobsmer.bean.ContactState; +import fr.ifremer.suiviobsmer.entity.Boat; +import fr.ifremer.suiviobsmer.entity.Contact; +import fr.ifremer.suiviobsmer.entity.FishingZone; +import fr.ifremer.suiviobsmer.entity.Profession; +import fr.ifremer.suiviobsmer.entity.SampleRow; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import org.apache.commons.lang.BooleanUtils; +import org.apache.commons.lang.StringUtils; + +/** + * DataUtils + * + * Created: 3 déc. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class BusinessUtils { + + + public static String getTooltipSampleRow(SampleRow row) { + String result = ""; + DateFormat dateFormat = new SimpleDateFormat("MM/yyyy"); + Profession profession = row.getProfession(); + result += "<strong>Métier : </strong>" + profession.getCodeDCF5(); + if (!StringUtils.isEmpty(profession.getMeshSize())) { + result+= " " + profession.getMeshSize(); + } + if (!StringUtils.isEmpty(profession.getSize())) { + result+= " " + profession.getSize(); + } + if (!StringUtils.isEmpty(profession.getOther())) { + result+= " " + profession.getOther(); + } + result += " - " + profession.getLibelle(); + if (!StringUtils.isEmpty(profession.getSpecies())) { + result += "<br /><strong>Espèces cibles : </strong>" + profession.getSpecies(); + } + result += "<br /><strong>Programme : </strong>" + row.getProgramName(); + result += "<br /><strong>Période : </strong> du " + dateFormat.format(row.getPeriodBegin()) + + " au " + dateFormat.format(row.getPeriodEnd()); + + for (FishingZone zone : row.getFishingZone()) { + result += "<br /><strong>Zone de pêche : </strong>" + zone.getCode(); + } + + return result; + } + + public static String getTooltipBoat(Boat boat) { + String result = ""; + result += "<strong>" + boat.getImmatriculation() + "</strong>"; + result += "<br /><strong>Quartier : </strong>" + boat.getDistrictCode(); + result += "<br /><strong>Longueur : </strong>" + boat.getBoatLength() + " m"; + result += "<br /><strong>Année de construction : </strong>" + boat.getBuildYear(); + return result; + } + + public static String getCSSColorClassForContact(Contact contact, boolean admin) { + String result = ""; + ContactState state = ContactState.createContactStateEnum(contact.getState()); + if (BooleanUtils.isFalse(contact.getValidationProgram()) || + (!admin && BooleanUtils.isFalse(contact.getValidationCompany()))) { + result = "refused"; + } else if (BooleanUtils.isTrue(contact.getValidationProgram()) || + (!admin && BooleanUtils.isTrue(contact.getValidationCompany()))) { + result = "accepted"; + } else if (state.isUnfinishedState()) { + result = "unfinished"; + } else if (state.equals(ContactState.BOARDING_DONE)) { + result = "even"; + } else { + result = "odd"; + } + return result; + } +} Property changes on: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BusinessUtils.java ___________________________________________________________________ Added: svn:mergeinfo + Added: 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 (rev 0) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ChartUtils.java 2010-01-13 18:35:55 UTC (rev 194) @@ -0,0 +1,86 @@ + +package fr.ifremer.suiviobsmer.ui.data; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; +import java.util.SortedMap; +import org.jfree.chart.JFreeChart; +import org.jfree.chart.axis.CategoryAxis; +import org.jfree.chart.axis.CategoryLabelPositions; +import org.jfree.chart.axis.NumberAxis; +import org.jfree.chart.axis.ValueAxis; +import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; +import org.jfree.chart.plot.CategoryPlot; +import org.jfree.chart.plot.PlotOrientation; +import org.jfree.chart.renderer.category.AbstractCategoryItemRenderer; +import org.jfree.chart.renderer.category.AreaRenderer; +import org.jfree.chart.renderer.category.BarRenderer; +import org.jfree.chart.renderer.category.LineAndShapeRenderer; +import org.jfree.data.category.DefaultCategoryDataset; + +/** + * ChartUtils + * + * Created: 13 janv. 2010 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class ChartUtils { + + public enum ChartType { + BAR(BarRenderer.class), LINE(LineAndShapeRenderer.class), AREA(AreaRenderer.class); + + protected Class<? extends AbstractCategoryItemRenderer> rendererClass; + + ChartType(Class<? extends AbstractCategoryItemRenderer> rendererClass) { + this.rendererClass = rendererClass; + } + + public AbstractCategoryItemRenderer createRenderer() { + try { + return rendererClass.newInstance(); + } catch (Exception eee) { + // will never happens + throw new RuntimeException(eee); + } + } + } + + + public static JFreeChart createCategoryChart(String title, String axisName, ChartType type, + Map<String, SortedMap<Date, Integer>> input) { + DateFormat format = new SimpleDateFormat("MM/yyyy"); + + 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())); + } + i++; + } + + // Axises + CategoryAxis categoryAxis = new CategoryAxis("Mois"); + categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90); + ValueAxis valueAxis = new NumberAxis(axisName); + + // Renderer for Category + AbstractCategoryItemRenderer renderer = type.createRenderer(); + // Show labels on each element + renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); + renderer.setBaseItemLabelsVisible(Boolean.TRUE); + + CategoryPlot plot = new CategoryPlot(dataset, categoryAxis, valueAxis, renderer); + plot.setOrientation(PlotOrientation.VERTICAL); + return new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, true); + } +} Property changes on: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/ChartUtils.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL" 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 2010-01-13 18:06:05 UTC (rev 193) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2010-01-13 18:35:55 UTC (rev 194) @@ -40,7 +40,7 @@ import fr.ifremer.suiviobsmer.services.ServiceReferential; import fr.ifremer.suiviobsmer.services.ServiceSampling; import fr.ifremer.suiviobsmer.services.ServiceUser; -import fr.ifremer.suiviobsmer.ui.base.BusinessUtils; +import fr.ifremer.suiviobsmer.ui.data.BusinessUtils; import fr.ifremer.suiviobsmer.ui.base.GenericSelectModel; import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage; import fr.ifremer.suiviobsmer.ui.components.FeedBack; @@ -577,25 +577,8 @@ } public String getlastContactClass() throws SuiviObsmerException { - //even = !even; - String result = ""; Contact contact = getCompanyBoatInfos().getLastContact(); - ContactState state = ContactState.createContactStateEnum(contact.getState()); - if (BooleanUtils.isFalse(contact.getValidationProgram()) || - (!user.getAdmin() && BooleanUtils.isFalse(contact.getValidationCompany()))) { - result = "refused"; - } else if (BooleanUtils.isTrue(contact.getValidationProgram()) || - (!user.getAdmin() && BooleanUtils.isTrue(contact.getValidationCompany()))) { - result = "accepted"; - } else if (state.isUnfinishedState()) { - result = "unfinished"; - } else if (state.equals(ContactState.BOARDING_DONE)) { - result = "even"; - } else { - result = "odd"; - } - return result; - //return even ? "even" : "odd"; + return BusinessUtils.getCSSColorClassForContact(contact, user.getAdmin()); } /** /////////////////////// FOR EACH ELLIGIBLEBOAT ROW ///////////////// **/ Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-13 18:06:05 UTC (rev 193) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-13 18:35:55 UTC (rev 194) @@ -36,7 +36,7 @@ import fr.ifremer.suiviobsmer.services.ServiceContact; import fr.ifremer.suiviobsmer.services.ServiceReferential; import fr.ifremer.suiviobsmer.services.ServiceSampling; -import fr.ifremer.suiviobsmer.ui.base.BusinessUtils; +import fr.ifremer.suiviobsmer.ui.data.BusinessUtils; import fr.ifremer.suiviobsmer.ui.base.GenericSelectModel; import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage; import fr.ifremer.suiviobsmer.ui.components.Layout; @@ -385,24 +385,7 @@ } public String getRowClass() { - //even = !even; - String result = ""; - ContactState state = ContactState.createContactStateEnum(contact.getState()); - if (contact.getTopiaId().equals(contactSelectedId)) { - result = "selected"; - } else if (BooleanUtils.isFalse(contact.getValidationProgram()) || - (!user.getAdmin() && BooleanUtils.isFalse(contact.getValidationCompany()))) { - result = "refused"; - } else if (BooleanUtils.isTrue(contact.getValidationProgram()) || - (!user.getAdmin() && BooleanUtils.isTrue(contact.getValidationCompany()))) { - result = "accepted"; - } else if (state.isUnfinishedState()) { - result = "unfinished"; - } else if (state.equals(ContactState.BOARDING_DONE)) { - result = "even"; - } - return result; - //return even ? "even" : "odd"; + return BusinessUtils.getCSSColorClassForContact(contact, user.getAdmin()); } public DateFormat getDateFormat() { 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-13 18:06:05 UTC (rev 193) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-01-13 18:35:55 UTC (rev 194) @@ -21,9 +21,22 @@ package fr.ifremer.suiviobsmer.ui.pages; +import fr.ifremer.suiviobsmer.SuiviObsmerException; +import fr.ifremer.suiviobsmer.services.ServiceSynthesis; import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage; +import fr.ifremer.suiviobsmer.ui.data.ChartUtils; +import fr.ifremer.suiviobsmer.ui.data.ChartUtils.ChartType; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.SortedMap; import org.apache.tapestry5.annotations.IncludeStylesheet; +import org.apache.tapestry5.annotations.Persist; +import org.apache.tapestry5.ioc.annotations.Inject; import org.jfree.chart.JFreeChart; +import org.nuiton.util.PeriodDates; +import org.slf4j.Logger; /** * Synthesis @@ -44,9 +57,54 @@ return false; } -// public JFreeChart getTestChart() { -// -// } + @Inject + private ServiceSynthesis serviceSynthesis; + @Inject + private Logger log; + + /********************* DYNAMICAL GRAPH : DATASAMPLING *********************/ + + @Persist + private ChartType dataSamplingChartType; + + public JFreeChart getDataSamplingChart() throws SuiviObsmerException { + if (log.isInfoEnabled()) { + log.info("BUSINESS REQUEST [getDataSampling]"); + } + PeriodDates period = PeriodDates.createMonthsPeriodFromToday(-12); + if (log.isDebugEnabled()) { + log.debug("Period : " + period); + } + List<SortedMap<Date, Integer>> res = serviceSynthesis.getDataSampling(period); + Map<String, SortedMap<Date, Integer>> data = new HashMap<String, SortedMap<Date, Integer>>(); + data.put("Données prévus", res.get(0)); + data.put("Données réels", res.get(1)); + return ChartUtils.createCategoryChart("Données des marées", "Nb marées", getDataSamplingChartType(), data); + } + + public ChartType getDataSamplingChartType() { + // Default type is BAR + if (dataSamplingChartType == null) { + dataSamplingChartType = ChartType.BAR; + } + if (log.isDebugEnabled()) { + log.debug("ChartType : " + dataSamplingChartType); + } + return dataSamplingChartType; + } + + void onActionFromSetDataSamplingChartBarType() { + this.dataSamplingChartType = ChartType.BAR; + } + + void onActionFromSetDataSamplingChartAreaType() { + this.dataSamplingChartType = ChartType.AREA; + } + + void onActionFromSetDataSamplingChartLineType() { + this.dataSamplingChartType = ChartType.LINE; + } + } Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/AppModule.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/AppModule.java 2010-01-13 18:06:05 UTC (rev 193) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/AppModule.java 2010-01-13 18:35:55 UTC (rev 194) @@ -57,6 +57,7 @@ binder.bind(ServiceBoat.class, ServiceBoatImpl.class); binder.bind(ServiceContact.class, ServiceContactImpl.class); binder.bind(ContactModelFactory.class); + binder.bind(ServiceSynthesis.class, ServiceSynthesisImpl.class); // binder.bind(SuiviObsmerModelDAOHelper.getContractClass(User.class), // SuiviObsmerModelDAOHelper.getImplementationClass(User.class)); } Modified: trunk/suiviobsmer-ui/src/main/resources/log4j.properties =================================================================== --- trunk/suiviobsmer-ui/src/main/resources/log4j.properties 2010-01-13 18:06:05 UTC (rev 193) +++ trunk/suiviobsmer-ui/src/main/resources/log4j.properties 2010-01-13 18:35:55 UTC (rev 194) @@ -20,5 +20,5 @@ log4j.logger.org.apache.tapestry5.services.TapestryModule.ComponentClassResolver=INFO log4j.logger.org.apache.tapestry5.TapestryFilter=INFO -log4j.logger.fr.ifremer.suiviobsmer=DEBUG +log4j.logger.fr.ifremer.suiviobsmer=TRACE log4j.logger.org.nuiton.util=DEBUG Modified: trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-01-13 18:06:05 UTC (rev 193) +++ trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-01-13 18:35:55 UTC (rev 194) @@ -1,3 +1,4 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <t:layout t:pageTitle="Synthèse et indicateurs" t:contentId="so-synthesis" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter"> @@ -32,7 +33,7 @@ </div> </div> - <div class="graph"> +<!-- <div class="graph"> <img src="${asset:context:}/tmp/graph1.png" alt="graphe"/> <p class="description">Proin eu molestie dolor. Aliquam eget ultrices lorem. Phasellus molestie iaculis eleifend. Aenean vehicula elit eget felis vestibulum ut tempor est congue. Ut nulla felis, @@ -40,7 +41,12 @@ risus libero, tincidunt eget aliquam sit amet, auctor id libero. Proin in lectus nunc. Proin molestie molestie augue aliquet suscipit. Sed id enim diam, sed rutrum libero. </p> - </div> + </div>--> - <t:chart t:width="300" t:height="250" t:chart="testChart" /> + <p> + <a t:type="actionlink" t:id="setDataSamplingChartBarType">BAR</a> + <a t:type="actionlink" t:id="setDataSamplingChartAreaType">AREA</a> + <a t:type="actionlink" t:id="setDataSamplingChartLineType">LINE</a> + </p> + <t:chart t:width="550" t:height="400" t:chart="dataSamplingChart" /> </t:layout>