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 ca01419..afce362 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 @@ -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 + } + } 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 6340126..e4696de 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,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); 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 c2765df..80ee014 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 @@ -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 listBatchLevels = loadKPIForBatchLevelFromResource(context); + List 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 builderPopulation = new GenericPersistenceDaoBuilder(entityManagerFactory, "Population"); batchPopulation.setListPopulationType(new ArrayList(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 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(listFarmLevels)); + builderPopulation.getPersistenceEntity().insert(farmPopulation); + } /** @@ -373,18 +385,18 @@ public class FillDatabasePerBatchType { * @param context the context * @return the list */ - private static List loadKPIForBatchLevelFromResource(ServletContext context){ + private static List loadKPIForBatchLevelFromResource(ServletContext context, String pathToCSVKPI){ String kpiFolder = null; List 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); diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/data/PeriodData.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/data/PeriodData.java index bbdd269..7d07ad8 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/data/PeriodData.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/data/PeriodData.java @@ -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 getListPeriods(PopulationType batchType){ List listPeriod = new ArrayList(); - 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)); diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/data/QuarterData.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/data/QuarterData.java index 016dae4..62ab2a6 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/data/QuarterData.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/data/QuarterData.java @@ -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 getListQuarter(PopulationType batchType) { List listQuarter = new ArrayList(); - 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( diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/data/SpeciesData.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/data/SpeciesData.java index e52bfee..2274720 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/data/SpeciesData.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/util/database/data/SpeciesData.java @@ -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 getListSpecies(PopulationType batchType){ List listSpecies = new ArrayList(); - 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)); diff --git a/src/main/resources/FARM/KPI/GROW_OUT_AGGREGATED_CLOSED_BATCHES.csv b/src/main/resources/FARM/KPI/GROW_OUT_AGGREGATED_CLOSED_BATCHES.csv new file mode 100644 index 0000000..99e6232 --- /dev/null +++ b/src/main/resources/FARM/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