package eu.play_project.dcep.distribution.tests;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import org.etsi.uri.gcm.util.GCM;
import org.junit.Ignore;
import org.junit.Test;
import org.objectweb.fractal.adl.ADLException;
import org.objectweb.fractal.adl.Factory;
import org.objectweb.fractal.api.Component;
import org.objectweb.fractal.api.NoSuchInterfaceException;
import org.objectweb.fractal.api.control.IllegalLifeCycleException;
import org.objectweb.proactive.core.component.adl.FactoryFactory;
import org.objectweb.proactive.core.config.CentralPAPropertyRepository;
import org.slf4j.LoggerFactory;
import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.Syntax;
import eu.play_project.dcep.constants.DcepConstants;
import eu.play_project.dcep.distributedetalis.api.DistributedEtalisTestApi;
import eu.play_project.play_commons.constants.Namespace;
import eu.play_project.play_platformservices.api.QueryDispatchApi;
import eu.play_project.play_platformservices.api.QueryDispatchException;
import eu.play_project.play_platformservices_querydispatcher.api.EleGenerator;
import eu.play_project.play_platformservices_querydispatcher.bdpl.code_generator.realtime.EleGeneratorForConstructQuery;
public class RegisterQueriesTest {
public static QueryDispatchApi queryDispatchApi;
public static DistributedEtalisTestApi testApi;
boolean start = false;
static Component root;
public static boolean test;
private final org.slf4j.Logger logger = LoggerFactory.getLogger(RegisterQueriesTest.class);
/**
* Load pattern which are loaded at DCEP startup.
*/
@Ignore
@Test
public void registerCommonPatterns() throws IllegalLifeCycleException, NoSuchInterfaceException, ADLException{
InstantiatePlayPlatform();
for (String queryFileName : DcepConstants.getProperties().getProperty("dcep.startup.registerqueries").split(",")) {
queryFileName = queryFileName.trim();
String queryString = getSparqlQueries(queryFileName);
try {
queryDispatchApi.registerQuery("urn:bdpl:" + queryFileName, queryString);
} catch (QueryDispatchException e) {
System.out.println(("Error registering query " + queryFileName + " on startup: " + e.getMessage()));
}
}
}
@Ignore
@Test
public void parsSRBenchQueries(){
Query query = QueryFactory.create(getSparqlQueries("benchmarks/srbench/q2.eprq"), Syntax.syntaxBDPL);
EleGenerator visitor1 = new EleGeneratorForConstructQuery();
visitor1.setPatternId("'" + Namespace.PATTERN.getUri() + "123456'");
visitor1.generateQuery(query);
String etalisPattern = visitor1.getEle();
System.out.println(etalisPattern);
}
public static void InstantiatePlayPlatform()
throws IllegalLifeCycleException, NoSuchInterfaceException,
ADLException {
CentralPAPropertyRepository.JAVA_SECURITY_POLICY
.setValue("proactive.java.policy");
CentralPAPropertyRepository.GCM_PROVIDER
.setValue("org.objectweb.proactive.core.component.Fractive");
Factory factory = FactoryFactory.getFactory();
HashMap<String, Object> context = new HashMap<String, Object>();
root = (Component) factory.newComponent("DcepPsTest", context);
GCM.getGCMLifeCycleController(root).startFc();
queryDispatchApi = ((eu.play_project.play_platformservices.api.QueryDispatchApi) root.getFcInterface(QueryDispatchApi.class.getSimpleName()));
testApi = (DistributedEtalisTestApi) root.getFcInterface(DistributedEtalisTestApi.class.getSimpleName());
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private String getSparqlQueries(String queryFile){
try {
InputStream is = this.getClass().getClassLoader().getResourceAsStream(queryFile);
BufferedReader br =new BufferedReader(new InputStreamReader(is));
StringBuffer sb = new StringBuffer();
String line;
while (null != (line = br.readLine())) {
sb.append(line);
sb.append("\n");
}
//System.out.println(sb.toString());
br.close();
is.close();
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private void delay(){
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}