Wao-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
July 2010
- 3 participants
- 53 discussions
01 Jul '10
Author: fdesbois
Date: 2010-07-01 16:50:15 +0000 (Thu, 01 Jul 2010)
New Revision: 587
Log:
Evo #2352 : Cartography for contacts :
- Use PieChart page as redirection for Eastwood (or other google chart api implementation servlet)
Added:
trunk/wao-business/src/test/java/fr/ifremer/wao/bean/PieChartDataImplTest.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/PieChart.java
Removed:
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceChartAbstract.java
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/PieChartDataImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv/ImportHelper.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceCartographyImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceChartEmpty.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java
trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties
trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties
trunk/wao-business/src/main/xmi/wao.zargo
trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceCartographyImplTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSynthesisImplTest.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceChartImpl.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceChartServlet.java
trunk/wao-ui/src/main/webapp/WEB-INF/web.xml
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/PieChartDataImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/PieChartDataImpl.java 2010-07-01 12:59:33 UTC (rev 586)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/PieChartDataImpl.java 2010-07-01 16:50:15 UTC (rev 587)
@@ -1,6 +1,9 @@
package fr.ifremer.wao.bean;
+import org.nuiton.util.StringUtil;
+
import java.util.ArrayList;
+import java.util.Arrays;
/**
* Created: 1 juil. 2010
@@ -10,6 +13,10 @@
*/
public class PieChartDataImpl extends PieChartData {
+ private static final String VALUE_SEPARATOR = ",";
+
+ private static final String PROPERTY_SEPARATOR = "|";
+
public PieChartDataImpl() {
labels = new ArrayList<String>();
values = new ArrayList<Double>();
@@ -23,5 +30,54 @@
values.add(value);
colors.add(color);
}
+
+ /**
+ * This method is used to set all data from a input string {@code data}.
+ * The data as string is created using {@link #getData()}.
+ *
+ * @param data input string of data to set
+ */
+ @Override
+ public void setData(String data) {
+ // need to escape separator |
+ String[] properties = data.split("\\" + PROPERTY_SEPARATOR);
+ labels.clear();
+ for (String value : properties[0].split(VALUE_SEPARATOR)) {
+ labels.add(value);
+ }
+ values.clear();
+ for (String value : properties[1].split(VALUE_SEPARATOR)) {
+ values.add(Double.valueOf(value));
+ }
+ colors.clear();
+ for (String value : properties[2].split(VALUE_SEPARATOR)) {
+ colors.add(value);
+ }
+ }
+
+ /**
+ * Concatenate all data as a string. Each property (labels, values and
+ * colors) are separated by {@link #PROPERTY_SEPARATOR} and each value
+ * are separated by {@link #VALUE_SEPARATOR}. Properties order is :
+ * labels, values and colors.
+ *
+ * @return a String corresponding to all data
+ */
+ @Override
+ public String getData() {
+ String[] data = new String[] {
+ StringUtil.join(labels, VALUE_SEPARATOR, true),
+ StringUtil.join(values, VALUE_SEPARATOR, true),
+ StringUtil.join(colors, VALUE_SEPARATOR, true)
+ };
+
+ String result = StringUtil.join(Arrays.asList(data), PROPERTY_SEPARATOR, true);
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return getData();
+ }
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv/ImportHelper.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv/ImportHelper.java 2010-07-01 12:59:33 UTC (rev 586)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv/ImportHelper.java 2010-07-01 16:50:15 UTC (rev 587)
@@ -252,7 +252,7 @@
calendar.set(Calendar.DAY_OF_MONTH, 1);
} catch (ParseException eee) {
// If the date can't be parse, it must be ok with header pattern
- logger.debug("Date parse error : " + eee.getMessage());
+ logger.trace("Date parse error : " + eee.getMessage());
dateFormat = new SimpleDateFormat(pattern);
result = dateFormat.parse(value);
calendar.setTime(result);
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceCartographyImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceCartographyImpl.java 2010-07-01 12:59:33 UTC (rev 586)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceCartographyImpl.java 2010-07-01 16:50:15 UTC (rev 587)
@@ -5,6 +5,7 @@
import fr.ifremer.wao.WaoException;
import fr.ifremer.wao.bean.ContactState;
import fr.ifremer.wao.bean.ContactStateStatistics;
+import fr.ifremer.wao.bean.PieChartData;
import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.io.BoatDistrictData;
import fr.ifremer.wao.io.kml.BoatDistrictKmlReader;
@@ -130,11 +131,10 @@
protected InputStream executeExportContactStatisticsKml(TopiaContext transaction,
Company company) {
- Collection<ContactStateStatistics> data =
- serviceSynthesis.getContactStateStatistics(company, null);
+ PieChartData data = serviceSynthesis.getContactPieChartData(company);
- String miniChartUrl = serviceChart.getContactPieChartUrl(true);
- String bigChartUrl = serviceChart.getContactPieChartUrl(false);
+ String miniChartUrl = serviceChart.getPieChartUrl(data, true);
+ String bigChartUrl = serviceChart.getPieChartUrl(data, false);
return null;
}
Deleted: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceChartAbstract.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceChartAbstract.java 2010-07-01 12:59:33 UTC (rev 586)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceChartAbstract.java 2010-07-01 16:50:15 UTC (rev 587)
@@ -1,55 +0,0 @@
-package fr.ifremer.wao.service;
-
-import fr.ifremer.wao.bean.ContactState;
-import fr.ifremer.wao.bean.ContactStateStatistics;
-import fr.ifremer.wao.bean.PieChartData;
-import fr.ifremer.wao.bean.PieChartDataImpl;
-
-import java.util.Collection;
-
-/**
- * Created: 1 juil. 2010
- *
- * @author fdesbois <fdesbois at codelutin.com>
- * @version $Id$
- */
-public abstract class ServiceChartAbstract implements ServiceChart {
-
- @Override
- public PieChartData getContactPieChartData(
- Collection<ContactStateStatistics> data) {
-
- int realized = 0, refused = 0, other = 0, total = 0;
-
- for (ContactStateStatistics stats : data) {
- for (ContactState state : stats.getData().keySet()) {
-
- Integer value = stats.getData().get(state);
- total += value;
-
- switch (state) {
- case BOARDING_DONE:
- case BOARDING_EXPECTED:
- realized += value; break;
- case BOAT_REFUSED:
- case BOAT_DEFINITIVE_REFUSED:
- refused += value; break;
- default:
- other += value;
- }
- }
- }
-
- PieChartData result = new PieChartDataImpl();
-
- result.addData("Réalisés", getPercentage(realized, total), "0000FF");
- result.addData("Refusés", getPercentage(refused, total), "FF0000");
- result.addData("Autres", getPercentage(other, total), "FFFF10");
-
- return result;
- }
-
- protected double getPercentage(int value, int total) {
- return value / total * 100;
- }
-}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceChartEmpty.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceChartEmpty.java 2010-07-01 12:59:33 UTC (rev 586)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceChartEmpty.java 2010-07-01 16:50:15 UTC (rev 587)
@@ -1,8 +1,10 @@
package fr.ifremer.wao.service;
-import fr.ifremer.wao.bean.ContactStateStatistics;
+import fr.ifremer.wao.bean.PieChartData;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
-import java.util.Collection;
+import java.util.Arrays;
/**
* Created: 30 juin 2010
@@ -10,10 +12,20 @@
* @author fdesbois <fdesbois at codelutin.com>
* @version $Id$
*/
-public class ServiceChartEmpty extends ServiceChartAbstract {
+public class ServiceChartEmpty implements ServiceChart {
+ private static final Logger logger = LoggerFactory.getLogger(ServiceChartEmpty.class);
+
@Override
- public String getContactPieChartUrl(boolean thumb) {
+ public String getPieChartUrl(PieChartData data, boolean thumb) {
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("labels : " + data.getLabels());
+ logger.debug("values : " + data.getValues());
+ logger.debug("colors : " + data.getColors());
+ logger.debug("thumb : " + thumb);
+ }
+
return "";
}
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java 2010-07-01 12:59:33 UTC (rev 586)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java 2010-07-01 16:50:15 UTC (rev 587)
@@ -37,12 +37,13 @@
import fr.ifremer.wao.bean.ContactState;
import fr.ifremer.wao.bean.ContactStateStatistics;
import fr.ifremer.wao.bean.ContactStateStatisticsImpl;
+import fr.ifremer.wao.bean.PieChartData;
+import fr.ifremer.wao.bean.PieChartDataImpl;
import fr.ifremer.wao.bean.SamplingFilter;
import fr.ifremer.wao.entity.Boat;
import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.Contact;
import fr.ifremer.wao.entity.ContactDAO;
-import fr.ifremer.wao.entity.SampleMonth;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.entity.WaoUser;
import org.nuiton.topia.TopiaContext;
@@ -75,7 +76,7 @@
*/
public class ServiceSynthesisImpl extends ServiceSynthesisAbstract {
- private static final Logger log =
+ private static final Logger logger =
LoggerFactory.getLogger(ServiceSynthesisImpl.class);
private WaoContext context;
@@ -157,8 +158,8 @@
// builder.setSampleRowProperty("M." + SampleMonth.SAMPLE_ROW);
// builder.applySamplingFilter(filter);
- if (log.isTraceEnabled()) {
- log.trace("Exec query : " + query);
+ if (logger.isTraceEnabled()) {
+ logger.trace("Exec query : " + query);
}
List<Object[]> res = transaction.findByQuery(query);
@@ -169,10 +170,10 @@
int sumExpected = ((Long)tab[2]).intValue();
serie1.put(date, sumExpected);
serie2.put(date, sumReal);
- if (log.isTraceEnabled()) {
+ if (logger.isTraceEnabled()) {
DateFormat dateFormat =
new SimpleDateFormat(period.getPattern());
- log.trace("Res : " + dateFormat.format(date) + " : "
+ logger.trace("Res : " + dateFormat.format(date) + " : "
+ sumReal + " / " + sumExpected);
}
}
@@ -242,8 +243,8 @@
addGroup(contact + "." + Contact.BOAT).
addOrderDesc("COUNT(*)");
- if (log.isTraceEnabled()) {
- log.trace("Exec query : " + query);
+ if (logger.isTraceEnabled()) {
+ logger.trace("Exec query : " + query);
}
List<Map<String, Object>> nbBoardingsByBoat = transaction.findByQuery(query);
@@ -313,8 +314,8 @@
query.setSelect(companyNameProperty, "COUNT(*)").
addGroup(companyNameProperty);
- if (log.isDebugEnabled()) {
- log.debug("Query for total : " + query);
+ if (logger.isDebugEnabled()) {
+ logger.debug("Query for total : " + query);
}
List<Object[]> totalResults = transaction.findByQuery(query);
@@ -329,8 +330,8 @@
toString()
);
- if (log.isDebugEnabled()) {
- log.debug("Query for result : " + query);
+ if (logger.isDebugEnabled()) {
+ logger.debug("Query for result : " + query);
}
List<Object[]> diffResults = transaction.findByQuery(query);
@@ -339,8 +340,8 @@
for (Object[] row : diffResults) {
String rowCompanyName = (String)row[0];
Long rowCount = (Long)row[1];
- if (log.isDebugEnabled()) {
- log.debug("result row : " + rowCompanyName + " = " + rowCount);
+ if (logger.isDebugEnabled()) {
+ logger.debug("result row : " + rowCompanyName + " = " + rowCount);
}
results.put(rowCompanyName, rowCount.doubleValue());
}
@@ -351,8 +352,8 @@
for (Object[] row : totalResults) {
String rowCompanyName = (String)row[0];
Long rowCount = (Long)row[1];
- if (log.isDebugEnabled()) {
- log.debug("total row : " + rowCompanyName + " = " + rowCount);
+ if (logger.isDebugEnabled()) {
+ logger.debug("total row : " + rowCompanyName + " = " + rowCount);
}
Double value = results.get(rowCompanyName);
if (value == null) {
@@ -427,8 +428,8 @@
addOrder(companyNameProperty).
setSelect(companyNameProperty, stateProperty, "COUNT(*)");
- if (log.isDebugEnabled()) {
- log.debug("Query : " + query);
+ if (logger.isDebugEnabled()) {
+ logger.debug("Query : " + query);
}
List<Object[]> res = transaction.findByQuery(query);
@@ -438,8 +439,8 @@
int rowState = (Integer)row[1];
ContactState state = ContactState.valueOf(rowState);
Long rowCount = (Long)row[2];
- if (log.isDebugEnabled()) {
- log.debug("res : " + rowCompanyName + " _ " + state + " _ " + rowCount);
+ if (logger.isDebugEnabled()) {
+ logger.debug("res : " + rowCompanyName + " _ " + state + " _ " + rowCount);
}
ContactStateStatistics stats = results.get(rowCompanyName);
if (stats == null) {
@@ -486,8 +487,8 @@
query.setSelect(companyNameProperty, dataInputProperty, tideBeginDateProperty);
- if (log.isDebugEnabled()) {
- log.debug("Query : " + query);
+ if (logger.isDebugEnabled()) {
+ logger.debug("Query : " + query);
}
List<Object[]> res = transaction.findByQuery(query);
@@ -499,11 +500,11 @@
int nbDays = DateUtils.getDifferenceInDays(rowTideBeginDate, rowDataInputDate);
- if (log.isDebugEnabled()) {
- log.debug("Company : " + rowCompanyName);
- log.debug("tideBegin : " + rowTideBeginDate);
- log.debug("dataInput : " + rowDataInputDate);
- log.debug("nbDays : " + nbDays);
+ if (logger.isDebugEnabled()) {
+ logger.debug("Company : " + rowCompanyName);
+ logger.debug("tideBegin : " + rowTideBeginDate);
+ logger.debug("dataInput : " + rowDataInputDate);
+ logger.debug("nbDays : " + nbDays);
}
ContactAverageReactivity avg = results.get(rowCompanyName);
@@ -518,4 +519,63 @@
return results.values();
}
+ @Override
+ public PieChartData executeGetContactPieChartData(TopiaContext transaction,
+ Company company)
+ throws TopiaException {
+
+ Collection<ContactStateStatistics> data =
+ executeGetContactStateStatistics(transaction, company, null);
+
+ int realized = 0, refused = 0, other = 0, total = 0;
+
+ for (ContactStateStatistics stats : data) {
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Stats for : " + stats.getCompanyName());
+ }
+
+ for (ContactState state : stats.getData().keySet()) {
+
+ Integer value = stats.getData().get(state);
+ total += value;
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("state = " + state + " _ value = " + value);
+ }
+
+ switch (state) {
+ case BOARDING_DONE:
+ case BOARDING_EXPECTED:
+ realized += value; break;
+ case BOAT_REFUSED:
+ case BOAT_DEFINITIVE_REFUSED:
+ refused += value; break;
+ default:
+ other += value;
+ }
+ }
+ }
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("realized = " + realized + " (" + getPercentage(realized, total) + "%)" +
+ " _ refused = " + refused + " (" + getPercentage(refused, total) + "%)" +
+ " _ other = " + other + " (" + getPercentage(other, total) + "%)" +
+ " _ total = " + total + " (" + getPercentage(total, total) + "%)"
+ );
+ }
+
+ PieChartData result = new PieChartDataImpl();
+
+ result.addData("Réalisés", getPercentage(realized, total), "0000FF");
+ result.addData("Refusés", getPercentage(refused, total), "FF0000");
+ result.addData("Autres", getPercentage(other, total), "FFFF10");
+
+ return result;
+ }
+
+ protected double getPercentage(int value, int total) {
+ return (double)value / (double)total * 100;
+ }
+
}
Modified: trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties
===================================================================
--- trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties 2010-07-01 12:59:33 UTC (rev 586)
+++ trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties 2010-07-01 16:50:15 UTC (rev 587)
@@ -27,6 +27,8 @@
wao.error.serviceBoat.importBoatCsv=
wao.error.serviceCartography.exportContactStatisticsKml=
wao.error.serviceCartography.importBoatDistrictKml=
+wao.error.serviceChart.getContactPieChartData=
+wao.error.serviceChart.getContactPieChartUrl=
wao.error.serviceContact.exportContactCsv=
wao.error.serviceContact.getContacts=
wao.error.serviceContact.getNbContacts=
@@ -61,6 +63,7 @@
wao.error.serviceSampling.importSamplingPlanCsv=
wao.error.serviceSynthesis.getBoardingBoats=
wao.error.serviceSynthesis.getContactDataInputDateReactivity=
+wao.error.serviceSynthesis.getContactPieChartData=
wao.error.serviceSynthesis.getContactStateStatistics=
wao.error.serviceSynthesis.getDataSampling=
wao.error.serviceSynthesis.getNonComplianceBoardingIndicator=
Modified: trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties
===================================================================
--- trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-07-01 12:59:33 UTC (rev 586)
+++ trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-07-01 16:50:15 UTC (rev 587)
@@ -26,6 +26,8 @@
wao.error.serviceBoat.importBoatCsv=Probl\u00E8me d'import du fichier CSV. V\u00E9rifiez l'en-t\u00EAte du fichier \: [ NAVS_COD,CARN_NOM,CARN_LONGUEUR_HT,CARN_ANNEE,QUARTIER_IMMA,PER_COD,PER_NOM,PER_PRENOM,NAVS_ACTIVE ]. Voir documentation pour plus de d\u00E9tails.
wao.error.serviceCartography.exportContactStatisticsKml=
wao.error.serviceCartography.importBoatDistrictKml=Impossible d'importer les coordonn\u00E9es des quartiers des navires. V\u00E9rifiez la documentation pour le bon format du fichier Kml.
+wao.error.serviceChart.getContactPieChartData=
+wao.error.serviceChart.getContactPieChartUrl=
wao.error.serviceContact.exportContactCsv=Impossible d'exporter les contacts
wao.error.serviceContact.getContacts=Impossible de filtrer la liste des contacts
wao.error.serviceContact.getNbContacts=Impossible de compter le nombre de contacts filtr\u00E9s
@@ -60,6 +62,7 @@
wao.error.serviceSampling.importSamplingPlanCsv=Erreur \u00E0 la ligne %1$d [CODE \= %2$s]
wao.error.serviceSynthesis.getBoardingBoats=Impossible de r\u00E9cup\u00E9rer les donn\u00E9es du graphique concernant les embarquements sur les navires
wao.error.serviceSynthesis.getContactDataInputDateReactivity=Impossible de r\u00E9cup\u00E9rer l'indicateur de r\u00E9activit\u00E9 sur les dates de saisies dans Allegro
+wao.error.serviceSynthesis.getContactPieChartData=
wao.error.serviceSynthesis.getContactStateStatistics=Impossible de r\u00E9cup\u00E9rer les statistiques sur les \u00E9tats des contacts
wao.error.serviceSynthesis.getDataSampling=Impossible de r\u00E9cup\u00E9rer les donn\u00E9es pour le graphique dynamique des efforts de mar\u00E9es
wao.error.serviceSynthesis.getNonComplianceBoardingIndicator=Impossible de r\u00E9cup\u00E9rer l'indicateur de non respect du nombre d'observateurs embarqu\u00E9s
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java 2010-07-01 12:59:33 UTC (rev 586)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java 2010-07-01 16:50:15 UTC (rev 587)
@@ -30,21 +30,31 @@
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.SampleRow;
import fr.ifremer.wao.entity.SampleRowDAO;
import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.entity.WaoUserDAO;
+import fr.ifremer.wao.service.ServiceBoat;
+import fr.ifremer.wao.service.ServiceContact;
+import fr.ifremer.wao.service.ServiceReferential;
+import fr.ifremer.wao.service.ServiceSampling;
import fr.ifremer.wao.service.ServiceSamplingImpl;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
+import org.nuiton.util.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.InputStream;
+import java.util.Date;
+import java.util.List;
+
/**
* AbstractServiceTest
*
@@ -506,4 +516,104 @@
}
return user;
}
+
+ protected void prepareContactsData(Company company1, Company company2)
+ throws WaoBusinessException, TopiaException {
+
+ InputStream input = getClass().getResourceAsStream("/import/navires.csv");
+ ServiceBoat serviceBoat = manager.getServiceBoat();
+ serviceBoat.importBoatCsv(input);
+ List<Boat> boats = serviceBoat.getBoatsByImmatriculations("174258");
+ Boat boat = boats.get(0);
+
+ List<Boat> boats2 = serviceBoat.getBoatsByImmatriculations("177474");
+ Boat boat2 = boats2.get(0);
+
+ TopiaContext transaction = manager.getContext().beginTransaction();
+
+ WaoUserDAO userDAO = WaoDAOHelper.getWaoUserDAO(transaction);
+ WaoUser user = userDAO.create(WaoUser.FIRST_NAME,"Jean", WaoUser.LAST_NAME, "Michmuche",
+ WaoUser.COMPANY, company1);
+ company1.addWaoUser(user);
+ WaoUser user2 = userDAO.create(WaoUser.FIRST_NAME,"Bill", WaoUser.LAST_NAME, "Murray",
+ WaoUser.COMPANY, company2);
+ company2.addWaoUser(user2);
+
+ transaction.commitTransaction();
+
+ input = getClass().getResourceAsStream("/import/zonesPeche.csv");
+ ServiceReferential serviceReferential = manager.getServiceReferential();
+ serviceReferential.importFishingZoneCsv(input);
+
+ input = getClass().getResourceAsStream("/import/echantillonnage.csv");
+ ServiceSampling serviceSampling = manager.getServiceSampling();
+ serviceSampling.importSamplingPlanCsv(input);
+
+ SampleRowDAO rowDAO = WaoDAOHelper.getSampleRowDAO(transaction);
+ SampleRow row = rowDAO.findByCode("2010_0001");
+ SampleRow row2 = rowDAO.findByCode("2009_0006");
+
+ transaction.closeContext();
+
+
+ ServiceContact serviceContact = manager.getServiceContact();
+
+ // Contacts for company TARTANPION
+ Contact contact1 = new ContactImpl();
+ contact1.setBoat(boat);
+ contact1.setObserver(user);
+ contact1.setSampleRow(row);
+ contact1.setContactState(ContactState.BOARDING_DONE);
+ Date begin = DateUtils.createDate(3, 3, 2010);
+ contact1.setTideBeginDate(begin);
+ serviceContact.saveContact(contact1, false);
+
+ Contact contact2 = new ContactImpl();
+ contact2.setBoat(boat);
+ contact2.setObserver(user);
+ contact2.setSampleRow(row);
+ contact2.setContactState(ContactState.BOARDING_DONE);
+ begin = DateUtils.createDate(3, 10, 2010);
+ contact2.setTideBeginDate(begin);
+ serviceContact.saveContact(contact2, false);
+
+ Contact contact3 = new ContactImpl();
+ contact3.setBoat(boat);
+ contact3.setObserver(user);
+ contact3.setSampleRow(row);
+ contact3.setContactState(ContactState.BOAT_REFUSED);
+ begin = DateUtils.createDate(3, 5, 2010);
+ contact3.setTopiaCreateDate(begin);
+ serviceContact.saveContact(contact3, false);
+
+ // Contacts for company BIS
+ Contact contact4 = new ContactImpl();
+ contact4.setBoat(boat2);
+ contact4.setObserver(user2);
+ contact4.setSampleRow(row2);
+ contact4.setContactState(ContactState.BOARDING_EXPECTED);
+ begin = DateUtils.createDate(3, 3, 2010);
+ contact4.setTopiaCreateDate(begin);
+ serviceContact.saveContact(contact4, false);
+
+ Contact contact5 = new ContactImpl();
+ contact5.setBoat(boat2);
+ contact5.setObserver(user2);
+ contact5.setSampleRow(row2);
+ contact5.setContactState(ContactState.BOAT_UNAVAILABLE);
+ begin = DateUtils.createDate(3, 5, 2010);
+ contact5.setTopiaCreateDate(begin);
+ serviceContact.saveContact(contact5, false);
+
+ // Contact refused by program, will not be in result
+ Contact contact6 = new ContactImpl();
+ contact6.setBoat(boat2);
+ contact6.setObserver(user2);
+ contact6.setSampleRow(row2);
+ contact6.setContactState(ContactState.BOAT_UNAVAILABLE);
+ begin = DateUtils.createDate(3, 3, 2010);
+ contact6.setTopiaCreateDate(begin);
+ contact6.setValidationProgram(Boolean.FALSE);
+ serviceContact.saveContact(contact6, false);
+ }
}
Added: trunk/wao-business/src/test/java/fr/ifremer/wao/bean/PieChartDataImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/bean/PieChartDataImplTest.java (rev 0)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/bean/PieChartDataImplTest.java 2010-07-01 16:50:15 UTC (rev 587)
@@ -0,0 +1,47 @@
+package fr.ifremer.wao.bean;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Created: 1 juil. 2010
+ *
+ * @author fdesbois <fdesbois at codelutin.com>
+ * @version $Id$
+ */
+public class PieChartDataImplTest {
+
+ @Test
+ public void testSetData() throws Exception {
+
+ String input = "Réalisé,Refusé,Autres|20.0,30.0,50.0|FFFFFF,FFFFFF,FFFFFF";
+ PieChartData data = new PieChartDataImpl();
+
+ data.setData(input);
+
+ Assert.assertEquals(3, data.getLabels().size());
+ Assert.assertTrue(data.getLabels().contains("Réalisé"));
+ Assert.assertTrue(data.getLabels().contains("Refusé"));
+ Assert.assertTrue(data.getLabels().contains("Autres"));
+ Assert.assertEquals(3, data.getValues().size());
+ Assert.assertTrue(data.getValues().contains(20.0));
+ Assert.assertTrue(data.getValues().contains(30.0));
+ Assert.assertTrue(data.getValues().contains(50.0));
+ Assert.assertEquals(3, data.getColors().size());
+ Assert.assertTrue(data.getColors().contains("FFFFFF"));
+ }
+
+ @Test
+ public void testGetData() throws Exception {
+
+ PieChartData data = new PieChartDataImpl();
+
+ data.addData("Réalisé", 20.0, "FFFFFF");
+ data.addData("Refusé", 30.0, "FFFFFF");
+ data.addData("Autres", 50.0, "FFFFFF");
+
+ String expected = "Réalisé,Refusé,Autres|20.0,30.0,50.0|FFFFFF,FFFFFF,FFFFFF";
+ Assert.assertEquals(expected, data.getData());
+
+ }
+}
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceCartographyImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceCartographyImplTest.java 2010-07-01 12:59:33 UTC (rev 586)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceCartographyImplTest.java 2010-07-01 16:50:15 UTC (rev 587)
@@ -5,6 +5,7 @@
import fr.ifremer.wao.WaoDAOHelper;
import fr.ifremer.wao.entity.BoatDistrict;
import fr.ifremer.wao.entity.BoatDistrictDAO;
+import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.io.ImportResults;
import org.junit.Assert;
import org.junit.Before;
@@ -90,9 +91,15 @@
}
@Test
- public void testExportContactStatisticsKml() {
+ public void testExportContactStatisticsKml() throws TopiaException, WaoBusinessException {
/** PREPARE DATA **/
+ // Company TARTANPION
+ Company company = createDefaultCompany();
+ Company company2 = createCompany("BIS");
+
+ prepareContactsData(company, company2);
+
/** EXEC METHOD **/
service.exportContactStatisticsKml(null);
}
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSynthesisImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSynthesisImplTest.java 2010-07-01 12:59:33 UTC (rev 586)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSynthesisImplTest.java 2010-07-01 16:50:15 UTC (rev 587)
@@ -25,8 +25,8 @@
package fr.ifremer.wao.service;
+import fr.ifremer.wao.AbstractServiceTest;
import fr.ifremer.wao.WaoDAOHelper;
-import fr.ifremer.wao.TestManager;
import fr.ifremer.wao.bean.BoardingResult;
import fr.ifremer.wao.bean.ContactAverageReactivity;
import fr.ifremer.wao.bean.ContactState;
@@ -40,58 +40,60 @@
import fr.ifremer.wao.entity.SampleRowDAO;
import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.entity.WaoUserDAO;
-import java.io.InputStream;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
import org.apache.commons.collections.CollectionUtils;
-import org.junit.After;
-import org.junit.AfterClass;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
import org.nuiton.topia.TopiaContext;
import org.nuiton.util.DateUtils;
import org.nuiton.util.PeriodDates;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static org.junit.Assert.*;
+import java.io.InputStream;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
/**
*
* @author fdesbois <fdesbois at codelutin.com>
*/
-public class ServiceSynthesisImplTest {
+public class ServiceSynthesisImplTest extends AbstractServiceTest {
- private static TestManager manager;
+ private static final Logger logger =
+ LoggerFactory.getLogger(ServiceSynthesisImplTest.class);
- private static final Logger log = LoggerFactory.getLogger(ServiceSynthesisImplTest.class);
-
private ServiceSynthesis service;
- public ServiceSynthesisImplTest() {
- }
-
- @BeforeClass
- public static void setUpClass() throws Exception {
- manager = new TestManager();
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
-
@Before
- public void setUp() throws Exception {
- manager.start();
+ public void initialize() {
+ logger.info("initialize ServiceCartographyImplTest");
service = manager.getServiceSynthesis();
}
- @After
- public void tearDown() throws Exception {
- manager.stop();
- }
+// @BeforeClass
+// public static void setUpClass() throws Exception {
+// manager = new TestManager();
+// }
+//
+// @AfterClass
+// public static void tearDownClass() throws Exception {
+// }
+//
+// @Before
+// public void setUp() throws Exception {
+// manager.start();
+// service = manager.getServiceSynthesis();
+// }
+//
+// @After
+// public void tearDown() throws Exception {
+// manager.stop();
+// }
/**
* Test of getDataSampling method, of class ServiceSynthesisImpl.
@@ -106,7 +108,7 @@
*/
@Test
public void testGetBoardingBoats() throws Exception {
- log.info("getBoardingBoats");
+ logger.info("getBoardingBoats");
/** PREPARE DATA **/
InputStream input = getClass().getResourceAsStream("/import/navires.csv");
ServiceBoat serviceBoat = manager.getServiceBoat();
@@ -194,7 +196,7 @@
*/
@Test
public void testGetNonComplianceBoardingIndicator() throws Exception {
- log.info("getNonComplianceBoardingIndicator");
+ logger.info("getNonComplianceBoardingIndicator");
/** PREPARE DATA **/
InputStream input = getClass().getResourceAsStream("/import/navires.csv");
ServiceBoat serviceBoat = manager.getServiceBoat();
@@ -301,108 +303,115 @@
*/
@Test
public void testGetContactStateStatistics() throws Exception {
- log.info("getContactStateStatistics");
+ logger.info("getContactStateStatistics");
/** PREPARE DATA **/
- InputStream input = getClass().getResourceAsStream("/import/navires.csv");
- ServiceBoat serviceBoat = manager.getServiceBoat();
- serviceBoat.importBoatCsv(input);
- List<Boat> boats = serviceBoat.getBoatsByImmatriculations("174258");
- Boat boat = boats.get(0);
+// InputStream input = getClass().getResourceAsStream("/import/navires.csv");
+// ServiceBoat serviceBoat = manager.getServiceBoat();
+// serviceBoat.importBoatCsv(input);
+// List<Boat> boats = serviceBoat.getBoatsByImmatriculations("174258");
+// Boat boat = boats.get(0);
+//
+// List<Boat> boats2 = serviceBoat.getBoatsByImmatriculations("177474");
+// Boat boat2 = boats2.get(0);
+//
+// TopiaContext transaction = manager.getContext().beginTransaction();
+//
+// CompanyDAO companyDAO = WaoDAOHelper.getCompanyDAO(transaction);
+// Company company = companyDAO.create(Company.NAME, "TARTANPION");
+// Company company2 = companyDAO.create(Company.NAME, "BIS");
+//
+// WaoUserDAO userDAO = WaoDAOHelper.getWaoUserDAO(transaction);
+// WaoUser user = userDAO.create(WaoUser.FIRST_NAME,"Jean", WaoUser.LAST_NAME, "Michmuche",
+// WaoUser.COMPANY, company);
+// company.addWaoUser(user);
+// WaoUser user2 = userDAO.create(WaoUser.FIRST_NAME,"Bill", WaoUser.LAST_NAME, "Murray",
+// WaoUser.COMPANY, company2);
+// company2.addWaoUser(user2);
+//
+// transaction.commitTransaction();
+//
+// input = getClass().getResourceAsStream("/import/zonesPeche.csv");
+// ServiceReferential serviceReferential = manager.getServiceReferential();
+// serviceReferential.importFishingZoneCsv(input);
+//
+// input = getClass().getResourceAsStream("/import/echantillonnage.csv");
+// ServiceSampling serviceSampling = manager.getServiceSampling();
+// serviceSampling.importSamplingPlanCsv(input);
+//
+// SampleRowDAO rowDAO = WaoDAOHelper.getSampleRowDAO(transaction);
+// SampleRow row = rowDAO.findByCode("2010_0001");
+// SampleRow row2 = rowDAO.findByCode("2009_0006");
+//
+// transaction.closeContext();
+//
+//
+// ServiceContact serviceContact = manager.getServiceContact();
+//
+// // Contacts for company TARTANPION
+// Contact contact1 = new ContactImpl();
+// contact1.setBoat(boat);
+// contact1.setObserver(user);
+// contact1.setSampleRow(row);
+// contact1.setContactState(ContactState.BOARDING_DONE);
+// Date begin = DateUtils.createDate(3, 3, 2010);
+// contact1.setTideBeginDate(begin);
+// serviceContact.saveContact(contact1, false);
+//
+// Contact contact2 = new ContactImpl();
+// contact2.setBoat(boat);
+// contact2.setObserver(user);
+// contact2.setSampleRow(row);
+// contact2.setContactState(ContactState.BOARDING_DONE);
+// begin = DateUtils.createDate(3, 10, 2010);
+// contact2.setTideBeginDate(begin);
+// serviceContact.saveContact(contact2, false);
+//
+// Contact contact3 = new ContactImpl();
+// contact3.setBoat(boat);
+// contact3.setObserver(user);
+// contact3.setSampleRow(row);
+// contact3.setContactState(ContactState.BOAT_REFUSED);
+// begin = DateUtils.createDate(3, 5, 2010);
+// contact3.setTopiaCreateDate(begin);
+// serviceContact.saveContact(contact3, false);
+//
+// // Contacts for company BIS
+// Contact contact4 = new ContactImpl();
+// contact4.setBoat(boat2);
+// contact4.setObserver(user2);
+// contact4.setSampleRow(row2);
+// contact4.setContactState(ContactState.BOARDING_EXPECTED);
+// begin = DateUtils.createDate(3, 3, 2010);
+// contact4.setTopiaCreateDate(begin);
+// serviceContact.saveContact(contact4, false);
+//
+// Contact contact5 = new ContactImpl();
+// contact5.setBoat(boat2);
+// contact5.setObserver(user2);
+// contact5.setSampleRow(row2);
+// contact5.setContactState(ContactState.BOAT_UNAVAILABLE);
+// begin = DateUtils.createDate(3, 5, 2010);
+// contact5.setTopiaCreateDate(begin);
+// serviceContact.saveContact(contact5, false);
+//
+// // Contact refused by program, will not be in result
+// Contact contact6 = new ContactImpl();
+// contact6.setBoat(boat2);
+// contact6.setObserver(user2);
+// contact6.setSampleRow(row2);
+// contact6.setContactState(ContactState.BOAT_UNAVAILABLE);
+// begin = DateUtils.createDate(3, 3, 2010);
+// contact6.setTopiaCreateDate(begin);
+// contact6.setValidationProgram(Boolean.FALSE);
+// serviceContact.saveContact(contact6, false);
- List<Boat> boats2 = serviceBoat.getBoatsByImmatriculations("177474");
- Boat boat2 = boats2.get(0);
- TopiaContext transaction = manager.getContext().beginTransaction();
+ // Company TARTANPION
+ Company company = createDefaultCompany();
+ Company company2 = createCompany("BIS");
- CompanyDAO companyDAO = WaoDAOHelper.getCompanyDAO(transaction);
- Company company = companyDAO.create(Company.NAME, "TARTANPION");
- Company company2 = companyDAO.create(Company.NAME, "BIS");
+ prepareContactsData(company, company2);
- WaoUserDAO userDAO = WaoDAOHelper.getWaoUserDAO(transaction);
- WaoUser user = userDAO.create(WaoUser.FIRST_NAME,"Jean", WaoUser.LAST_NAME, "Michmuche",
- WaoUser.COMPANY, company);
- company.addWaoUser(user);
- WaoUser user2 = userDAO.create(WaoUser.FIRST_NAME,"Bill", WaoUser.LAST_NAME, "Murray",
- WaoUser.COMPANY, company2);
- company2.addWaoUser(user2);
-
- transaction.commitTransaction();
-
- input = getClass().getResourceAsStream("/import/zonesPeche.csv");
- ServiceReferential serviceReferential = manager.getServiceReferential();
- serviceReferential.importFishingZoneCsv(input);
-
- input = getClass().getResourceAsStream("/import/echantillonnage.csv");
- ServiceSampling serviceSampling = manager.getServiceSampling();
- serviceSampling.importSamplingPlanCsv(input);
-
- SampleRowDAO rowDAO = WaoDAOHelper.getSampleRowDAO(transaction);
- SampleRow row = rowDAO.findByCode("2010_0001");
- SampleRow row2 = rowDAO.findByCode("2009_0006");
-
- transaction.closeContext();
-
-
- ServiceContact serviceContact = manager.getServiceContact();
-
- // Contacts for company TARTANPION
- Contact contact1 = new ContactImpl();
- contact1.setBoat(boat);
- contact1.setObserver(user);
- contact1.setSampleRow(row);
- contact1.setContactState(ContactState.BOARDING_DONE);
- Date begin = DateUtils.createDate(3, 3, 2010);
- contact1.setTideBeginDate(begin);
- serviceContact.saveContact(contact1, false);
-
- Contact contact2 = new ContactImpl();
- contact2.setBoat(boat);
- contact2.setObserver(user);
- contact2.setSampleRow(row);
- contact2.setContactState(ContactState.BOARDING_DONE);
- begin = DateUtils.createDate(3, 10, 2010);
- contact2.setTideBeginDate(begin);
- serviceContact.saveContact(contact2, false);
-
- Contact contact3 = new ContactImpl();
- contact3.setBoat(boat);
- contact3.setObserver(user);
- contact3.setSampleRow(row);
- contact3.setContactState(ContactState.BOAT_REFUSED);
- begin = DateUtils.createDate(3, 5, 2010);
- contact3.setTopiaCreateDate(begin);
- serviceContact.saveContact(contact3, false);
-
- // Contacts for company BIS
- Contact contact4 = new ContactImpl();
- contact4.setBoat(boat2);
- contact4.setObserver(user2);
- contact4.setSampleRow(row2);
- contact4.setContactState(ContactState.BOARDING_EXPECTED);
- begin = DateUtils.createDate(3, 3, 2010);
- contact4.setTopiaCreateDate(begin);
- serviceContact.saveContact(contact4, false);
-
- Contact contact5 = new ContactImpl();
- contact5.setBoat(boat2);
- contact5.setObserver(user2);
- contact5.setSampleRow(row2);
- contact5.setContactState(ContactState.BOAT_UNAVAILABLE);
- begin = DateUtils.createDate(3, 5, 2010);
- contact5.setTopiaCreateDate(begin);
- serviceContact.saveContact(contact5, false);
-
- // Contact refused by program, will not be in result
- Contact contact6 = new ContactImpl();
- contact6.setBoat(boat2);
- contact6.setObserver(user2);
- contact6.setSampleRow(row2);
- contact6.setContactState(ContactState.BOAT_UNAVAILABLE);
- begin = DateUtils.createDate(3, 3, 2010);
- contact6.setTopiaCreateDate(begin);
- contact6.setValidationProgram(Boolean.FALSE);
- serviceContact.saveContact(contact6, false);
-
/** EXEC METHOD **/
// result for company TARTANPION with no period
@@ -437,7 +446,7 @@
assertEquals(1, data.get(ContactState.BOAT_UNAVAILABLE).intValue());
// result for period 3/1/2010 to 31/3/2010 for BIS company
- begin = DateUtils.createDate(3, 1, 2010);
+ Date begin = DateUtils.createDate(3, 1, 2010);
Date end = DateUtils.createDate(31, 3, 2010);
PeriodDates period = new PeriodDates(begin, end);
@@ -457,7 +466,7 @@
*/
@Test
public void testGetContactDataInputDateReactivity() throws Exception {
- log.info("getContactDataInputDateReactivity");
+ logger.info("getContactDataInputDateReactivity");
/** PREPARE DATA **/
InputStream input = getClass().getResourceAsStream("/import/navires.csv");
ServiceBoat serviceBoat = manager.getServiceBoat();
Added: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/PieChart.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/PieChart.java (rev 0)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/PieChart.java 2010-07-01 16:50:15 UTC (rev 587)
@@ -0,0 +1,32 @@
+package fr.ifremer.wao.ui.pages;
+
+import fr.ifremer.wao.bean.PieChartData;
+import fr.ifremer.wao.service.ServiceChart;
+import org.apache.tapestry5.ioc.annotations.Inject;
+import org.apache.tapestry5.ioc.annotations.InjectService;
+import org.slf4j.Logger;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+/**
+ * Created: 1 juil. 2010
+ *
+ * @author fdesbois <fdesbois at codelutin.com>
+ * @version $Id$
+ */
+public class PieChart {
+
+ @Inject
+ private Logger logger;
+
+ @InjectService("serviceChartServlet")
+ private ServiceChart chartServlet;
+
+ URL onActivate(PieChartData data, boolean thumb)
+ throws MalformedURLException {
+
+ return new URL(chartServlet.getPieChartUrl(data, thumb));
+ }
+
+}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java 2010-07-01 12:59:33 UTC (rev 586)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java 2010-07-01 16:50:15 UTC (rev 587)
@@ -27,6 +27,8 @@
import fr.ifremer.wao.WaoContextImpl;
import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.PieChartData;
+import fr.ifremer.wao.bean.PieChartDataImpl;
import fr.ifremer.wao.service.ServiceBoat;
import fr.ifremer.wao.service.ServiceBoatImpl;
import fr.ifremer.wao.service.ServiceCartography;
@@ -44,16 +46,21 @@
import fr.ifremer.wao.service.ServiceSynthesisImpl;
import fr.ifremer.wao.service.ServiceUser;
import fr.ifremer.wao.service.ServiceUserImpl;
+import fr.ifremer.wao.ui.pages.PieChart;
import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.ioc.Configuration;
import org.apache.tapestry5.ioc.MappedConfiguration;
import org.apache.tapestry5.ioc.OrderedConfiguration;
import org.apache.tapestry5.ioc.ServiceBinder;
import org.apache.tapestry5.ioc.annotations.EagerLoad;
+import org.apache.tapestry5.ioc.services.Coercion;
+import org.apache.tapestry5.ioc.services.CoercionTuple;
import org.apache.tapestry5.ioc.services.RegistryShutdownHub;
import org.apache.tapestry5.services.ApplicationStateContribution;
import org.apache.tapestry5.services.ApplicationStateCreator;
import org.apache.tapestry5.services.ApplicationStateManager;
import org.apache.tapestry5.services.ComponentRequestFilter;
+import org.apache.tapestry5.services.PageRenderLinkSource;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.RequestFilter;
import org.apache.tapestry5.services.RequestHandler;
@@ -77,7 +84,6 @@
public static void bind(ServiceBinder binder) {
binder.bind(ContactModelFactory.class);
- binder.bind(ServiceChartServlet.class);
}
/**
@@ -153,11 +159,16 @@
return instance;
}
- public ServiceChart buildServiceChart() {
- ServiceChartImpl instance = new ServiceChartImpl();
+ public ServiceChart buildServiceChart(PageRenderLinkSource pageRender) {
+ ServiceChartImpl instance = new ServiceChartImpl(pageRender);
return instance;
}
+ public ServiceChart buildServiceChartServlet() {
+ ServiceChartServlet instance = new ServiceChartServlet();
+ return instance;
+ }
+
public ServiceAuthentication buildServiceAuthentication(
ApplicationStateManager stateManager) {
ServiceAuthentication instance =
@@ -234,22 +245,6 @@
};
}
-// /**
-// * This is the Shutdown service definition. This service is used when the
-// * server shutdown. It detects the Tapestry registry shutdown.
-// * @param hub
-// * @param context
-// * @return
-// */
-// @EagerLoad
-// public RegistryShutdownListener buildWaoShutdown(
-// @InjectService("RegistryShutdownHub") RegistryShutdownHub hub,
-// WaoContext context) {
-// RegistryShutdownListener listener = new WaoManager(context);
-// hub.addRegistryShutdownListener(listener);
-// return listener;
-// }
-
/**
* Used to instanciate SessionState ConnectedUser when session expires.
*
@@ -287,12 +282,37 @@
RequiresAuthenticationFilter.class);
}
+ /**
+ * Contribute to Coercion of Tapestry for PieChartData used as page context.
+ *
+ * @param configuration Coercion configuration
+ * @see PieChart
+ */
+ public static void contributeTypeCoercer(
+ Configuration<CoercionTuple<?, ?>> configuration) {
+
+ Coercion<String, PieChartData> coercion1 = new Coercion<String, PieChartData>() {
+ @Override
+ public PieChartData coerce(String input) {
+ PieChartData data = new PieChartDataImpl();
+ data.setData(input);
+ return data;
+ }
+ };
+ Coercion<PieChartData, String> coercion2 = new Coercion<PieChartData, String>() {
-// public void contributeValidationMessagesSource(OrderedConfiguration<String> configuration) {
-// configuration.add("myValidationMessages", "jumpstart/web/validators/ValidationMessages");
-// configuration.add("myTranslationMessages", "jumpstart/web/translators/TranslationMessages");
-// }
+ @Override
+ public String coerce(PieChartData input) {
+ return input.getData();
+ }
+ };
+ // coercions for String <-> PieChartData
+ configuration.add(new CoercionTuple<String, PieChartData>(
+ String.class, PieChartData.class, coercion1));
+ configuration.add(new CoercionTuple<PieChartData, String>(
+ PieChartData.class, String.class, coercion2));
+ }
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceChartImpl.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceChartImpl.java 2010-07-01 12:59:33 UTC (rev 586)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceChartImpl.java 2010-07-01 16:50:15 UTC (rev 587)
@@ -1,29 +1,37 @@
package fr.ifremer.wao.ui.services;
-import fr.ifremer.wao.WaoProperty;
-import fr.ifremer.wao.service.ServiceChartAbstract;
+import fr.ifremer.wao.bean.PieChartData;
+import fr.ifremer.wao.service.ServiceChart;
+import fr.ifremer.wao.ui.pages.PieChart;
+import org.apache.tapestry5.Link;
+import org.apache.tapestry5.services.PageRenderLinkSource;
-import java.util.Collection;
-
/**
+ * Implementation of {@link ServiceChart} that create urls to charts.
+ * This implementation only redirect to Wao pages like for example {@link PieChart}.
+ * <p />
* Created: 1 juil. 2010
*
* @author fdesbois <fdesbois at codelutin.com>
* @version $Id$
*/
-public class ServiceChartImpl extends ServiceChartAbstract {
+public class ServiceChartImpl implements ServiceChart {
+ /** Service used to create links */
+ private PageRenderLinkSource pageRender;
+
+ public ServiceChartImpl(PageRenderLinkSource pageRender) {
+ this.pageRender = pageRender;
+ }
+
@Override
- public String getContactPieChartUrl(boolean thumb) {
- StringBuilder url = new StringBuilder("http://").
- append(WaoProperty.SERVER_PATH.getValue()).
- append("/contacts/piechart");
+ public String getPieChartUrl(PieChartData data, boolean thumb) {
+ // Create link to PieChart. This page is used to redirect
+ // data to the correct chartServlet
+ Link link = pageRender.createPageRenderLinkWithContext(
+ PieChart.class, data, thumb);
- if (thumb) {
- url.append("/mini");
- }
-
- return url.toString();
+ return link.toAbsoluteURI();
}
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceChartServlet.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceChartServlet.java 2010-07-01 12:59:33 UTC (rev 586)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceChartServlet.java 2010-07-01 16:50:15 UTC (rev 587)
@@ -1,26 +1,21 @@
package fr.ifremer.wao.ui.services;
import fr.ifremer.wao.WaoProperty;
-import fr.ifremer.wao.bean.ContactState;
-import fr.ifremer.wao.bean.ContactStateStatistics;
import fr.ifremer.wao.bean.PieChartData;
import fr.ifremer.wao.service.ServiceChart;
-import fr.ifremer.wao.service.ServiceChartAbstract;
import org.nuiton.util.StringUtil;
-import java.text.NumberFormat;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
/**
+ * Implementation of {@link ServiceChart} using Google PieChart Api syntax to
+ * create urls. The property {@link WaoProperty#CHART_SERVER_PATH} defines
+ * the path of the application used to create a PieChart.
+ * <p />
* Created: 30 juin 2010
*
* @author fdesbois <fdesbois at codelutin.com>
* @version $Id$
*/
-public class ServiceChartServlet {
+public class ServiceChartServlet implements ServiceChart {
private static final String PROPERTY_SEPARATOR = "&";
private static final String PROPERTY_VALUE_SEPARATOR = ",";
@@ -33,11 +28,12 @@
private static final String PROPERTY_SIZE = "chs=";
private static final String PROPERTY_VALUE = "chd=t:";
- private static final String PIE_CHART_MINI_TYPE = PROPERTY_TYPE + "p";
+ private static final String PIE_CHART_MINI_TYPE = PROPERTY_TYPE + "p3";
private static final String PIE_CHART_MAXI_TYPE = PROPERTY_TYPE + "p3";
private static final String PIE_CHART_MINI_SIZE = PROPERTY_SIZE + "50x50";
private static final String PIE_CHART_MAXI_SIZE = PROPERTY_SIZE + "450x250";
+ @Override
public String getPieChartUrl(PieChartData data, boolean thumb) {
String values = StringUtil.join(data.getValues(),
@@ -48,10 +44,11 @@
StringBuilder url = new StringBuilder(getBaseUrl());
- if (!thumb) {
+ if (thumb) {
url.append(PIE_CHART_MINI_TYPE).
append(PROPERTY_SEPARATOR).append(PIE_CHART_MINI_SIZE);
+ // Labels only on big image
} else {
String labels = StringUtil.join(data.getLabels(),
PROPERTY_LABEL_SEPARATOR, false);
@@ -61,6 +58,7 @@
append(PROPERTY_SEPARATOR).append(PROPERTY_LABEL).append(labels);
}
+ // Add values and colors
url.append(PROPERTY_SEPARATOR).append(PROPERTY_VALUE).append(values).
append(PROPERTY_SEPARATOR).append(PROPERTY_COLOR).append(colors);
Modified: trunk/wao-ui/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/wao-ui/src/main/webapp/WEB-INF/web.xml 2010-07-01 12:59:33 UTC (rev 586)
+++ trunk/wao-ui/src/main/webapp/WEB-INF/web.xml 2010-07-01 16:50:15 UTC (rev 587)
@@ -43,14 +43,6 @@
<filter-name>app</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- <servlet>
- <servlet-name>ContactPieChart</servlet-name>
- <servlet-class>fr.ifremer.wao.ui.servlet.ContactPieChart</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>Main</servlet-name>
- <url-pattern>/start</url-pattern>
- </servlet-mapping>
<!-- <session-config>
<session-timeout>1</session-timeout>
</session-config>-->
1
0
[Suiviobsmer-commits] r586 - in trunk: wao-business/src/main/filters wao-business/src/main/java/fr/ifremer/wao wao-business/src/main/java/fr/ifremer/wao/bean wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/main/xmi wao-ui/src/main/java/fr/ifremer/wao/ui/services wao-ui/src/main/webapp/WEB-INF
by fdesbois@users.labs.libre-entreprise.org 01 Jul '10
by fdesbois@users.labs.libre-entreprise.org 01 Jul '10
01 Jul '10
Author: fdesbois
Date: 2010-07-01 12:59:33 +0000 (Thu, 01 Jul 2010)
New Revision: 586
Log:
Evo #2352 : Cartography for contacts :
- Implement ServiceChart using GoogleChart Api
Added:
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/PieChartDataImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceChartAbstract.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceChartServlet.java
Modified:
trunk/wao-business/src/main/filters/Wao.properties
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoProperty.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceCartographyImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceChartEmpty.java
trunk/wao-business/src/main/xmi/wao.zargo
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceChartImpl.java
trunk/wao-ui/src/main/webapp/WEB-INF/web.xml
Modified: trunk/wao-business/src/main/filters/Wao.properties
===================================================================
--- trunk/wao-business/src/main/filters/Wao.properties 2010-07-01 12:53:05 UTC (rev 585)
+++ trunk/wao-business/src/main/filters/Wao.properties 2010-07-01 12:59:33 UTC (rev 586)
@@ -47,5 +47,8 @@
## Server path for link in mails (must be override)
wao.server.path=localhost:8080/wao
+## Server path for chart generation
+chart.server.path=
+
## Version (not necessary to override it)
wao.version=${project.version}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoProperty.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoProperty.java 2010-07-01 12:53:05 UTC (rev 585)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoProperty.java 2010-07-01 12:59:33 UTC (rev 586)
@@ -33,22 +33,24 @@
* @author fdesbois <fdesbois at codelutin.com>
*/
public enum WaoProperty {
- /** Path for log on activityCalendar import **/
+ /** Path for log on activityCalendar import */
FILENAME_LOG_ACTIVITY_IMPORT("wao.log.activityCalendar.import"),
- /** Path for log on activityCalendar access **/
+ /** Path for log on activityCalendar access */
FILENAME_LOG_ACTIVITY_ACCESS("wao.log.activityCalendar.access"),
- /** Host for email **/
+ /** Host for email */
EMAIL_HOST("wao.email.host"),
- /** Port for email **/
+ /** Port for email */
EMAIL_PORT("wao.email.port"),
- /** From for email **/
+ /** From for email */
EMAIL_FROM("wao.email.from"),
- /** Contact email (same as from) **/
+ /** Contact email (same as from) */
EMAIL_CONTACT(EMAIL_FROM.getKey()),
- /** App version **/
+ /** App version */
APP_VERSION("wao.version"),
- /** Server path **/
- SERVER_PATH("wao.server.path");
+ /** Server path */
+ SERVER_PATH("wao.server.path"),
+ /** Path for Eastwood */
+ CHART_SERVER_PATH("chart.server.path");
private String key;
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/PieChartDataImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/PieChartDataImpl.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/PieChartDataImpl.java 2010-07-01 12:59:33 UTC (rev 586)
@@ -0,0 +1,27 @@
+package fr.ifremer.wao.bean;
+
+import java.util.ArrayList;
+
+/**
+ * Created: 1 juil. 2010
+ *
+ * @author fdesbois <fdesbois at codelutin.com>
+ * @version $Id$
+ */
+public class PieChartDataImpl extends PieChartData {
+
+ public PieChartDataImpl() {
+ labels = new ArrayList<String>();
+ values = new ArrayList<Double>();
+ colors = new ArrayList<String>();
+ }
+
+
+ @Override
+ public void addData(String label, Double value, String color) {
+ labels.add(label);
+ values.add(value);
+ colors.add(color);
+ }
+
+}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceCartographyImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceCartographyImpl.java 2010-07-01 12:53:05 UTC (rev 585)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceCartographyImpl.java 2010-07-01 12:59:33 UTC (rev 586)
@@ -3,6 +3,7 @@
import fr.ifremer.wao.WaoContext;
import fr.ifremer.wao.WaoDAOHelper;
import fr.ifremer.wao.WaoException;
+import fr.ifremer.wao.bean.ContactState;
import fr.ifremer.wao.bean.ContactStateStatistics;
import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.io.BoatDistrictData;
@@ -20,6 +21,8 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
/**
* Created: 29 juin 2010
@@ -130,7 +133,8 @@
Collection<ContactStateStatistics> data =
serviceSynthesis.getContactStateStatistics(company, null);
- String chartUrl = serviceChart.getContactStatePieChartUrl(data);
+ String miniChartUrl = serviceChart.getContactPieChartUrl(true);
+ String bigChartUrl = serviceChart.getContactPieChartUrl(false);
return null;
}
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceChartAbstract.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceChartAbstract.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceChartAbstract.java 2010-07-01 12:59:33 UTC (rev 586)
@@ -0,0 +1,55 @@
+package fr.ifremer.wao.service;
+
+import fr.ifremer.wao.bean.ContactState;
+import fr.ifremer.wao.bean.ContactStateStatistics;
+import fr.ifremer.wao.bean.PieChartData;
+import fr.ifremer.wao.bean.PieChartDataImpl;
+
+import java.util.Collection;
+
+/**
+ * Created: 1 juil. 2010
+ *
+ * @author fdesbois <fdesbois at codelutin.com>
+ * @version $Id$
+ */
+public abstract class ServiceChartAbstract implements ServiceChart {
+
+ @Override
+ public PieChartData getContactPieChartData(
+ Collection<ContactStateStatistics> data) {
+
+ int realized = 0, refused = 0, other = 0, total = 0;
+
+ for (ContactStateStatistics stats : data) {
+ for (ContactState state : stats.getData().keySet()) {
+
+ Integer value = stats.getData().get(state);
+ total += value;
+
+ switch (state) {
+ case BOARDING_DONE:
+ case BOARDING_EXPECTED:
+ realized += value; break;
+ case BOAT_REFUSED:
+ case BOAT_DEFINITIVE_REFUSED:
+ refused += value; break;
+ default:
+ other += value;
+ }
+ }
+ }
+
+ PieChartData result = new PieChartDataImpl();
+
+ result.addData("Réalisés", getPercentage(realized, total), "0000FF");
+ result.addData("Refusés", getPercentage(refused, total), "FF0000");
+ result.addData("Autres", getPercentage(other, total), "FFFF10");
+
+ return result;
+ }
+
+ protected double getPercentage(int value, int total) {
+ return value / total * 100;
+ }
+}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceChartEmpty.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceChartEmpty.java 2010-07-01 12:53:05 UTC (rev 585)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceChartEmpty.java 2010-07-01 12:59:33 UTC (rev 586)
@@ -10,10 +10,10 @@
* @author fdesbois <fdesbois at codelutin.com>
* @version $Id$
*/
-public class ServiceChartEmpty implements ServiceChart {
+public class ServiceChartEmpty extends ServiceChartAbstract {
@Override
- public String getContactStatePieChartUrl(Collection<ContactStateStatistics> data) {
+ public String getContactPieChartUrl(boolean thumb) {
return "";
}
}
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java 2010-07-01 12:53:05 UTC (rev 585)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java 2010-07-01 12:59:33 UTC (rev 586)
@@ -77,6 +77,7 @@
public static void bind(ServiceBinder binder) {
binder.bind(ContactModelFactory.class);
+ binder.bind(ServiceChartServlet.class);
}
/**
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceChartImpl.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceChartImpl.java 2010-07-01 12:53:05 UTC (rev 585)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceChartImpl.java 2010-07-01 12:59:33 UTC (rev 586)
@@ -1,22 +1,29 @@
package fr.ifremer.wao.ui.services;
-import fr.ifremer.wao.bean.ContactStateStatistics;
-import fr.ifremer.wao.service.ServiceChart;
+import fr.ifremer.wao.WaoProperty;
+import fr.ifremer.wao.service.ServiceChartAbstract;
import java.util.Collection;
/**
- * Created: 30 juin 2010
+ * Created: 1 juil. 2010
*
* @author fdesbois <fdesbois at codelutin.com>
* @version $Id$
*/
-public class ServiceChartImpl implements ServiceChart {
+public class ServiceChartImpl extends ServiceChartAbstract {
@Override
- public String getContactStatePieChartUrl(Collection<ContactStateStatistics> data) {
- // Create Url compatible for Google Chart API and Eastwood (JFreeChart)
- return null;
+ public String getContactPieChartUrl(boolean thumb) {
+ StringBuilder url = new StringBuilder("http://").
+ append(WaoProperty.SERVER_PATH.getValue()).
+ append("/contacts/piechart");
+
+ if (thumb) {
+ url.append("/mini");
+ }
+
+ return url.toString();
}
}
Added: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceChartServlet.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceChartServlet.java (rev 0)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceChartServlet.java 2010-07-01 12:59:33 UTC (rev 586)
@@ -0,0 +1,76 @@
+package fr.ifremer.wao.ui.services;
+
+import fr.ifremer.wao.WaoProperty;
+import fr.ifremer.wao.bean.ContactState;
+import fr.ifremer.wao.bean.ContactStateStatistics;
+import fr.ifremer.wao.bean.PieChartData;
+import fr.ifremer.wao.service.ServiceChart;
+import fr.ifremer.wao.service.ServiceChartAbstract;
+import org.nuiton.util.StringUtil;
+
+import java.text.NumberFormat;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created: 30 juin 2010
+ *
+ * @author fdesbois <fdesbois at codelutin.com>
+ * @version $Id$
+ */
+public class ServiceChartServlet {
+
+ private static final String PROPERTY_SEPARATOR = "&";
+ private static final String PROPERTY_VALUE_SEPARATOR = ",";
+ private static final String PROPERTY_LABEL_SEPARATOR = "|";
+ private static final String PROPERTY_COLOR_SEPARATOR = ",";
+
+ private static final String PROPERTY_TYPE = "cht=";
+ private static final String PROPERTY_LABEL = "chl=";
+ private static final String PROPERTY_COLOR = "chco=";
+ private static final String PROPERTY_SIZE = "chs=";
+ private static final String PROPERTY_VALUE = "chd=t:";
+
+ private static final String PIE_CHART_MINI_TYPE = PROPERTY_TYPE + "p";
+ private static final String PIE_CHART_MAXI_TYPE = PROPERTY_TYPE + "p3";
+ private static final String PIE_CHART_MINI_SIZE = PROPERTY_SIZE + "50x50";
+ private static final String PIE_CHART_MAXI_SIZE = PROPERTY_SIZE + "450x250";
+
+ public String getPieChartUrl(PieChartData data, boolean thumb) {
+
+ String values = StringUtil.join(data.getValues(),
+ PROPERTY_VALUE_SEPARATOR, false);
+
+ String colors = StringUtil.join(data.getColors(),
+ PROPERTY_COLOR_SEPARATOR, false);
+
+ StringBuilder url = new StringBuilder(getBaseUrl());
+
+ if (!thumb) {
+ url.append(PIE_CHART_MINI_TYPE).
+ append(PROPERTY_SEPARATOR).append(PIE_CHART_MINI_SIZE);
+
+ } else {
+ String labels = StringUtil.join(data.getLabels(),
+ PROPERTY_LABEL_SEPARATOR, false);
+
+ url.append(PIE_CHART_MAXI_TYPE).
+ append(PROPERTY_SEPARATOR).append(PIE_CHART_MAXI_SIZE).
+ append(PROPERTY_SEPARATOR).append(PROPERTY_LABEL).append(labels);
+ }
+
+ url.append(PROPERTY_SEPARATOR).append(PROPERTY_VALUE).append(values).
+ append(PROPERTY_SEPARATOR).append(PROPERTY_COLOR).append(colors);
+
+ return url.toString();
+ }
+
+ protected String getBaseUrl() {
+ String baseUrl = "http://" + WaoProperty.CHART_SERVER_PATH.getValue() +
+ "/chart?";
+ return baseUrl;
+ }
+
+}
Modified: trunk/wao-ui/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/wao-ui/src/main/webapp/WEB-INF/web.xml 2010-07-01 12:53:05 UTC (rev 585)
+++ trunk/wao-ui/src/main/webapp/WEB-INF/web.xml 2010-07-01 12:59:33 UTC (rev 586)
@@ -43,6 +43,14 @@
<filter-name>app</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
+ <servlet>
+ <servlet-name>ContactPieChart</servlet-name>
+ <servlet-class>fr.ifremer.wao.ui.servlet.ContactPieChart</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>Main</servlet-name>
+ <url-pattern>/start</url-pattern>
+ </servlet-mapping>
<!-- <session-config>
<session-timeout>1</session-timeout>
</session-config>-->
1
0
Author: tchemit
Date: 2010-07-01 12:53:05 +0000 (Thu, 01 Jul 2010)
New Revision: 585
Log:
use mavenpom4labs 2.2.2.1
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-06-30 16:53:28 UTC (rev 584)
+++ trunk/pom.xml 2010-07-01 12:53:05 UTC (rev 585)
@@ -10,7 +10,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4labs</artifactId>
- <version>2.2.1</version>
+ <version>2.2.2.1</version>
</parent>
<groupId>fr.ifremer</groupId>
1
0