import com.lambdaworks.redis.RedisURI;
import com.lambdaworks.redis.cluster.ClusterClientOptions;
import com.lambdaworks.redis.cluster.RedisAdvancedClusterConnection;
import com.lambdaworks.redis.cluster.RedisClusterClient;
import eu.dnetlib.data.mapreduce.hbase.lodExport.utils.LodConfiguration;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.omg.CORBA.PUBLIC_MEMBER;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Test {


    @org.junit.Test
    public void testJson() throws IOException, ParseException {
        InputStream in = new FileInputStream("C:\\Users\\eri_k\\workspace\\lodinterlinking\\trunk\\src\\main\\resources\\eu\\dnetlib\\data\\mapreduce\\hbase\\lodExport\\mappings.properties");

        Properties properties = new Properties();
        properties.load(in);
        in.close();

        JSONParser parser = new JSONParser();
        JSONObject object = (JSONObject) parser.parse(properties.getProperty("lod_sourceMappings"));
        System.out.println(object.get("result"));

        if (((JSONArray) object.get("result")).toString().contains("http://dbpedia.org/ontology/type"))
            System.out.println("lal");


    }


    @org.junit.Test
    public void testSplit() throws Exception {
        String line = "<http://lod.openaire.eu/data/person/doajarticles::dc4862cbad761cd43925c558f89e7d17>	<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>	<http://xmlns.com/foaf/0.1/Person>";
        InputStream in = new FileInputStream("C:\\Users\\eri_k\\workspace\\lodinterlinking\\trunk\\src\\main\\resources\\eu\\dnetlib\\data\\mapreduce\\hbase\\lodExport\\mappings.properties");

        Properties properties = new Properties();
        properties.load(in);
        in.close();

        line = line.replace("<", "").replace(">", "");

        LodConfiguration lodConfiguration = new LodConfiguration();
        lodConfiguration.load(properties.getProperty("lod_sourceMappings"));

        String[] Fields = line.toString().split("\t");


        int i = 1;

        String[] tmp = Fields[0].split("/");
        String entity = tmp[4];
        String id = Fields[0];

        System.out.println(entity);
        System.out.println(id);


        StringBuilder value = new StringBuilder();

        if (lodConfiguration.entityExists(entity)) {
            System.out.println("yeaah");
            System.out.println("field is " + Fields[i].replace("/", "\\/"));
            System.out.println((((org.json.simple.JSONArray) lodConfiguration.getConfig().get(entity))));
            System.out.println((((org.json.simple.JSONArray) lodConfiguration.getConfig().get(entity)).toString().contains(Fields[i].replace("/", "\\/"))));


            while (i < Fields.length - 1) {
                if (lodConfiguration.isValidField(entity, Fields[i].replace("/", "\\/"))) {
                    //  value.append(Fields[i] + "\t" + Fields[i+1]);
                    value.append(Fields[i] + "\t" + Fields[i + 1]);
                }
                i += 2;
            }
        }
        System.out.println("value is " + value);
    }


    @org.junit.Test
    public void testrecods() {
        String recordId = " id\thttp://lod.openaire.eu/data/result/doajarticles::1ba2cc76a1da1b039aeafb6da70543b9 http://lod.openaire.eu/vocab/resultSubject \"Social Sciences\" .,";

        recordId = "<http://lod.openaire.eu/data/result/od_______162::3147f9e84fde4d4599a45b10e6b7dffb> <http://purl.org/dc/terms/publisher> \"EDP Sciences\" ";


        String regex = "\\s+(?=((\\\\[\\\\\"]|[^\\\\\"])*\"(\\\\[\\\\\"]|[^\\\\\"])*\")*(\\\\[\\\\\"]|[^\\\\\"])*$)";
        //System.out.println(recordId.replaceAll(regex, "\t"));


        //recordId=recordId.replaceAll(regex, "\t");
        recordId = recordId.replaceAll(" +([?:]) +", "\t");
        // System.out.println(recordId);


        String[] split = recordId.split("\t");
        for (String s : split) {

            System.out.println("each");
            System.out.println(s);
        }
    }

    @org.junit.Test
    public void testType()

    {
        String id = "<http://dblp.l3s.de/d2r/resource/publications/journals/ijdsn/DanZYY13>";

        String s = id.substring(0, id.indexOf('D'));

        System.out.println(s);
    }


    @org.junit.Test
    public void writeToRedis() throws Exception {

        RedisURI redisUri = RedisURI.Builder.redis("83.212.110.197").withPort(6379).build();
        RedisClusterClient clusterClient = RedisClusterClient.create(redisUri);
        RedisAdvancedClusterConnection<String, String> connection = clusterClient.connectCluster();

        connection.set("a", "b");
    }

    @org.junit.Test
    public void split() {
        String record = "id\t<http://dblp.l3s.de/d2r/resource/publications/journals/automatica/Daniel-BerheU98>,<http://www.w3.org/2000/01/rdf-schema#label>\t\"Bilinear Continuous-Time Systems Identification via Hartley-Based Modulating Functions.\",<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>\t<http://xmlns.com/foaf/0.1/Document>,<http://purl.org/dc/terms/identifier>\t\"DOI 10.1016%2FS0005-1098%2897%2900216-1\",<http://purl.org/dc/terms/issued>\t\"1998\",";
        String[] Fields = record.split(",");
        System.out.println("fields are " + Fields);
        System.out.println("index is " + Fields[0].indexOf("\t"));
        String recordId = Fields[0].substring(Fields[0].indexOf("\t"));
        String subject = recordId.substring(record.indexOf("_") + 1);
        System.out.println(recordId);
        System.out.println(subject);

    }

}
