grsf-publisher-ws/src/test/java/org/gcube/data_catalogue/grsf_publish_ws/JTests.java

181 lines
6.2 KiB
Java

package org.gcube.data_catalogue.grsf_publish_ws;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
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.FisheryRecord;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.StockRecord;
import org.gcube.data_catalogue.grsf_publish_ws.utils.HelperMethods;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Abundance_Level;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Source;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Status;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Type;
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.trentorise.opendata.jackan.internal.org.apache.http.HttpResponse;
import eu.trentorise.opendata.jackan.internal.org.apache.http.client.methods.HttpGet;
import eu.trentorise.opendata.jackan.internal.org.apache.http.impl.client.CloseableHttpClient;
import eu.trentorise.opendata.jackan.internal.org.apache.http.impl.client.HttpClientBuilder;
public class JTests {
private static final String TEST_TOKEN = "d423aed7-e9e2-424a-b9e7-2bbbd151d9c4-98187548";
//@Test
public void test() throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, IntrospectionException {
FisheryRecord recordFishery = new FisheryRecord();
recordFishery.setType(Type.Fishing_Description);
recordFishery.setDatabaseSources(Source.FIRMS);
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{
StockRecord recordFishery = new StockRecord();
recordFishery.setType(Type.Fishing_Description);
recordFishery.setDatabaseSources(Source.FIRMS);
recordFishery.setAuthor("Costantino Perciante");
recordFishery.setMaintainer("Costantino Perciante");
recordFishery.setAuthorContact("costantino.perciante@isti.cnr.it");
recordFishery.setStatus(Status.Pending);
recordFishery.setVersion(new Long(1));
ObjectMapper mapper = new ObjectMapper();
//Object to JSON in String
String jsonInString = mapper.writeValueAsString(recordFishery);
System.out.println(jsonInString);
// JSON back to object
StockRecord converted = mapper.readValue(jsonInString, recordFishery.getClass());
System.out.println(converted);
}
//@Test
public void instanciateGCoreReader() throws Exception{
String baseUrl = org.gcube.data_catalogue.grsf_publish_ws.utils.GcoreEndpointReaderSocialWS.getUrlSocialWS("/gcube/devNext/NextNext");
System.out.println("Base url is " + baseUrl);
try(CloseableHttpClient client = HttpClientBuilder.create().build();){
String url = baseUrl.replace("80", "") + "/users/getUserEmail?gcube-token=" + TEST_TOKEN;
System.out.println("Request url is " + url);
HttpGet getRequest = new HttpGet(url);
HttpResponse response = client.execute(getRequest);
if (response.getStatusLine().getStatusCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatusLine().getStatusCode());
}
BufferedReader br = new BufferedReader(
new InputStreamReader((response.getEntity().getContent())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
System.out.println(response.toString());
}catch(Exception e){
System.err.println("error while performing post method " + e.toString());
}
}
//@Test
public void testFromScopeToOrgName(){
System.out.println("Valid ? " + HelperMethods.isValid("this is not valid"));
// System.out.println(HelperMethods.retrieveOrgNameFromScope("/gcube/devNext/NextNext"));
}
}