You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
grsf-publisher-ws/src/test/java/org/gcube/data_catalogue/grsf_publish_ws/JTests.java

295 lines
14 KiB
Java

package org.gcube.data_catalogue.grsf_publish_ws;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.CustomField;
import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Group;
import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Tag;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.others.Resource;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.others.TimeSeriesBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.record.FisheryRecord;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.record.StockRecord;
import org.gcube.data_catalogue.grsf_publish_ws.utils.HelperMethods;
import org.gcube.data_catalogue.grsf_publish_ws.utils.csv.CSVUtils;
import org.gcube.data_catalogue.grsf_publish_ws.utils.threads.AssociationToGroupThread;
import org.gcube.datacatalogue.ckanutillibrary.server.DataCatalogue;
import org.gcube.datacatalogue.ckanutillibrary.server.DataCatalogueFactory;
import org.gcube.datacatalogue.common.enums.Abundance_Level;
import org.gcube.datacatalogue.common.enums.Fishery_Type;
import org.gcube.datacatalogue.common.enums.Sources;
import org.gcube.datacatalogue.common.enums.Status;
import org.slf4j.LoggerFactory;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JTests {
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(JTests.class);
//@Test
public void test() throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, IntrospectionException {
FisheryRecord recordFishery = new FisheryRecord();
recordFishery.setType(Fishery_Type.Other_Fishery);
recordFishery.setDatabaseSources(new ArrayList<Resource<Sources>>());
recordFishery.setStatus(Status.Pending);
List<String> tags = new ArrayList<String>();
List<String> groupsTitles = new ArrayList<String>();
Map<String, Object> extras = new HashMap<String, Object>();
// bottom up, looks up for Tag/Group fields
Class<?> current = recordFishery.getClass();
do{
System.out.println("Class is " + current.getCanonicalName());
Field[] fields = current.getDeclaredFields();
for (Field field : fields) {
if(field.isAnnotationPresent(Tag.class)){
Object f = new PropertyDescriptor(field.getName(), current).getReadMethod().invoke(recordFishery);
if(f != null){
tags.add(f.toString());
}
}
if(field.isAnnotationPresent(Group.class)){
Object f = new PropertyDescriptor(field.getName(), current).getReadMethod().invoke(recordFishery);
if(f != null){
groupsTitles.add(f.toString());
}
}
if(field.isAnnotationPresent(CustomField.class)){
Object f = new PropertyDescriptor(field.getName(), current).getReadMethod().invoke(recordFishery);
if(f != null){
// get the key to put into the map first
extras.put(field.getAnnotation(CustomField.class).key(), f);
}
}
}
}
while((current = current.getSuperclass())!=null);
// print
System.out.println("TAGS " + tags);
System.out.println("GROUPS " + groupsTitles);
System.out.println("EXTRAS " + extras);
}
//@Test
public void testJsonSerializer(){
//
// String pendingAsString = "pending";
// Status resSatus = Status.onDeserialize(pendingAsString);
// System.out.println("Res is " + resSatus);
//
// System.out.println("To string is " + resSatus.onSerialize());
Abundance_Level type = Abundance_Level.onDeserialize("Uncertain Not assessed");
System.out.println("Res is " + type.onSerialize());
}
//@Test
public void testNameToStringEnum(){
Abundance_Level elem = Abundance_Level.Uncertain_Not_Assessed;
System.out.println("Enum name is = " + elem.name() + ", enum to string is = " + elem.toString() + ", enum on serialize = " + elem.onSerialize());
// try deserializer
String deserialize = "uncertain not assessed";
Abundance_Level res = Abundance_Level.onDeserialize(deserialize);
System.out.println(res.name());
}
// @Test
public void testJSONMapping() throws IOException{
// FisheryRecord record = new FisheryRecord();
// record.setType(Type.Assessment_Unit);
// record.setFisheryId("sajhdskajda");
// record.setScientificName("assadsadada");
// // record.setExploitationRate(Exploitation_Rate.High_Fishing_Mortality);
// // record.setAbundanceLevel(Abundance_Level.Uncertain_Not_Assessed);
// ArrayList<DatabaseSource> list = new ArrayList<DatabaseSource>();
// list.add(new DatabaseSource("http", null, Source.FIRMS));
// list.add(new DatabaseSource("http", null, Source.FIRMS));
// list.add(new DatabaseSource("http", null, Source.FIRMS));
// list.add(new DatabaseSource("http", null, Source.FIRMS));
// list.add(new DatabaseSource("http", null, Source.FISHSOURCE));
// list.add(new DatabaseSource("http", null, Source.RAM));
// record.setManagementEntity("management ashdskad");
// record.setProductionSystemType(Production_System_Type.Artisanal);
// record.setDatabaseSources(list);
// record.setAuthor("Costantino Perciante");
// record.setMaintainer("Costantino Perciante");
// record.setAuthorContact("costantino.perciante@isti.cnr.it");
// record.setStatus(Status.Pending);
// record.setVersion(new Long(1));
// // record.setSpeciesScientificName("Katsuwonus pelamis (or SKJ)");
// record.setCatchesOrLandings("Catch - 18962 - ton - 2014");
// record.setDataOwner("Giancarlo Panichi");
//
// List<String> groups = new ArrayList<String>();
//
// // check group generation
// HelperMethods.getGroups(groups, record);
//
// for (String group : groups) {
// System.out.println("Group is " + group);
// }
//
// List<String> tags = new ArrayList<String>();
//
// // check group generation
// HelperMethods.getTags(tags, record);
//
// for (String tag : tags) {
// System.out.println("Tag is " + tag);
// }
//
// Map<String, String> extras = new HashMap<String, String>();
// HelperMethods.getExtras(extras, record);
//
// Iterator<Entry<String, String>> it = extras.entrySet().iterator();
//
// while (it.hasNext()) {
// Map.Entry<java.lang.String, java.lang.String> entry = (Map.Entry<java.lang.String, java.lang.String>) it
// .next();
// System.out.println("Extra is " + entry);
// }
// List<Resource> sourcesOfInformation = recordStock.getSourceOfInformation();
// for (Resource sourceOfinformation : sourcesOfInformation) {
// Set<ConstraintViolation<Resource>> violationsSourceOfinformationsBean = validator.validate(sourceOfinformation);
// for (ConstraintViolation<Resource> constraintViolation : violationsSourceOfinformationsBean) {
// System.out.println("Violation is about " + constraintViolation.getPropertyPath() + ", message error is " + constraintViolation.getMessage());
// }
// }
//
//
ObjectMapper mapper = new ObjectMapper();
//Object to JSON in String
StockRecord jsonInString = mapper.readValue("{\n \"short_title\":\"Thunnus maccoyii SEAFO division D.1\",\n \"data_owner\":\"CCSBT\",\n \"narrative_state_and_trend\":\"<p>The 2014 assessment suggested that the SBT spawning biomass is at a very low fraction (9%) of its original biomass as well as below the level that could produce maximum sustainable yield. However, there has been some improvement since the 2011 stock assessment and the fishing mortality rate is below the level associated with MSY. &nbsp;The current TAC has been set using the management procedure adopted in 2011, which has a 70% probability of rebuilding to the interim target biomass level by 2035.<\\/p>\",\n \"database_sources\":[\n {\n \"name\":\"firms\",\n \"description\":\"unknown\",\n \"url\":\"unkown\"\n },\n {\n \"name\":\"fishsource\",\n \"description\":\"unknown\",\n \"url\":\"unkown\"\n }\n ],\n \"reporting_year\":2015,\n \"stock_name\":\"Southern Bluefin tuna - Global Name\",\n \"assessment_methods\":\"Survey index\",\n \"abundance_level\":[\n {\n \"year\":2014,\n \"value\":\"low abundance\"\n },\n {\n \"year\":2015,\n \"value\":\"intermediate abundance\"\n }\n ],\n \"abundance_level_for_grouping\":\"low abundance\",\n \"scientific_advice\":\"<p>Based on the results of the MP operation for 2015&ndash;17 in its 2013 meeting and the outcome of the review of exceptional circumstances in its 2015 meeting, the ESC recommended that there is no need to revise the Extended Commission&rsquo;s 2013 TAC decision regarding the TAC for 2016&ndash;17. The recommended annual TAC for the years 2016-2017 is 14,647.4t.<\\/p>\",\n \"type\":\"assessment unit\",\n \"stock_id\":\"Southern Bluefin tuna - Global Title\",\n \"uuid_knowledge_base\":\"c898163b-1dbe-4b97-ba4a-5a73e8b81db9\",\n \"traceability_flag\":true,\n \"water_area\":[\n \"SEAFO division B.1\",\n \"SEAFO division D.0\",\n \"Indian Ocean, East \\/ 57.6\",\n \"SEAFO division D.1\",\n \"Cape of Good Hope\",\n \"Indian Ocean, West \\/ 51.6\",\n \"Indian Ocean, West \\/ 51.7\"\n ],\n \"assessment_distribution_area\":\"an area\",\n \"stock_uri\":\"http:\\/\\/www.bluebridge.com\\/grsf\\/stock\\/c898163b-1dbe-4b97-ba4a-5a73e8b81db9\",\n \"exploiting_fishery\":\"Tunas and billfishes fishery\",\n \"exploitation_rate\":[\n {\n \"year\":2014,\n \"value\":\"moderate fishing mortality\"\n },\n {\n \"year\":2015,\n \"value\":\"high fishing mortality\"\n }\n ],\n \"exploitation_rate_for_grouping\":\"No or low fishing mortality\",\n \"state_of_marine_resource\":\"Overexploited\",\n \"species_scientific_name\":\"Thunnus maccoyii\",\n \"source_of_information\":[\n {\n \"name\":\"sourcename\",\n \"description\":\"unknown\",\n \"url\":\"https:\\/\\/www.ccsbt.org\\/userfiles\\/file\\/docs_english\\/meetings\\/meeting_reports\\/ccsbt_22\\/report_of_SC20.pdf\"\n },\n {\n \"name\":\"sourcename\",\n \"description\":\"unknown\",\n \"url\":\"https:\\/\\/www.ccsbt.org\\/userfiles\\/file\\/docs_english\\/meetings\\/meeting_reports\\/ccsbt_22\\/report_of_SC20-2.pdf\"\n }\n ],\n \"status\":\"pending\",\n \"catches_or_landings\":{\n \"name\":\"catches_or_landings_example\",\n \"description\":\"unknown\",\n \"url\":\"a url\"\n }\n}", StockRecord.class);
System.out.println(jsonInString);
//
// // JSON back to object
// StockRecord converted = mapper.readValue(jsonInString, recordStock.getClass());
// System.out.println(converted);
}
//@Test
public void testFromScopeToOrgName(){
System.out.println("Valid ? " + HelperMethods.isNameValid("this is not valid"));
// System.out.println(HelperMethods.retrieveOrgNameFromScope("/gcube/devNext/NextNext"));
}
//@Test
public void testJSONResource() throws Exception{
DataCatalogueFactory factory = DataCatalogueFactory.getFactory();
DataCatalogue instance = factory.getUtilsPerScope("/gcube/devNext/NextNext");
String datasetName = "test-after-time-series-bean-5";
// time series
List<TimeSeriesBean<String, Void>> timeSeries = new ArrayList<TimeSeriesBean<String,Void>>();
timeSeries.add(new TimeSeriesBean<String, Void>(2001L, "Value A", null, null, null, null));
timeSeries.add(new TimeSeriesBean<String, Void>(2231L, "Value B", null, null, null, null));
timeSeries.add(new TimeSeriesBean<String, Void>(1943L, "Value C", null, null, null, null));
timeSeries.add(new TimeSeriesBean<String, Void>(1054L, "Value D", null, null, null, null));
timeSeries.add(new TimeSeriesBean<String, Void>(3422L, "Value E", null, null, null, null));
Collections.sort(timeSeries);
File csvFile = CSVUtils.listToCSV(timeSeries, null);
// send file
instance.uploadResourceFile(csvFile, datasetName, instance.getApiKeyFromUsername("costantino.perciante"), "random_name.csv", null, null, null);
}
//@Test
public void GRSFServiceUrl() throws Exception{
String context = "/gcube/devNext/NextNext";
String url = GcoreEndpointGRSFService.getServiceUrl(context);
logger.debug("Url is " + url);
}
//@Test
public void removeHTML() throws Exception{
String toTest = "<p>Based on the results of the MP operation[] asdkljlasdklsa . - * ; for 2015&ndash;17 in its 2013 meeting and the outcome of the review of exceptional circumstances in its 2015 meeting, the ESC recommended that there is no need to revise the Extended Commission&rsquo;s 2013 TAC decision regarding the TAC for 2016&ndash;17. The recommended annual TAC for the years 2016-2017 is 14,647.4t.</p>";
HelperMethods.removeHTML(toTest, false);
}
//@Test
public void testHierarchy() throws Exception{
String name = "low-abundance";
DataCatalogue catalogue = HelperMethods.getDataCatalogueRunningInstance("/gcube/devNext/NextNext");
List<String> uniqueGroups = new ArrayList<String>();
uniqueGroups.add(name);
uniqueGroups.add(name);
AssociationToGroupThread.findHierarchy(uniqueGroups, catalogue, catalogue.getApiKeyFromUsername("costantino_perciante"));
logger.debug("Hierarchy is " + uniqueGroups);
}
//@Test
public void testAssociationThread() throws Exception{
String name = "low-abundance";
DataCatalogue catalogue = HelperMethods.getDataCatalogueRunningInstance("/gcube/devNext/NextNext");
AssociationToGroupThread threadGroups = new AssociationToGroupThread(Arrays.asList(name), "another-test-test-please-ignore", "grsf", "costantino_perciante", catalogue, "apiKey");
threadGroups.start();
threadGroups.join();
logger.info("Thread stopped!");
}
//@Test
public void testCaches(){
String context = "/gcube/devNext/NextNext";
String token = "";
for (int i = 0; i < 1000; i++) {
logger.debug(HelperMethods.getUserEmail(context, token));
}
}
//@Test
public void testMatch(){
Boolean value = Boolean.TRUE;
String expr = "false";
System.out.println("Check " + value.toString().matches(expr));
}
}