diff --git a/src/main/java/org/gcube/dataharvest/AccountingDataHarvesterPlugin.java b/src/main/java/org/gcube/dataharvest/AccountingDataHarvesterPlugin.java index 42b98d2..896eb51 100644 --- a/src/main/java/org/gcube/dataharvest/AccountingDataHarvesterPlugin.java +++ b/src/main/java/org/gcube/dataharvest/AccountingDataHarvesterPlugin.java @@ -35,41 +35,44 @@ import org.slf4j.LoggerFactory; * @author Luca Frosini (ISTI - CNR) */ public class AccountingDataHarvesterPlugin extends Plugin { - + private static Logger logger = LoggerFactory.getLogger(AccountingDataHarvesterPlugin.class); - + private static final String PROPERTY_FILENAME = "config.properties"; - + public static final String START_DATE_INPUT_PARAMETER = "startDate"; public static final String MEASURE_TYPE_INPUT_PARAMETER = "measureType"; public static final String RERUN_INPUT_PARAMETER = "reRun"; public static final String GET_VRE_USERS_INPUT_PARAMETER = "getVREUsers"; public static final String DRY_RUN_INPUT_PARAMETER = "dryRun"; - + public static final String SO_BIG_DATA_VO = "/d4science.research-infrastructures.eu/SoBigData"; + public static final String SO_BIG_DATA_EU_VRE = "/d4science.research-infrastructures.eu/gCubeApps/SoBigData.eu"; + public static final String SO_BIG_DATA_IT_VRE = "/d4science.research-infrastructures.eu/gCubeApps/SoBigData.it"; public static final String SO_BIG_DATA_CATALOGUE_CONTEXT = "/d4science.research-infrastructures.eu/SoBigData/ResourceCatalogue"; + public static final String TAGME_CONTEXT = "/d4science.research-infrastructures.eu/SoBigData/TagMe"; - + protected Date start; protected Date end; - + public AccountingDataHarvesterPlugin(DataHarvestPluginDeclaration pluginDeclaration) { super(pluginDeclaration); } - + private static final InheritableThreadLocal properties = new InheritableThreadLocal() { - + @Override protected Properties initialValue() { return new Properties(); } - + }; - + public static InheritableThreadLocal getProperties() { return properties; } - + public Properties getConfigParameters() throws IOException { Properties properties = new Properties(); try { @@ -89,70 +92,68 @@ public class AccountingDataHarvesterPlugin extends Plugin inputs) throws Exception { logger.debug("{} is starting", this.getClass().getSimpleName()); - + if(inputs == null || inputs.isEmpty()) { throw new IllegalArgumentException("The can only be launched providing valid input parameters"); } - + if(!inputs.containsKey(MEASURE_TYPE_INPUT_PARAMETER)) { throw new IllegalArgumentException("Please set required parameter '" + MEASURE_TYPE_INPUT_PARAMETER + "'"); } - + MeasureType measureType = MeasureType.valueOf((String) inputs.get(MEASURE_TYPE_INPUT_PARAMETER)); - + boolean reRun = true; if(inputs.containsKey(RERUN_INPUT_PARAMETER)) { try { reRun = (boolean) inputs.get(RERUN_INPUT_PARAMETER); - }catch (Exception e) { + } catch(Exception e) { throw new IllegalArgumentException("'" + RERUN_INPUT_PARAMETER + "' must be a boolean"); } } - + boolean getVREUsers = true; if(inputs.containsKey(GET_VRE_USERS_INPUT_PARAMETER)) { try { reRun = (boolean) inputs.get(GET_VRE_USERS_INPUT_PARAMETER); - }catch (Exception e) { + } catch(Exception e) { throw new IllegalArgumentException("'" + GET_VRE_USERS_INPUT_PARAMETER + "' must be a boolean"); } } - boolean dryRun = true; if(inputs.containsKey(DRY_RUN_INPUT_PARAMETER)) { try { dryRun = (boolean) inputs.get(DRY_RUN_INPUT_PARAMETER); - }catch (Exception e) { + } catch(Exception e) { throw new IllegalArgumentException("'" + DRY_RUN_INPUT_PARAMETER + "' must be a boolean"); } } - + if(inputs.containsKey(START_DATE_INPUT_PARAMETER)) { String startDateString = (String) inputs.get(START_DATE_INPUT_PARAMETER); start = DateUtils.UTC_DATE_FORMAT.parse(startDateString + " " + DateUtils.UTC); } else { start = DateUtils.getPreviousPeriod(measureType).getTime(); } - + end = DateUtils.getEndDateFromStartDate(measureType, start, 1); - - logger.debug("Harvesting from {} to {}", DateUtils.format(start), - DateUtils.format(end)); - + + logger.debug("Harvesting from {} to {}", DateUtils.format(start), DateUtils.format(end)); + Properties properties = getConfigParameters(); getProperties().set(properties); ContextAuthorization contextAuthorization = new ContextAuthorization(); - + DatabaseManager dbaseManager = new DatabaseManager(); - + SortedSet contexts = contextAuthorization.getContexts(); - + ArrayList data = new ArrayList(); - + String initialToken = SecurityTokenProvider.instance.get(); - + VREAccessesHarvester vreAccessesHarvester = null; for(String context : contexts) { @@ -165,7 +166,7 @@ public class AccountingDataHarvesterPlugin extends Plugin harvested = vreAccessesHarvester.getData(); @@ -197,7 +200,6 @@ public class AccountingDataHarvesterPlugin extends Plugin harvested = resourceCatalogueHarvester.getData(); data.addAll(harvested); } catch(Exception e) { logger.error("Error harvesting Resource Catalogue Information for {}", context, e); } - + try { // Collecting info on Data/Method download - DataMethodDownloadHarvester dataMethodDownloadHarvester = new DataMethodDownloadHarvester(start, end, contexts); + DataMethodDownloadHarvester dataMethodDownloadHarvester = new DataMethodDownloadHarvester(start, + end, contexts); List harvested = dataMethodDownloadHarvester.getData(); data.addAll(harvested); } catch(Exception e) { logger.error("Error harvesting Data Method Download for {}", context, e); } - + } - + if(context.startsWith(TAGME_CONTEXT)) { try { // Collecting info on method invocation - TagMeMethodInvocationHarvester tagMeMethodInvocationHarvester = new TagMeMethodInvocationHarvester(start, end); + TagMeMethodInvocationHarvester tagMeMethodInvocationHarvester = new TagMeMethodInvocationHarvester( + start, end); List harvested = tagMeMethodInvocationHarvester.getData(); data.addAll(harvested); } catch(Exception e) { logger.error("Error harvesting Method Invocations for {}", context, e); } - }else { + } else { try { // Collecting info on method invocation MethodInvocationHarvester methodInvocationHarvester = new MethodInvocationHarvester(start, end); @@ -268,18 +272,18 @@ public class AccountingDataHarvesterPlugin extends Plugin