2019-03-06 11:55:10 +01:00
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
package org.gcube.portlets.user.performfishanalytics.server.util.database;
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import javax.persistence.EntityManagerFactory;
|
|
|
|
import javax.servlet.ServletContext;
|
|
|
|
|
2019-05-07 11:43:14 +02:00
|
|
|
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant;
|
2019-03-06 11:55:10 +01:00
|
|
|
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;
|
|
|
|
import org.gcube.portlets.user.performfishanalytics.server.util.database.data.KPIBatchTypeData;
|
|
|
|
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;
|
2019-05-07 10:50:30 +02:00
|
|
|
import org.gcube.portlets.user.performfishanalytics.server.util.database.data.YearData;
|
2019-03-06 11:55:10 +01:00
|
|
|
import org.gcube.portlets.user.performfishanalytics.shared.Area;
|
|
|
|
import org.gcube.portlets.user.performfishanalytics.shared.KPI;
|
|
|
|
import org.gcube.portlets.user.performfishanalytics.shared.Period;
|
|
|
|
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;
|
2019-05-07 11:43:14 +02:00
|
|
|
import org.gcube.portlets.user.performfishanalytics.shared.Year;
|
2019-03-06 11:55:10 +01:00
|
|
|
import org.gcube.portlets.user.performfishanalytics.shared.csv.CSVFile;
|
|
|
|
import org.gcube.portlets.user.performfishanalytics.shared.csv.CSVRow;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The Class FillDatabasePerBatchType.
|
|
|
|
*
|
|
|
|
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
|
|
|
* Feb 27, 2019
|
|
|
|
*/
|
|
|
|
public class FillDatabasePerBatchType {
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public static final String RELATIVE_PATH_TO_BATCH_KPI = "BATCH/KPI";
|
2019-05-07 11:43:14 +02:00
|
|
|
public static final String RELATIVE_PATH_TO_FARM_KPI = "FARM/KPI";
|
2019-03-06 11:55:10 +01:00
|
|
|
protected static Logger log = LoggerFactory.getLogger(FillDatabasePerBatchType.class);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prints the database data.
|
|
|
|
*
|
|
|
|
* @param entityManagerFactory the entity manager factory
|
|
|
|
* @throws Exception the exception
|
|
|
|
*/
|
|
|
|
public static void printDatabaseData(EntityManagerFactory entityManagerFactory) throws Exception {
|
|
|
|
|
|
|
|
GenericPersistenceDaoBuilder<Population> builderPopulation = new GenericPersistenceDaoBuilder<Population>(entityManagerFactory, "Population");
|
|
|
|
|
|
|
|
for(Population population: builderPopulation.getPersistenceEntity().getList()){
|
|
|
|
log.debug("\n\n#### Population: "+population.getName());
|
|
|
|
for (PopulationType populationType : population.getListPopulationType()) {
|
2019-05-07 11:43:14 +02:00
|
|
|
log.debug("\t{} Type: {}",populationType.getName(),populationType.getType());
|
2019-03-06 11:55:10 +01:00
|
|
|
|
|
|
|
log.debug("\t**has Species: "+populationType.getListSpecies().size());
|
|
|
|
for (Species species : populationType.getListSpecies()) {
|
|
|
|
log.debug("\t\t"+species.getName());
|
|
|
|
}
|
|
|
|
|
|
|
|
log.debug("\t**has Quarter: "+populationType.getListQuarter().size());
|
|
|
|
for (Quarter quarter : populationType.getListQuarter()) {
|
|
|
|
log.debug("\t\t"+quarter.getName());
|
|
|
|
}
|
|
|
|
|
|
|
|
log.debug("\t**has Area: "+populationType.getListArea().size());
|
|
|
|
for (Area area : populationType.getListArea()) {
|
|
|
|
log.debug("\t\t"+area.getName());
|
|
|
|
}
|
|
|
|
|
|
|
|
log.debug("\t**has Period: "+populationType.getListPeriod().size());
|
|
|
|
for (Period period : populationType.getListPeriod()) {
|
|
|
|
log.debug("\t\t"+period.getName());
|
|
|
|
}
|
2019-05-07 11:43:14 +02:00
|
|
|
|
|
|
|
log.debug("\t**has Years: "+populationType.getListYears().size());
|
|
|
|
for (Year year : populationType.getListYears()) {
|
|
|
|
log.debug("\t\t"+year.getValue());
|
|
|
|
}
|
|
|
|
|
2019-03-06 11:55:10 +01:00
|
|
|
log.debug("\t**has KPIs: "+populationType.getListKPI().size());
|
|
|
|
for (KPI kpi : populationType.getListKPI()) {
|
|
|
|
printKPIs(kpi);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prints the kp is.
|
|
|
|
*
|
|
|
|
* @param kpi the kpi
|
|
|
|
* @param level the level
|
|
|
|
*/
|
|
|
|
public static void printKPIs(KPI kpi, int level){
|
|
|
|
if(kpi==null)
|
|
|
|
return;
|
|
|
|
|
|
|
|
log.debug(String.format("\t%"+level*5+"d|KPI: %s, %s",level, kpi.getCode(), kpi.getName()));
|
|
|
|
//log.debug("LIST KPI ARE: "+listKPI);
|
|
|
|
level++;
|
|
|
|
if(kpi.getListKPI()==null){
|
|
|
|
//log.debug("[LEAF: "+kpi.getName()+"]");
|
|
|
|
//I'm a LEAF
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
for (KPI kpiChild : kpi.getListKPI()) {
|
|
|
|
printKPIs(kpiChild, kpiChild.getDeepIndex());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prints the kp is.
|
|
|
|
*
|
|
|
|
* @param kpi the kpi
|
|
|
|
*/
|
|
|
|
public static void printKPIs(KPI kpi){
|
|
|
|
if(kpi==null || kpi.getListKPI()==null)
|
|
|
|
return;
|
|
|
|
|
|
|
|
log.debug(String.format("\t%"+kpi.getDeepIndex()*5+"d|KPI: %s, %s",kpi.getDeepIndex(), kpi.getCode(), kpi.getName()));
|
|
|
|
for (KPI kpiChild : kpi.getListKPI()) {
|
|
|
|
printKPIs(kpiChild, kpiChild.getDeepIndex());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fill database.
|
|
|
|
*
|
|
|
|
* @param entityManagerFactory the entity manager factory
|
|
|
|
* @param context the context
|
|
|
|
* @throws Exception the exception
|
|
|
|
*/
|
|
|
|
public static void fillDatabase(EntityManagerFactory entityManagerFactory, ServletContext context) throws Exception{
|
|
|
|
|
2019-05-07 11:43:14 +02:00
|
|
|
//INSERT LEVEL OF KIND 'BATCH'
|
2019-03-06 11:55:10 +01:00
|
|
|
Population batchPopulation = new Population(java.util.UUID.randomUUID().toString(), "BATCH", "BATCH", "BATCH Description", null);
|
|
|
|
|
2019-05-07 11:43:14 +02:00
|
|
|
List<PopulationType> listBatchLevels = loadKPIForBatchLevelFromResource(context, RELATIVE_PATH_TO_BATCH_KPI);
|
2019-03-06 11:55:10 +01:00
|
|
|
|
|
|
|
//FILLING BATCH LEVEL/POPULATIONS
|
|
|
|
for (PopulationType batchType : listBatchLevels) {
|
|
|
|
|
|
|
|
batchType.setPopulation(batchPopulation);
|
|
|
|
|
2019-05-07 11:43:14 +02:00
|
|
|
if(batchType.getName().equals(PerformFishAnalyticsConstant.BATCH_LEVEL.PRE_ONGROWING.name()) || batchType.getName().equals(PerformFishAnalyticsConstant.BATCH_LEVEL.PRE_ONGROWING_CLOSED_BATCHES.name())){
|
2019-03-06 11:55:10 +01:00
|
|
|
|
|
|
|
//Species
|
|
|
|
batchType.setListSpecies(SpeciesData.getListSpecies(batchType));
|
|
|
|
//Areas
|
|
|
|
batchType.setListArea(AreaData.getListArea(batchType));
|
|
|
|
//Periods
|
|
|
|
batchType.setListPeriod(PeriodData.getListPeriods(batchType));
|
|
|
|
|
2019-05-07 11:43:14 +02:00
|
|
|
}else if(batchType.getName().equals(PerformFishAnalyticsConstant.BATCH_LEVEL.HATCHERY_INDIVIDUAL.name()) || batchType.getName().equals(PerformFishAnalyticsConstant.BATCH_LEVEL.HATCHERY_INDIVIDUAL_CLOSED_BATCHES.name())){
|
2019-03-06 11:55:10 +01:00
|
|
|
|
|
|
|
//Species
|
|
|
|
batchType.setListSpecies(SpeciesData.getListSpecies(batchType));
|
|
|
|
//Periods
|
|
|
|
batchType.setListPeriod(PeriodData.getListPeriods(batchType));
|
|
|
|
|
2019-05-07 11:43:14 +02:00
|
|
|
}else if(batchType.getName().equals(PerformFishAnalyticsConstant.BATCH_LEVEL.GROW_OUT_INDIVIDUAL.name()) || batchType.getName().equals(PerformFishAnalyticsConstant.BATCH_LEVEL.GROW_OUT_INDIVIDUAL_CLOSED_BATCHES.name())){
|
2019-03-06 11:55:10 +01:00
|
|
|
|
|
|
|
//Species
|
|
|
|
batchType.setListSpecies(SpeciesData.getListSpecies(batchType));
|
|
|
|
//Quarters
|
|
|
|
batchType.setListQuarter(QuarterData.getListQuarter(batchType));
|
|
|
|
//Areas
|
|
|
|
batchType.setListArea(AreaData.getListArea(batchType));
|
|
|
|
|
2019-05-07 11:43:14 +02:00
|
|
|
}else if(batchType.getName().equals(PerformFishAnalyticsConstant.BATCH_LEVEL.GROW_OUT_AGGREGATED_CLOSED_BATCHES.name())){
|
2019-03-06 11:55:10 +01:00
|
|
|
|
|
|
|
//Species
|
|
|
|
batchType.setListSpecies(SpeciesData.getListSpecies(batchType));
|
|
|
|
//Quarters
|
|
|
|
batchType.setListQuarter(QuarterData.getListQuarter(batchType));
|
|
|
|
//Areas
|
|
|
|
batchType.setListArea(AreaData.getListArea(batchType));
|
2019-05-07 11:43:14 +02:00
|
|
|
|
2019-03-06 11:55:10 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//INSERTING BATCH LEVEL/POPULATIONS
|
|
|
|
GenericPersistenceDaoBuilder<Population> builderPopulation = new GenericPersistenceDaoBuilder<Population>(entityManagerFactory, "Population");
|
|
|
|
batchPopulation.setListPopulationType(new ArrayList<PopulationType>(listBatchLevels));
|
|
|
|
builderPopulation.getPersistenceEntity().insert(batchPopulation);
|
2019-05-07 11:43:14 +02:00
|
|
|
|
|
|
|
|
|
|
|
//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);
|
|
|
|
|
2019-03-06 11:55:10 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Builds the populations.
|
|
|
|
*
|
|
|
|
* @return the list
|
|
|
|
*/
|
|
|
|
public static List<Population> buildPopulations(){
|
|
|
|
Population popFarm = new Population(java.util.UUID.randomUUID().toString(), "FARM", "FARM", "FARM Description", null);
|
|
|
|
Population popBatch = new Population(java.util.UUID.randomUUID().toString(), "BATCH", "BATCH", "BATCH Description", null);
|
|
|
|
return Arrays.asList(popFarm, popBatch);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Builds the population type.
|
|
|
|
*
|
|
|
|
* @param type the type
|
|
|
|
* @param description the description
|
|
|
|
* @param poulation the poulation
|
|
|
|
* @return the population type
|
|
|
|
*/
|
|
|
|
public static PopulationType buildPopulationType(String type, String description, Population poulation){
|
|
|
|
|
|
|
|
return new PopulationType(java.util.UUID.randomUUID().toString(), type, type, description, poulation);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Creates the batch type.
|
|
|
|
*
|
|
|
|
* @param fileName the file name
|
|
|
|
* @param reader the reader
|
|
|
|
* @return the population type
|
|
|
|
* @throws Exception the exception
|
|
|
|
*/
|
|
|
|
private static PopulationType createBatchType(String fileName, CSVReader reader) throws Exception{
|
|
|
|
|
|
|
|
Population batchPopulation = null;
|
|
|
|
String batchTypeName = fileName.substring(0, fileName.lastIndexOf("."));
|
|
|
|
PopulationType batchType = buildPopulationType(batchTypeName, batchTypeName+" description", batchPopulation);
|
|
|
|
|
|
|
|
CSVFile csvFile = reader.getCsvFile();
|
|
|
|
List<KPI> rootListKPI = new ArrayList<KPI>();
|
|
|
|
//Map<String, KPI> kpiMap = new HashMap<String, KPI>();
|
|
|
|
int rowIndex = 0;
|
|
|
|
//KPI[] lastDeepLevel = new KPI[10];
|
|
|
|
// lastDeepLevel[0] = null;
|
|
|
|
for (CSVRow csvRow : csvFile.getValueRows()) {
|
|
|
|
List<String> rowValues = csvRow.getListValues();
|
|
|
|
String kpiCode = "";
|
|
|
|
int levelIndex = 0;
|
|
|
|
String kpiName = null;
|
|
|
|
log.trace("Reading row values: {} ",rowValues);
|
|
|
|
log.trace("Row index: {} ",rowIndex);
|
|
|
|
//Looping on row values
|
|
|
|
for (int j = 0; j < rowValues.size(); j++) {
|
|
|
|
String value = rowValues.get(j);
|
|
|
|
log.trace("\tColumn index: {} ",j);
|
|
|
|
//first column I'm expecting the KPI code if exists
|
|
|
|
if(j==0){
|
|
|
|
kpiCode = value;
|
|
|
|
log.trace("\tKPI code: {} ",kpiCode);
|
|
|
|
}else if(value!=null && !value.isEmpty()){
|
|
|
|
levelIndex = j;
|
|
|
|
kpiName = value;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
PopulationType populationType = null;
|
|
|
|
ArrayList<KPI> descendants = null;
|
|
|
|
//DIRECT CHILD OF POPULATION (i.e. "BATCH")
|
|
|
|
if(levelIndex==1){
|
|
|
|
populationType = batchType;
|
|
|
|
}
|
|
|
|
|
|
|
|
KPI toAdd = KPIBatchTypeData.buildKPI(kpiCode, kpiName, kpiName + " description", descendants, populationType, levelIndex);
|
|
|
|
log.debug("\t Created: {} ",toAdd);
|
|
|
|
//lastDeepLevel[levelIndex-1] = toAdd;
|
|
|
|
|
|
|
|
if(levelIndex==1){
|
|
|
|
//ADDING TO ROOT LIST
|
|
|
|
rootListKPI.add(toAdd);
|
|
|
|
// }
|
|
|
|
// else if(levelIndex==2){
|
|
|
|
// //ADDING TO SECOND LEVEL
|
|
|
|
// KPI lastRootKPI = rootListKPI.get(rootListKPI.size()-1);
|
|
|
|
// addAsDescendant(lastRootKPI, toAdd);
|
|
|
|
}else{
|
|
|
|
KPI lastRootKPI = rootListKPI.get(rootListKPI.size()-1);
|
|
|
|
//ADDING TO 3 LEVEL onwards
|
|
|
|
KPI lastDescendant = getLastDescendantAtIndex(lastRootKPI, levelIndex-1);
|
|
|
|
addAsDescendant(lastDescendant, toAdd);
|
|
|
|
}
|
|
|
|
|
|
|
|
rowIndex++;
|
|
|
|
}
|
|
|
|
|
|
|
|
batchType.setListKPI(rootListKPI);
|
|
|
|
|
|
|
|
return batchType;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the last descendant at index.
|
|
|
|
*
|
|
|
|
* @param kpi the kpi
|
|
|
|
* @param levelIndex the level index
|
|
|
|
* @return the last descendant at index
|
|
|
|
*/
|
|
|
|
private static KPI getLastDescendantAtIndex(KPI kpi, int levelIndex){
|
|
|
|
|
|
|
|
if(kpi.getDeepIndex()==levelIndex)
|
|
|
|
return kpi;
|
|
|
|
|
|
|
|
KPI lastKPI = kpi.getListKPI().get(kpi.getListKPI().size()-1);
|
|
|
|
return getLastDescendantAtIndex(lastKPI, levelIndex);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Adds the as descendant.
|
|
|
|
*
|
|
|
|
* @param parent the parent
|
|
|
|
* @param toAdd the to add
|
|
|
|
* @return the kpi
|
|
|
|
*/
|
|
|
|
private static KPI addAsDescendant(KPI parent, KPI toAdd){
|
|
|
|
if(parent==null){
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
List<KPI> asDescendants = parent.getListKPI();
|
|
|
|
if(asDescendants==null){
|
|
|
|
asDescendants = new ArrayList<KPI>();
|
|
|
|
}
|
|
|
|
asDescendants.add(toAdd);
|
|
|
|
parent.setListKPI(asDescendants);
|
|
|
|
return parent;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* List files for folder.
|
|
|
|
*
|
|
|
|
* @param folder the folder
|
|
|
|
* @param files the files
|
|
|
|
*/
|
|
|
|
private static void listFilesForFolder(final File folder, List<File> files) {
|
|
|
|
for (final File fileEntry : folder.listFiles()) {
|
|
|
|
if (fileEntry.isDirectory()) {
|
|
|
|
listFilesForFolder(fileEntry, files);
|
|
|
|
} else {
|
|
|
|
files.add(fileEntry);
|
|
|
|
System.out.println(fileEntry.getName());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Load kpi for batch level from resource.
|
|
|
|
*
|
|
|
|
* @param context the context
|
|
|
|
* @return the list
|
|
|
|
*/
|
2019-05-07 11:43:14 +02:00
|
|
|
private static List<PopulationType> loadKPIForBatchLevelFromResource(ServletContext context, String pathToCSVKPI){
|
2019-03-06 11:55:10 +01:00
|
|
|
|
|
|
|
String kpiFolder = null;
|
|
|
|
List<PopulationType> batchTypes = null;
|
|
|
|
try{
|
|
|
|
|
2019-05-07 11:43:14 +02:00
|
|
|
String relKPIFolder = String.format("/WEB-INF/classes/%s", pathToCSVKPI);
|
2019-03-06 11:55:10 +01:00
|
|
|
|
|
|
|
if(context==null){
|
|
|
|
log.warn("ECLIPSE MODE ACTIVES ADDING USER DIRECTORY");
|
|
|
|
String workingDir = System.getProperty("user.dir");
|
2019-05-07 11:43:14 +02:00
|
|
|
kpiFolder = String.format(workingDir+"/%s/%s", "src/main/resources", pathToCSVKPI);
|
2019-03-06 11:55:10 +01:00
|
|
|
}else{
|
|
|
|
log.info("Getting real path of {}",relKPIFolder);
|
|
|
|
kpiFolder = context.getRealPath(relKPIFolder);
|
|
|
|
}
|
|
|
|
|
|
|
|
log.info("KPI base folder is: {}",kpiFolder);
|
|
|
|
List<File> listFile = new ArrayList<File>();
|
|
|
|
listFilesForFolder(new File(kpiFolder), listFile);
|
|
|
|
log.info("### Loading KPIs from path: {}",kpiFolder);
|
|
|
|
batchTypes = new ArrayList<PopulationType>();
|
|
|
|
for (File file : listFile) {
|
|
|
|
try{
|
|
|
|
log.info("Reading the csv: "+file.getName());
|
|
|
|
CSVReader reader = new CSVReader(file);
|
|
|
|
batchTypes.add(createBatchType(file.getName(), reader));
|
|
|
|
}catch(Exception e){
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(log.isDebugEnabled()){
|
|
|
|
for (PopulationType populationType : batchTypes) {
|
2019-05-07 11:43:14 +02:00
|
|
|
log.info("****{} {}",PopulationType.class.getSimpleName(),populationType);
|
2019-03-06 11:55:10 +01:00
|
|
|
log.debug("\t**has KPIs: "+populationType.getListKPI().size());
|
|
|
|
for (KPI kpi : populationType.getListKPI()) {
|
|
|
|
printKPIs(kpi);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
log.info("### Procedure to load the KPIs from path "+kpiFolder+" terminated correctly");
|
|
|
|
}catch(Exception e){
|
|
|
|
log.error("Error on loading KPI from path: {}",kpiFolder, e);
|
|
|
|
}
|
|
|
|
|
|
|
|
return batchTypes;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The main method.
|
|
|
|
*
|
|
|
|
* @param args the arguments
|
|
|
|
*/
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
|
|
|
try{
|
|
|
|
String kpiFolder = String.format("%s/src/main/resources/BATCH/KPI", System.getProperty("user.dir"));
|
|
|
|
log.info("KPI base folder is: {}",kpiFolder);
|
|
|
|
List<File> listFile = new ArrayList<File>();
|
|
|
|
listFilesForFolder(new File(kpiFolder), listFile);
|
|
|
|
log.info("### Starting populating the DB: ");
|
|
|
|
List<PopulationType> batchTypes = new ArrayList<PopulationType>();
|
|
|
|
for (File file : listFile) {
|
|
|
|
try{
|
|
|
|
log.info("Reading the csv: "+file.getName());
|
|
|
|
CSVReader reader = new CSVReader(file);
|
|
|
|
batchTypes.add(createBatchType(file.getName(), reader));
|
|
|
|
}catch(Exception e){
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for (PopulationType populationType : batchTypes) {
|
|
|
|
log.info("****Batch {}",populationType);
|
|
|
|
log.debug("\t**has KPIs: "+populationType.getListKPI().size());
|
|
|
|
for (KPI kpi : populationType.getListKPI()) {
|
|
|
|
printKPIs(kpi);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
log.info("### Procedure to populate the DB terminated");
|
|
|
|
}catch(Exception e){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|