Added Farm level and list of KPI to GROW_OUT_AGGREGATED

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/performfish-analytics-portlet@179296 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2019-05-07 09:43:14 +00:00
parent 1ba0cc0c70
commit fb3aadcfe3
7 changed files with 118 additions and 44 deletions

View File

@ -36,11 +36,32 @@ public class PerformFishAnalyticsConstant {
public static final String PERFORM_FISH_FARMID_PARAM = "farmid";
public static final String PERFORM_FISH_BATCH_TYPE_PARAM = "batch_type";
public static final String PERFORM_FISH_SPECIES_ID_PARAM = "speciesid";
public static final String PERFORM_FISH_ANNUAL_PARAMETER = "annual";
public static final String DM_FOCUS_ID_ALL_VALUE = "ALL";
public static enum POPULATION_LEVEL{BATCH, FARM};
/**
* The Enum BATCH_LEVEL.
*
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
* Feb 27, 2019
*/
public static enum BATCH_LEVEL{
PRE_ONGROWING,
PRE_ONGROWING_CLOSED_BATCHES,
HATCHERY_INDIVIDUAL,
HATCHERY_INDIVIDUAL_CLOSED_BATCHES,
GROW_OUT_INDIVIDUAL,
GROW_OUT_INDIVIDUAL_CLOSED_BATCHES,
GROW_OUT_AGGREGATED,
GROW_OUT_AGGREGATED_CLOSED_BATCHES
}
}

View File

@ -104,19 +104,36 @@ public class PerformFishAnalyticsController {
GWT.log("Decoded parameters: "+initParams);
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.PERFORM_FISH_BATCH_TYPE_PARAM+"' param detected");
return;
final String annual = initParams.get(PerformFishAnalyticsConstant.PERFORM_FISH_ANNUAL_PARAMETER);
boolean isAnnualCall = false;
try {
isAnnualCall = Boolean.parseBoolean(annual);
}catch (Exception e) {
// TODO: handle exception
}
final String farmidParam = initParams.get(PerformFishAnalyticsConstant.PERFORM_FISH_FARMID_PARAM);
if(farmidParam==null || farmidParam.isEmpty()){
Window.alert("Error: no '"+PerformFishAnalyticsConstant.PERFORM_FISH_FARMID_PARAM+"' param detected");
return;
}
String batchtypeParam = initParams.get(PerformFishAnalyticsConstant.PERFORM_FISH_BATCH_TYPE_PARAM);
if(batchtypeParam==null || batchtypeParam.isEmpty()){
Window.alert("Error: no '"+PerformFishAnalyticsConstant.PERFORM_FISH_BATCH_TYPE_PARAM+"' param detected");
return;
}
if(isAnnualCall) {
batchtypeParam = PerformFishAnalyticsConstant.BATCH_LEVEL.GROW_OUT_AGGREGATED_CLOSED_BATCHES.name();
GWT.log("Hard cabling batchtypeParam as: "+batchtypeParam);
}
PerformFishInitParameter performFishInitParams = new PerformFishInitParameter();
performFishInitParams.addParameter(PerformFishAnalyticsConstant.PERFORM_FISH_BATCH_TYPE_PARAM, batchtypeParam);
performFishInitParams.addParameter(PerformFishAnalyticsConstant.PERFORM_FISH_FARMID_PARAM, farmidParam);

View File

@ -11,6 +11,7 @@ import java.util.List;
import javax.persistence.EntityManagerFactory;
import javax.servlet.ServletContext;
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant;
import org.gcube.portlets.user.performfishanalytics.server.persistence.GenericPersistenceDaoBuilder;
import org.gcube.portlets.user.performfishanalytics.server.util.csv.CSVReader;
import org.gcube.portlets.user.performfishanalytics.server.util.database.data.AreaData;
@ -26,6 +27,7 @@ import org.gcube.portlets.user.performfishanalytics.shared.Population;
import org.gcube.portlets.user.performfishanalytics.shared.PopulationType;
import org.gcube.portlets.user.performfishanalytics.shared.Quarter;
import org.gcube.portlets.user.performfishanalytics.shared.Species;
import org.gcube.portlets.user.performfishanalytics.shared.Year;
import org.gcube.portlets.user.performfishanalytics.shared.csv.CSVFile;
import org.gcube.portlets.user.performfishanalytics.shared.csv.CSVRow;
import org.slf4j.Logger;
@ -44,26 +46,9 @@ public class FillDatabasePerBatchType {
*
*/
public static final String RELATIVE_PATH_TO_BATCH_KPI = "BATCH/KPI";
public static final String RELATIVE_PATH_TO_FARM_KPI = "FARM/KPI";
protected static Logger log = LoggerFactory.getLogger(FillDatabasePerBatchType.class);
/**
* The Enum BATCH_LEVEL.
*
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
* Feb 27, 2019
*/
public static enum BATCH_LEVEL{
PRE_ONGROWING,
PRE_ONGROWING_CLOSED_BATCHES,
HATCHERY_INDIVIDUAL,
HATCHERY_INDIVIDUAL_CLOSED_BATCHES,
GROW_OUT_INDIVIDUAL,
GROW_OUT_INDIVIDUAL_CLOSED_BATCHES,
GROW_OUT_AGGREGATED,
GROW_OUT_AGGREGATED_CLOSED_BATCHES
}
/**
* Prints the database data.
*
@ -77,7 +62,7 @@ public class FillDatabasePerBatchType {
for(Population population: builderPopulation.getPersistenceEntity().getList()){
log.debug("\n\n#### Population: "+population.getName());
for (PopulationType populationType : population.getListPopulationType()) {
log.debug("\t*PopulationType: "+populationType.getName() +" Type: "+populationType.getType());
log.debug("\t{} Type: {}",populationType.getName(),populationType.getType());
log.debug("\t**has Species: "+populationType.getListSpecies().size());
for (Species species : populationType.getListSpecies()) {
@ -98,6 +83,12 @@ public class FillDatabasePerBatchType {
for (Period period : populationType.getListPeriod()) {
log.debug("\t\t"+period.getName());
}
log.debug("\t**has Years: "+populationType.getListYears().size());
for (Year year : populationType.getListYears()) {
log.debug("\t\t"+year.getValue());
}
log.debug("\t**has KPIs: "+populationType.getListKPI().size());
for (KPI kpi : populationType.getListKPI()) {
printKPIs(kpi);
@ -155,17 +146,17 @@ public class FillDatabasePerBatchType {
*/
public static void fillDatabase(EntityManagerFactory entityManagerFactory, ServletContext context) throws Exception{
//INSERT POPULATION - BATCH
//INSERT LEVEL OF KIND 'BATCH'
Population batchPopulation = new Population(java.util.UUID.randomUUID().toString(), "BATCH", "BATCH", "BATCH Description", null);
List<PopulationType> listBatchLevels = loadKPIForBatchLevelFromResource(context);
List<PopulationType> listBatchLevels = loadKPIForBatchLevelFromResource(context, RELATIVE_PATH_TO_BATCH_KPI);
//FILLING BATCH LEVEL/POPULATIONS
for (PopulationType batchType : listBatchLevels) {
batchType.setPopulation(batchPopulation);
if(batchType.getName().equals(BATCH_LEVEL.PRE_ONGROWING.name()) || batchType.getName().equals(BATCH_LEVEL.PRE_ONGROWING_CLOSED_BATCHES.name())){
if(batchType.getName().equals(PerformFishAnalyticsConstant.BATCH_LEVEL.PRE_ONGROWING.name()) || batchType.getName().equals(PerformFishAnalyticsConstant.BATCH_LEVEL.PRE_ONGROWING_CLOSED_BATCHES.name())){
//Species
batchType.setListSpecies(SpeciesData.getListSpecies(batchType));
@ -174,14 +165,14 @@ public class FillDatabasePerBatchType {
//Periods
batchType.setListPeriod(PeriodData.getListPeriods(batchType));
}else if(batchType.getName().equals(BATCH_LEVEL.HATCHERY_INDIVIDUAL.name()) || batchType.getName().equals(BATCH_LEVEL.HATCHERY_INDIVIDUAL_CLOSED_BATCHES.name())){
}else if(batchType.getName().equals(PerformFishAnalyticsConstant.BATCH_LEVEL.HATCHERY_INDIVIDUAL.name()) || batchType.getName().equals(PerformFishAnalyticsConstant.BATCH_LEVEL.HATCHERY_INDIVIDUAL_CLOSED_BATCHES.name())){
//Species
batchType.setListSpecies(SpeciesData.getListSpecies(batchType));
//Periods
batchType.setListPeriod(PeriodData.getListPeriods(batchType));
}else if(batchType.getName().equals(BATCH_LEVEL.GROW_OUT_INDIVIDUAL.name()) || batchType.getName().equals(BATCH_LEVEL.GROW_OUT_INDIVIDUAL_CLOSED_BATCHES.name())){
}else if(batchType.getName().equals(PerformFishAnalyticsConstant.BATCH_LEVEL.GROW_OUT_INDIVIDUAL.name()) || batchType.getName().equals(PerformFishAnalyticsConstant.BATCH_LEVEL.GROW_OUT_INDIVIDUAL_CLOSED_BATCHES.name())){
//Species
batchType.setListSpecies(SpeciesData.getListSpecies(batchType));
@ -190,7 +181,7 @@ public class FillDatabasePerBatchType {
//Areas
batchType.setListArea(AreaData.getListArea(batchType));
}else if(batchType.getName().equals(BATCH_LEVEL.GROW_OUT_AGGREGATED_CLOSED_BATCHES.name())){
}else if(batchType.getName().equals(PerformFishAnalyticsConstant.BATCH_LEVEL.GROW_OUT_AGGREGATED_CLOSED_BATCHES.name())){
//Species
batchType.setListSpecies(SpeciesData.getListSpecies(batchType));
@ -198,8 +189,7 @@ public class FillDatabasePerBatchType {
batchType.setListQuarter(QuarterData.getListQuarter(batchType));
//Areas
batchType.setListArea(AreaData.getListArea(batchType));
//Years
batchType.setListYears(YearData.getListYears(batchType));
}
}
@ -208,6 +198,28 @@ public class FillDatabasePerBatchType {
GenericPersistenceDaoBuilder<Population> builderPopulation = new GenericPersistenceDaoBuilder<Population>(entityManagerFactory, "Population");
batchPopulation.setListPopulationType(new ArrayList<PopulationType>(listBatchLevels));
builderPopulation.getPersistenceEntity().insert(batchPopulation);
//INSERT LEVEL OF KIND 'FARM'
Population farmPopulation = new Population(java.util.UUID.randomUUID().toString(), "FARM", "FARM", "FARM Description", null);
List<PopulationType> listFarmLevels = loadKPIForBatchLevelFromResource(context, RELATIVE_PATH_TO_FARM_KPI);
//FILLING BATCH LEVEL/POPULATIONS
log.info("FARM batch types are: "+listBatchLevels);
for (PopulationType batchTypeFarm : listFarmLevels) {
batchTypeFarm.setPopulation(farmPopulation);
if(batchTypeFarm.getName().equals(PerformFishAnalyticsConstant.BATCH_LEVEL.GROW_OUT_AGGREGATED_CLOSED_BATCHES.name())){
//Years
batchTypeFarm.setListYears(YearData.getListYears(batchTypeFarm));
}
}
//INSERTING BATCH LEVEL/POPULATIONS
farmPopulation.setListPopulationType(new ArrayList<PopulationType>(listFarmLevels));
builderPopulation.getPersistenceEntity().insert(farmPopulation);
}
/**
@ -373,18 +385,18 @@ public class FillDatabasePerBatchType {
* @param context the context
* @return the list
*/
private static List<PopulationType> loadKPIForBatchLevelFromResource(ServletContext context){
private static List<PopulationType> loadKPIForBatchLevelFromResource(ServletContext context, String pathToCSVKPI){
String kpiFolder = null;
List<PopulationType> batchTypes = null;
try{
String relKPIFolder = String.format("/WEB-INF/classes/%s", RELATIVE_PATH_TO_BATCH_KPI);
String relKPIFolder = String.format("/WEB-INF/classes/%s", pathToCSVKPI);
if(context==null){
log.warn("ECLIPSE MODE ACTIVES ADDING USER DIRECTORY");
String workingDir = System.getProperty("user.dir");
kpiFolder = String.format(workingDir+"/%s/%s", "src/main/resources", RELATIVE_PATH_TO_BATCH_KPI);
kpiFolder = String.format(workingDir+"/%s/%s", "src/main/resources", pathToCSVKPI);
}else{
log.info("Getting real path of {}",relKPIFolder);
kpiFolder = context.getRealPath(relKPIFolder);
@ -406,7 +418,7 @@ public class FillDatabasePerBatchType {
}
if(log.isDebugEnabled()){
for (PopulationType populationType : batchTypes) {
log.info("****Batch {}",populationType);
log.info("****{} {}",PopulationType.class.getSimpleName(),populationType);
log.debug("\t**has KPIs: "+populationType.getListKPI().size());
for (KPI kpi : populationType.getListKPI()) {
printKPIs(kpi);

View File

@ -6,7 +6,8 @@ package org.gcube.portlets.user.performfishanalytics.server.util.database.data;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.user.performfishanalytics.server.util.database.FillDatabasePerBatchType.BATCH_LEVEL;
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant;
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant.BATCH_LEVEL;
import org.gcube.portlets.user.performfishanalytics.shared.Period;
import org.gcube.portlets.user.performfishanalytics.shared.PopulationType;
@ -30,11 +31,11 @@ public class PeriodData {
public static ArrayList<Period> getListPeriods(PopulationType batchType){
List<Period> listPeriod = new ArrayList<Period>();
if(batchType.getName().startsWith(BATCH_LEVEL.PRE_ONGROWING.name()) || batchType.getName().startsWith(BATCH_LEVEL.PRE_ONGROWING_CLOSED_BATCHES.name())){
if(batchType.getName().startsWith(PerformFishAnalyticsConstant.BATCH_LEVEL.PRE_ONGROWING.name()) || batchType.getName().startsWith(BATCH_LEVEL.PRE_ONGROWING_CLOSED_BATCHES.name())){
listPeriod.add(new Period(java.util.UUID.randomUUID().toString(), "early", "", batchType));
listPeriod.add(new Period(java.util.UUID.randomUUID().toString(), "natural", "", batchType));
listPeriod.add(new Period(java.util.UUID.randomUUID().toString(), "late", "", batchType));
}else if(batchType.getName().startsWith(BATCH_LEVEL.HATCHERY_INDIVIDUAL.name()) || batchType.getName().startsWith(BATCH_LEVEL.HATCHERY_INDIVIDUAL_CLOSED_BATCHES.name())){
}else if(batchType.getName().startsWith(PerformFishAnalyticsConstant.BATCH_LEVEL.HATCHERY_INDIVIDUAL.name()) || batchType.getName().startsWith(BATCH_LEVEL.HATCHERY_INDIVIDUAL_CLOSED_BATCHES.name())){
listPeriod.add(new Period(java.util.UUID.randomUUID().toString(), "natural", "", batchType));
listPeriod.add(new Period(java.util.UUID.randomUUID().toString(), "late", "", batchType));
listPeriod.add(new Period(java.util.UUID.randomUUID().toString(), "early", "", batchType));

View File

@ -7,7 +7,8 @@ package org.gcube.portlets.user.performfishanalytics.server.util.database.data;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.user.performfishanalytics.server.util.database.FillDatabasePerBatchType.BATCH_LEVEL;
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant;
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant.BATCH_LEVEL;
import org.gcube.portlets.user.performfishanalytics.shared.PopulationType;
import org.gcube.portlets.user.performfishanalytics.shared.Quarter;
@ -28,7 +29,7 @@ public class QuarterData {
public static ArrayList<Quarter> getListQuarter(PopulationType batchType) {
List<Quarter> listQuarter = new ArrayList<Quarter>();
if (batchType.getName().startsWith(BATCH_LEVEL.GROW_OUT_AGGREGATED.name() )|| batchType.getName().startsWith(BATCH_LEVEL.GROW_OUT_AGGREGATED_CLOSED_BATCHES.name())) {
if (batchType.getName().startsWith(PerformFishAnalyticsConstant.BATCH_LEVEL.GROW_OUT_AGGREGATED.name() )|| batchType.getName().startsWith(BATCH_LEVEL.GROW_OUT_AGGREGATED_CLOSED_BATCHES.name())) {
listQuarter.add(new Quarter(
java.util.UUID.randomUUID().toString(), "1st quarter", "", batchType));
listQuarter.add(new Quarter(

View File

@ -6,7 +6,8 @@ package org.gcube.portlets.user.performfishanalytics.server.util.database.data;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.user.performfishanalytics.server.util.database.FillDatabasePerBatchType.BATCH_LEVEL;
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant;
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant.BATCH_LEVEL;
import org.gcube.portlets.user.performfishanalytics.shared.PopulationType;
import org.gcube.portlets.user.performfishanalytics.shared.Species;
@ -29,7 +30,7 @@ public class SpeciesData {
public static ArrayList<Species> getListSpecies(PopulationType batchType){
List<Species> listSpecies = new ArrayList<Species>();
if(batchType.getName().startsWith(BATCH_LEVEL.PRE_ONGROWING.name()) || batchType.getName().startsWith(BATCH_LEVEL.PRE_ONGROWING_CLOSED_BATCHES.name())){
if(batchType.getName().startsWith(PerformFishAnalyticsConstant.BATCH_LEVEL.PRE_ONGROWING.name()) || batchType.getName().startsWith(BATCH_LEVEL.PRE_ONGROWING_CLOSED_BATCHES.name())){
listSpecies.add(new Species(java.util.UUID.randomUUID().toString(), "S. aurata", "", batchType));
listSpecies.add(new Species(java.util.UUID.randomUUID().toString(), "D. labrax", "", batchType));

View File

@ -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
1 KPI CODE KPI NAME - LEVEL 1 KPI NAME – LEVEL 2 KPI NAME - LEVEL 3
2 Dependency on treatments KPIs
3 Number of therapeutic treatments
4 G9 Total number of antiparasitic treatments - at harvest
5 G10 Total number of antibiotic treatments - at harvest
6 Productivity KPIs
7 G20 Biomass produced per number of FTE employees
8 G21 Biomass produced per volumes of sea water used
9 Environmental KPIs
10 Preservation of biodiversity and habitats KPIs
11 G22 Oxygen depletion persistence days
12 G23 Escapes - Number of episodes
13 G24 Escapes - Estimated number of escaped fish
14 Use of resources
15 G28 Marine space use for farming
16 G29 Land use
17 G30 Freshwater use
18 G31 Energy use
19 G32 Fuel (Diesel) for transport
20 G33 Fuel (Diesel) for other uses
21 G35 Use of renewable energy