ListOfMapsQueryAdapter.java
/*
* 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 com.ostrichemulators.semtool.rdf.query.util.impl;
import java.util.HashMap;
import java.util.Map;
import org.openrdf.model.Value;
import org.openrdf.model.ValueFactory;
import org.openrdf.query.BindingSet;
/**
*
* @author John Marquiss
* @param <T>
*/
public abstract class ListOfMapsQueryAdapter<T> extends ListQueryAdapter<Map<String, T>> {
public ListOfMapsQueryAdapter() {
}
public ListOfMapsQueryAdapter( String sparq ) {
super( sparq );
}
@Override
public void handleTuple( BindingSet set, ValueFactory fac ) {
Map<String, T> map = new HashMap<>();
for ( String variable : set.getBindingNames() ) {
map.put( variable, convertValue( variable, set.getValue( variable ), fac ) );
}
add( map );
}
protected abstract T convertValue( String variable, Value v, ValueFactory fac );
public static ListOfMapsQueryAdapter<String> forStrings( String sparql ) {
ListOfMapsQueryAdapter<String> q = new ListOfMapsQueryAdapter<String>( sparql ) {
@Override
protected String convertValue( String variable, Value v, ValueFactory fac ) {
return v.stringValue();
}
};
return q;
}
}