/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package eu.espas.cql;

import java.io.StringReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Collection;
import java.util.LinkedList;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.z3950.zing.cql.CQLNode;
import org.z3950.zing.cql.CQLParser;

/**
 * Testing expressions specified in the espas db observationcollection table
 * 
 * @author gathanas
 */

public class CQLParserTest {

    private String obscollectionQuery = "select query from observationcollection";
    private Collection<String> cqlExpressions = new LinkedList<String>();
    
    public CQLParserTest() {
        try {
            Class.forName("org.postgresql.Driver");
            Connection dbConnection = DriverManager.getConnection("jdbc:postgresql://dl121.madgik.di.uoa.gr/dnet_espas_v2", "dnet", "dnetPwd");
            Statement query  = dbConnection.createStatement();
            ResultSet queryResults = query.executeQuery(obscollectionQuery);
            while (queryResults.next()){
                cqlExpressions.add(queryResults.getString("query"));
            }
            queryResults.close();
            dbConnection.close();
            
        } catch (Exception ex) {
            Logger.getLogger(CQLParserTest.class).error("", ex);
        } 
    }


    @Test
    public void testParse_String() throws Exception {
        System.out.println("testing parse string operation");
        CQLParser instance = new CQLParser();
        for(String cql : this.cqlExpressions){
            CQLNode result = instance.parse(cql);
            Logger.getLogger(CQLParserTest.class.getName()).info( result.toCQL());
        }
        assert true;
    }

    @Test
    public void testParse_Reader() throws Exception {
        System.out.println("testing parse reader  operation");
        CQLParser instance = new CQLParser();
        for(String cql : this.cqlExpressions){
            CQLNode result = instance.parse(new StringReader(cql));
            Logger.getLogger(CQLParserTest.class.getName()).info(result.toCQL());
        }
        assert true;
    }
   
}
