package org.aksw.jena_sparql_api.mapper.test;
import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import org.aksw.jena_sparql_api.beans.model.EntityOps;
import org.aksw.jena_sparql_api.mapper.impl.type.RdfTypeFactoryImpl;
import org.aksw.jena_sparql_api.mapper.jpa.metamodel.MetamodelGenerator;
import org.aksw.jena_sparql_api.mapper.model.RdfType;
import org.aksw.jena_sparql_api.mapper.model.TypeDecider;
import org.aksw.jena_sparql_api.mapper.model.TypeDeciderImpl;
import org.apache.jena.graph.Node;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.riot.RDFDataMgr;
import org.apache.jena.riot.RDFFormat;
import org.junit.Assert;
import org.junit.Test;
class JobExecution {
}
public class TestTypeDecider extends TestMapperBase {
@Test
public void test() {
Map<Class<?>, Node> map = TypeDeciderImpl.scan("org.aksw.jena_sparql_api.mapper.test");
Assert.assertNotEquals(0, map.size());
TypeDecider typeDecider = new TypeDeciderImpl();
Person anne = new Person();
anne.setFirstName("Anne");
anne.setLastName("Anderson");
anne.setBirthPlace("Arizona");
// anne.setBirthDate(new GregorianCalendar(2000, 0, 0));
Person bob = new Person();
bob.setFirstName("Bob");
bob.setLastName("Bowlin");
bob.setBirthPlace("Brooklyn");
// DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
bob.setBirthDate(new GregorianCalendar(2000, 0, 0));
bob.getTags().put("knows", anne);
// bob.getTags().put("c", "d");
entityManager.persist(bob);
// Relation relation =
// pathResolver.resolve("tags").resolve("key").getOverallRelation();
Function<Class<?>, EntityOps> entityOpsFactory = ((RdfTypeFactoryImpl) mapperEngine.getRdfTypeFactory())
.getEntityOpsFactory();
MetamodelGenerator mmg = new MetamodelGenerator(entityOpsFactory);
mmg.apply(Person.class);
// System.out.println("Relation: " + relation);
// bob.getTags().clear();
// bob.getTags().put("x", "y");
// entityManager.remove(bob);
// entityManager.persist(bob);
// mapperEngine.getPersistenceContext().clear()
// TODO: The find method yet needs to expand the prefix
bob = entityManager.find(Person.class, "o:John-Doe-Dover");
System.out.println("Direct entity: " + bob);
// mapperEngine.merge();
RdfType rdfType = mapperEngine.getTypeFactory().forJavaType(Person.class);
Node id = rdfType.getRootNode(bob);
System.out.println("Allocated ID: " + id);
Model rdf = sparqlService.getQueryExecutionFactory().createQueryExecution("CONSTRUCT WHERE { ?s ?p ?o }")
.execConstruct();
rdf.setNsPrefixes(prologue.getPrefixMapping());
System.out.println("TRIPLES:");
RDFDataMgr.write(System.out, rdf, RDFFormat.TURTLE);
mapperEngine.fetch(typeDecider, Collections.singleton(id)).get(id);
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Person> cq = cb.createQuery(Person.class);
// ParameterExpression<Long> p = cb.parameter(Long.class);
Root<Person> r = cq.from(Person.class);
CriteriaQuery<Person> x = cq.select(r);
// .where(cb.equal(c.get("firstName"), "Anne"))
// .where(cb.equal(c.get("lastName"), "Anderson"));
cq.orderBy(cb.desc(r.get("firstName")));
TypedQuery<Person> query = entityManager.createQuery(x);
// query.setFirstResult(2);
// query.setMaxResults(2);
List<Person> matches = query.getResultList();
// Person match = query.getSingleResult();
System.out.println("Result: " + matches);
// typeDecider.getApplicableTypes(subject);
}
public void tmp() {
Long jobInstanceId = 1l;
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<JobExecution> cq = cb.createQuery(JobExecution.class);
Root<JobExecution> r = cq.from(JobExecution.class);
cq.select(r).where(cb.equal(r.get("jobInstanceId"), jobInstanceId)).orderBy(cb.desc(r.get("executionId")));
TypedQuery<JobExecution> query = entityManager.createQuery(cq);
List<JobExecution> tq = query.getResultList();
}
}