package eu.dnetlib.data.claims.utils;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import eu.dnetlib.data.claims.entity.Claim;

import java.util.List;

public class JsonldBuilder {
	
//	public static String toJsonld(ClaimGenerics<Object, Result> claim) {
//		Gson gson = new GsonBuilder().setPrettyPrinting().create();
//
//		String retString = gson.toJson(claim);
//
//	/*	final String uri = "http://localhost:9090/oa/buildAndInsertClaim";
//
//
//	    RestTemplate restTemplate = new RestTemplate();
//	    String result = restTemplate.postForObject( uri, retString, String.class);
//
//	    System.out.println(result);
//	*/
//		return retString;
////		JsonParser parser = new JsonParser();
////		JsonObject obj = parser.parse(retString).getAsJsonObject();
////		obj.addProperty("@context", "https://dl.dropboxusercontent.com/u/19168406/oa-openaire.jsonld");
////		obj.addProperty("@type", "oa:Annotation");
////		return  gson.toJson(obj).toString();
//	}
    public static String toJsonld(Claim claim) {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        String retString = gson.toJson(claim);
        return retString;
    }
    public static String toJsonld(List<Claim> claims) {

        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.setPrettyPrinting();
        gsonBuilder.setDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        Gson gson =gsonBuilder.create();

         String retString = gson.toJson(claims);
        return retString;
    }

//	public static void bulkLoad(List<String> claims) {
//
//		final String uri = "http://localhost:9090/oa/insertClaim";
//		RestTemplate restTemplate = new RestTemplate();
//
//		int counter = 0;
//
//		List<String> claimsBatch = new ArrayList<String>();
//		for (String claim : claims) {
//			counter ++;
//			claimsBatch.add(claim);
//			if (counter % 50 == 0) {
//				String result = restTemplate.postForObject( uri, "{\"@graph\" : "+claimsBatch.toString()+"}", String.class);
//				claimsBatch.clear();
//				System.out.println(result);
//			}
//		}
//
//		if (!claimsBatch.isEmpty()) {
//			String result = restTemplate.postForObject( uri, "{\"@graph\" : "+claimsBatch.toString()+"}", String.class);
//			claimsBatch.clear();
//			System.out.println(result);
//		}
//
//
////		JsonParser parser = new JsonParser();
////		JsonObject obj = parser.parse(retString).getAsJsonObject();
////		obj.addProperty("@context", "https://dl.dropboxusercontent.com/u/19168406/oa-openaire.jsonld");
////		obj.addProperty("@type", "oa:Annotation");
////		return  gson.toJson(obj).toString();
//	}

}
