From c36b5a418bd0159e97f899df19302bd53af51fe1 Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Tue, 7 May 2019 08:50:30 +0000 Subject: [PATCH] git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/performfish-analytics-portlet@179292 82a268e6-3cf1-43bd-a215-b396298e98cf --- .settings/org.eclipse.wst.common.component | 2 +- pom.xml | 2 +- .../client/PerformFishAnalyticsConstant.java | 4 +- .../client/PerformFishQueryParameter.java | 35 +++++ .../PerformFishAnalyticsController.java | 14 +- .../PerformFishAnalyticsViewController.java | 16 ++- .../server/util/UrlEncoderUtil.java | 49 ++++--- .../server/util/csv/CSVReader.java | 2 +- .../database/FillDatabasePerBatchType.java | 6 +- .../server/util/database/data/YearData.java | 35 +++++ .../server/util/xml/NamespaceContextMap.java | 4 +- .../shared/PopulationType.java | 27 +++- .../performfishanalytics/shared/Year.java | 129 ++++++++++++++++++ .../GROW_OUT_AGGREGATED_CLOSED_BATCHES.csv | 21 +++ src/main/resources/META-INF/persistence.xml | 1 + 15 files changed, 300 insertions(+), 47 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/performfishanalytics/client/PerformFishQueryParameter.java create mode 100644 src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/data/YearData.java create mode 100644 src/main/java/org/gcube/portlets/user/performfishanalytics/shared/Year.java create mode 100644 src/main/resources/BATCH/KPI/GROW_OUT_AGGREGATED_CLOSED_BATCHES.csv diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 4777faf..b515a17 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -5,6 +5,6 @@ - + diff --git a/pom.xml b/pom.xml index a7c41c3..418a3e5 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ org.gcube.portlets.user performfish-analytics-portlet war - 0.1.0-SNAPSHOT + 0.2.0-SNAPSHOT Maven Archetype for GWT diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/PerformFishAnalyticsConstant.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/PerformFishAnalyticsConstant.java index fb1a77f..ca01419 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/PerformFishAnalyticsConstant.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/PerformFishAnalyticsConstant.java @@ -13,8 +13,8 @@ package org.gcube.portlets.user.performfishanalytics.client; */ public class PerformFishAnalyticsConstant { - public static final String FARMID_PARAM = "farmid"; - public static final String BATCHTYPE_PARAM = "batchtype"; +// public static final String FARMID_PARAM = "farmid"; +// public static final String BATCHTYPE_PARAM = "batchtype"; // PERFORM-FISH SERVICE KEYS public static final String BATCHES_TABLE_INTERNAL = "BatchesTable_internal"; public static final String BATCHES_TABLE = "BatchesTable"; diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/PerformFishQueryParameter.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/PerformFishQueryParameter.java new file mode 100644 index 0000000..213f25b --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/PerformFishQueryParameter.java @@ -0,0 +1,35 @@ +package org.gcube.portlets.user.performfishanalytics.client; + +// TODO: Auto-generated Javadoc +/** + * The Enum PerformFishQueryParameter. + */ +public enum PerformFishQueryParameter { + + farmid, + batchtype + + +// /** The farmid param. */ +// FARMID_PARAM("farmid"), +// +// /** The batchtype param. */ +// BATCHTYPE_PARAM("batchtype"); +// +// /** The id. */ +// private String id; +// +// /** +// * Instantiates a new perform fish query parameter. +// * +// * @param id the id +// */ +// PerformFishQueryParameter(String id){ +// this.id = id; +// } +// +// public String getId() { +// return id; +// } + +} diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/controllers/PerformFishAnalyticsController.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/controllers/PerformFishAnalyticsController.java index ec61852..6340126 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/controllers/PerformFishAnalyticsController.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/controllers/PerformFishAnalyticsController.java @@ -104,22 +104,22 @@ public class PerformFishAnalyticsController { GWT.log("Decoded parameters: "+initParams); - final String batchtypeParam = initParams.get(PerformFishAnalyticsConstant.BATCHTYPE_PARAM); - final String farmidParam = initParams.get(PerformFishAnalyticsConstant.FARMID_PARAM); + final String batchtypeParam = initParams.get(PerformFishAnalyticsConstant.PERFORM_FISH_BATCH_TYPE_PARAM); + final String farmidParam = initParams.get(PerformFishAnalyticsConstant.PERFORM_FISH_FARMID_PARAM); if(batchtypeParam==null || batchtypeParam.isEmpty()){ - Window.alert("Error: no '"+PerformFishAnalyticsConstant.BATCHTYPE_PARAM+"' param detected"); + Window.alert("Error: no '"+PerformFishAnalyticsConstant.PERFORM_FISH_BATCH_TYPE_PARAM+"' param detected"); return; } if(farmidParam==null || farmidParam.isEmpty()){ - Window.alert("Error: no '"+PerformFishAnalyticsConstant.FARMID_PARAM+"' param detected"); + Window.alert("Error: no '"+PerformFishAnalyticsConstant.PERFORM_FISH_FARMID_PARAM+"' param detected"); return; } PerformFishInitParameter performFishInitParams = new PerformFishInitParameter(); - performFishInitParams.addParameter(PerformFishAnalyticsConstant.BATCHTYPE_PARAM, batchtypeParam); - performFishInitParams.addParameter(PerformFishAnalyticsConstant.FARMID_PARAM, farmidParam); + performFishInitParams.addParameter(PerformFishAnalyticsConstant.PERFORM_FISH_BATCH_TYPE_PARAM, batchtypeParam); + performFishInitParams.addParameter(PerformFishAnalyticsConstant.PERFORM_FISH_FARMID_PARAM, farmidParam); PerformFishAnalyticsServiceAsync.Util.getInstance().validParameters(performFishInitParams, new AsyncCallback() { @@ -196,7 +196,7 @@ public class PerformFishAnalyticsController { viewController.hideErrors(); final Map> mapParameters = new HashMap>(); - String farmId = decryptParameters.getParameters().get(PerformFishAnalyticsConstant.FARMID_PARAM); + String farmId = decryptParameters.getParameters().get(PerformFishAnalyticsConstant.PERFORM_FISH_FARMID_PARAM); String batchType = viewController.getForm().getBatchType(); String species = viewController.getForm().getSpecies(); List listArea = viewController.getForm().getArea(); diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/controllers/PerformFishAnalyticsViewController.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/controllers/PerformFishAnalyticsViewController.java index c08a520..7ef72fe 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/controllers/PerformFishAnalyticsViewController.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/controllers/PerformFishAnalyticsViewController.java @@ -7,9 +7,9 @@ import java.util.Arrays; import java.util.List; import java.util.Map; -import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant; import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant.POPULATION_LEVEL; import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsServiceAsync; +import org.gcube.portlets.user.performfishanalytics.client.PerformFishQueryParameter; import org.gcube.portlets.user.performfishanalytics.client.view.BaseDockLayoutPanel; import org.gcube.portlets.user.performfishanalytics.client.view.BodyPanel; import org.gcube.portlets.user.performfishanalytics.client.view.CustomTreeModel; @@ -189,13 +189,14 @@ public class PerformFishAnalyticsViewController { return baseDockLayoutPanel; } + /** - * Load population type for population name. + * Load population type for level and batch type. * * @param populationName the population name - * @param decryptParameters the decrypt parameters + * @param decodedParameters the decoded parameters */ - public void loadPopulationTypeForLevelAndBatchType(final String populationName, final PerformFishInitParameter decryptParameters){ + public void loadPopulationTypeForLevelAndBatchType(final String populationName, final PerformFishInitParameter decodedParameters){ PerformFishAnalyticsServiceAsync.Util.getInstance().getListPopulationType(populationName, new AsyncCallback>() { @@ -205,7 +206,7 @@ public class PerformFishAnalyticsViewController { headerPage.showLoading(false); if(result.size()>0){ - String passedBatchType = decryptParameters.getParameters().get(PerformFishAnalyticsConstant.BATCHTYPE_PARAM); + String passedBatchType = decodedParameters.getParameters().get(PerformFishQueryParameter.batchtype.name()); for (PopulationType populationType : result) { if(populationType.getName().compareToIgnoreCase(passedBatchType)==0){ @@ -268,6 +269,11 @@ public class PerformFishAnalyticsViewController { } + /** + * Expand all tree node. + * + * @param rootNode the root node + */ private void expandAllTreeNode(TreeNode rootNode) { if(rootNode==null || rootNode.getChildCount()==0) diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/UrlEncoderUtil.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/UrlEncoderUtil.java index 8c4074e..3e84133 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/UrlEncoderUtil.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/UrlEncoderUtil.java @@ -5,11 +5,14 @@ package org.gcube.portlets.user.performfishanalytics.server.util; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import java.util.Base64; import java.util.List; import java.util.Map; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +// TODO: Auto-generated Javadoc /** * The Class UrlEncoderUtil. * @@ -18,32 +21,11 @@ import org.apache.log4j.Logger; */ public class UrlEncoderUtil { + /** The charset. */ public static String charset = "UTF-8"; - public static Logger logger = Logger.getLogger(UrlEncoderUtil.class); - -// /** -// * Encode query. -// * -// * @param parameters the parameters -// * @return the string -// */ -// public static String encodeQuery(String... parameters){ -// -// String query = ""; -// for (String string : parameters) { -// -// try { -// query+=URLEncoder.encode(string, charset)+"&"; -// } catch (UnsupportedEncodingException e) { -// logger.error(e); -// return query; -// } -// -// } -// return removeLastChar(query); -// } - + /** The logger. */ + public static final Logger logger = LoggerFactory.getLogger(UrlEncoderUtil.class); /** * Encode query. @@ -65,7 +47,7 @@ public class UrlEncoderUtil { query+=String.format(key+"=%s", URLEncoder.encode(value, charset))+"&"; } } catch (UnsupportedEncodingException e) { - logger.error(e); + logger.error("Error:", e); return query; } @@ -91,5 +73,20 @@ public class UrlEncoderUtil { return string; } + + + /** + * Base 64 decode. + * + * @param valueToDecode the value to decode + * @return the long + */ + public static String base64Decode(String valueToDecode) throws Exception{ + try { + return new String(Base64.getDecoder().decode(valueToDecode)); + }catch (Exception e) { + throw new Exception("Error on decoding the parameter: "+ valueToDecode, e); + } + } } diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/csv/CSVReader.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/csv/CSVReader.java index c52c4d6..649e28c 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/csv/CSVReader.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/csv/CSVReader.java @@ -100,7 +100,7 @@ public class CSVReader { List result = new ArrayList<>(); // if empty, return! - if (cvsLine == null && cvsLine.isEmpty()) { + if (cvsLine == null || cvsLine.isEmpty()) { return result; } if (customQuote == ' ') { diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/FillDatabasePerBatchType.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/FillDatabasePerBatchType.java index f51371f..c2765df 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/FillDatabasePerBatchType.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/FillDatabasePerBatchType.java @@ -18,6 +18,7 @@ import org.gcube.portlets.user.performfishanalytics.server.util.database.data.KP import org.gcube.portlets.user.performfishanalytics.server.util.database.data.PeriodData; import org.gcube.portlets.user.performfishanalytics.server.util.database.data.QuarterData; import org.gcube.portlets.user.performfishanalytics.server.util.database.data.SpeciesData; +import org.gcube.portlets.user.performfishanalytics.server.util.database.data.YearData; import org.gcube.portlets.user.performfishanalytics.shared.Area; import org.gcube.portlets.user.performfishanalytics.shared.KPI; import org.gcube.portlets.user.performfishanalytics.shared.Period; @@ -61,7 +62,7 @@ public class FillDatabasePerBatchType { GROW_OUT_INDIVIDUAL_CLOSED_BATCHES, GROW_OUT_AGGREGATED, GROW_OUT_AGGREGATED_CLOSED_BATCHES - } + } /** * Prints the database data. @@ -197,7 +198,8 @@ public class FillDatabasePerBatchType { batchType.setListQuarter(QuarterData.getListQuarter(batchType)); //Areas batchType.setListArea(AreaData.getListArea(batchType)); - + //Years + batchType.setListYears(YearData.getListYears(batchType)); } } diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/data/YearData.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/data/YearData.java new file mode 100644 index 0000000..9db149a --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/data/YearData.java @@ -0,0 +1,35 @@ +package org.gcube.portlets.user.performfishanalytics.server.util.database.data; + +import java.util.ArrayList; +import java.util.List; + +import org.gcube.portlets.user.performfishanalytics.shared.PopulationType; +import org.gcube.portlets.user.performfishanalytics.shared.Year; + +/** + * The Class YearData. + * + * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) + * + * May 6, 2019 + */ +public class YearData { + + + /** + * Gets the list years. + * + * @param batchType the batch type + * @return the list years + */ + public static ArrayList getListYears(PopulationType batchType){ + + List listSpecies = new ArrayList(); + listSpecies.add(new Year(java.util.UUID.randomUUID().toString(), "2016", batchType)); + listSpecies.add(new Year(java.util.UUID.randomUUID().toString(), "2017", batchType)); + listSpecies.add(new Year(java.util.UUID.randomUUID().toString(), "2018", batchType)); + + return (ArrayList) listSpecies; + } + +} diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/xml/NamespaceContextMap.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/xml/NamespaceContextMap.java index f3d9081..14993aa 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/xml/NamespaceContextMap.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/xml/NamespaceContextMap.java @@ -83,7 +83,9 @@ public final class NamespaceContextMap implements NamespaceContext { XMLConstants.XML_NS_URI); addConstant(prefixMap, XMLConstants.XMLNS_ATTRIBUTE, XMLConstants.XMLNS_ATTRIBUTE_NS_URI); - return Collections.unmodifiableMap(prefixMap); + //return Collections.unmodifiableMap(prefixMap); + + return prefixMap; } /** diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/shared/PopulationType.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/shared/PopulationType.java index c0d7445..5f8a32a 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/shared/PopulationType.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/shared/PopulationType.java @@ -28,7 +28,7 @@ import org.eclipse.persistence.annotations.CascadeOnDelete; @Entity @CascadeOnDelete public class PopulationType implements GenericDao, Serializable { - + /** * */ @@ -68,6 +68,12 @@ public class PopulationType implements GenericDao, Serializable { @CascadeOnDelete @OrderColumn private List listKPI = new ArrayList(); + + + @OneToMany(mappedBy = "populationType", orphanRemoval = true, cascade = CascadeType.PERSIST, fetch = FetchType.EAGER) + @CascadeOnDelete + @OrderColumn + private List listYears = new ArrayList(); /** * Instantiates a new population type. @@ -362,6 +368,25 @@ public class PopulationType implements GenericDao, Serializable { this.listSpecies = listSpecies; } + + + /** + * Gets the list years. + * + * @return the list years + */ + public List getListYears() { + return listYears; + } + + /** + * Sets the list years. + * + * @param listYears the new list years + */ + public void setListYears(List listYears) { + this.listYears = listYears; + } /* * (non-Javadoc) diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/shared/Year.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/shared/Year.java new file mode 100644 index 0000000..4fc4c0e --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/shared/Year.java @@ -0,0 +1,129 @@ +package org.gcube.portlets.user.performfishanalytics.shared; + +import java.io.Serializable; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import org.eclipse.persistence.annotations.CascadeOnDelete; + +/** + * The Class Year. + * + * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) + * + * May 6, 2019 + */ +@Entity +@CascadeOnDelete +public class Year implements GenericDao, ReferencePopulationType, Serializable{ + + /** + * + */ + private static final long serialVersionUID = 1L; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private int internalId; // PRIMARY KEY + private String id; + private String value; + + @CascadeOnDelete + private PopulationType populationType; + + + /** + * Instantiates a new year. + */ + public Year() { + } + + + /** + * Instantiates a new year. + * + * @param id the id + * @param value the value + * @param populationType the population type + */ + public Year(String id, String value, PopulationType populationType) { + super(); + this.id = id; + this.value = value; + this.populationType = populationType; + } + + + /* (non-Javadoc) + * @see org.gcube.portles.user.performfishannual.shared.GenericDao#getId() + */ + public String getId() { + return id; + } + + + /** + * Sets the id. + * + * @param id the new id + */ + public void setId(String id) { + this.id = id; + } + + + /** + * Gets the value. + * + * @return the value + */ + public String getValue() { + return value; + } + + + /** + * Sets the value. + * + * @param value the new value + */ + public void setValue(String value) { + this.value = value; + } + + /* (non-Javadoc) + * @see org.gcube.portlets.user.performfishanalytics.shared.ReferencePopulationType#getPopulationType() + */ + public PopulationType getPopulationType() { + return populationType; + } + + /* (non-Javadoc) + * @see org.gcube.portlets.user.performfishanalytics.shared.ReferencePopulationType#setPopulationType(org.gcube.portlets.user.performfishanalytics.shared.PopulationType) + */ + @Override + public void setPopulationType(PopulationType populationType) { + this.populationType = populationType; + } + + + /* (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("Year [internalId="); + builder.append(internalId); + builder.append(", id="); + builder.append(id); + builder.append(", value="); + builder.append(value); + builder.append("]"); + return builder.toString(); + } + + +} diff --git a/src/main/resources/BATCH/KPI/GROW_OUT_AGGREGATED_CLOSED_BATCHES.csv b/src/main/resources/BATCH/KPI/GROW_OUT_AGGREGATED_CLOSED_BATCHES.csv new file mode 100644 index 0000000..99e6232 --- /dev/null +++ b/src/main/resources/BATCH/KPI/GROW_OUT_AGGREGATED_CLOSED_BATCHES.csv @@ -0,0 +1,21 @@ +KPI CODE,KPI NAME - LEVEL 1,KPI NAME – LEVEL 2,KPI NAME - LEVEL 3 +,Dependency on treatments KPIs,, +,,Number of therapeutic treatments, +G9,,,Total number of antiparasitic treatments - at harvest +G10,,,Total number of antibiotic treatments - at harvest +,Productivity KPIs,, +G20,,Biomass produced per number of FTE employees , +G21,,Biomass produced per volumes of sea water used , +,Environmental KPIs,, +,,Preservation of biodiversity and habitats KPIs, +G22,,,Oxygen depletion persistence days +G23,,,Escapes - Number of episodes +G24,,,Escapes - Estimated number of escaped fish +,,Use of resources, +G28,,,Marine space use for farming +G29,,,Land use +G30,,,Freshwater use +G31,,,Energy use +G32,,,Fuel (Diesel) for transport +G33,,,Fuel (Diesel) for other uses +G35,,,Use of renewable energy diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index a5ee3d2..8837c06 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -11,6 +11,7 @@ org.gcube.portlets.user.performfishanalytics.shared.Area org.gcube.portlets.user.performfishanalytics.shared.Period org.gcube.portlets.user.performfishanalytics.shared.KPI + org.gcube.portlets.user.performfishanalytics.shared.Year