11package org .linkeddatafragments .datasource ;
22
3- import org .linkeddatafragments .fragments .LinkedDataFragment ;
3+ import com .hp .hpl .jena .rdf .model .Model ;
4+
5+ import org .linkeddatafragments .fragments .ILinkedDataFragment ;
46import org .linkeddatafragments .fragments .LinkedDataFragmentRequest ;
5- import org .linkeddatafragments .fragments .tpf .TriplePatternFragment ;
7+ import org .linkeddatafragments .fragments .tpf .ITriplePatternElement ;
8+ import org .linkeddatafragments .fragments .tpf .ITriplePatternFragment ;
69import org .linkeddatafragments .fragments .tpf .TriplePatternFragmentImpl ;
7- import org .linkeddatafragments .fragments .tpf .TriplePatternFragmentRequest ;
8-
9- import com .hp .hpl .jena .rdf .model .Model ;
10+ import org .linkeddatafragments .fragments .tpf .ITriplePatternFragmentRequest ;
1011
1112/**
1213 * Base class for implementations of {@link IFragmentRequestProcessor} that
13- * process {@link TriplePatternFragmentRequest}s.
14+ * process {@link ITriplePatternFragmentRequest}s.
15+ *
16+ * @param <TermType> type for representing RDF terms in triple patterns
17+ * @param <VarType> type for representing specific variables in triple patterns
1418 *
1519 * @author <a href="http://olafhartig.de">Olaf Hartig</a>
1620 */
17- public abstract class AbstractRequestProcessorForTriplePatterns
18- extends AbstractRequestProcessor
21+ public abstract class
22+ AbstractRequestProcessorForTriplePatterns <TermType ,VarType >
23+ extends AbstractRequestProcessor
1924{
2025 @ Override
21- protected Worker getWorker ( final LinkedDataFragmentRequest request )
26+ protected final Worker <TermType ,VarType > getWorker (
27+ final LinkedDataFragmentRequest request )
2228 throws IllegalArgumentException
2329 {
24- if ( request instanceof TriplePatternFragmentRequest )
25- return getWorker ( (TriplePatternFragmentRequest ) request );
30+ if ( request instanceof ITriplePatternFragmentRequest <?,?> ) {
31+ @ SuppressWarnings ("unchecked" )
32+ final ITriplePatternFragmentRequest <TermType ,VarType > tpfRequest =
33+ (ITriplePatternFragmentRequest <TermType ,VarType >) request ;
34+ return getTPFSpecificWorker ( tpfRequest );
35+ }
2636 else
2737 throw new IllegalArgumentException ( request .getClass ().getName () );
2838 }
2939
30- abstract protected Worker getWorker (
31- final TriplePatternFragmentRequest request )
40+ abstract protected Worker < TermType , VarType > getTPFSpecificWorker (
41+ final ITriplePatternFragmentRequest < TermType , VarType > request )
3242 throws IllegalArgumentException ;
3343
3444
35- abstract static protected class Worker
45+ abstract static protected class Worker < TermType , VarType >
3646 extends AbstractRequestProcessor .Worker
3747 {
38- public Worker ( final TriplePatternFragmentRequest request )
48+ public Worker (
49+ final ITriplePatternFragmentRequest <TermType ,VarType > request )
3950 {
4051 super ( request );
4152 }
4253
4354 @ Override
44- public LinkedDataFragment createRequestedFragment ()
55+ public ILinkedDataFragment createRequestedFragment ()
4556 throws IllegalArgumentException
4657 {
4758 final long limit = LinkedDataFragmentRequest .TRIPLESPERPAGE ;
@@ -51,44 +62,40 @@ public LinkedDataFragment createRequestedFragment()
5162 else
5263 offset = 0L ;
5364
54- final TriplePatternFragmentRequest tpfRequest =
55- (TriplePatternFragmentRequest ) request ;
65+ @ SuppressWarnings ("unchecked" )
66+ final ITriplePatternFragmentRequest <TermType ,VarType > tpfRequest =
67+ (ITriplePatternFragmentRequest <TermType ,VarType >) request ;
5668
5769 return createFragment ( tpfRequest .getSubject (),
5870 tpfRequest .getPredicate (),
5971 tpfRequest .getObject (),
6072 offset , limit );
6173 }
6274
63- abstract protected LinkedDataFragment createFragment ( final String subj ,
64- final String pred ,
65- final String obj ,
66- final long offset ,
67- final long limit )
75+ abstract protected ILinkedDataFragment createFragment (
76+ final ITriplePatternElement <TermType ,VarType > subj ,
77+ final ITriplePatternElement <TermType ,VarType > pred ,
78+ final ITriplePatternElement <TermType ,VarType > obj ,
79+ final long offset ,
80+ final long limit )
6881 throws IllegalArgumentException ;
6982
70- protected TriplePatternFragment createEmptyTriplePatternFragment ()
83+ protected ITriplePatternFragment createEmptyTriplePatternFragment ()
7184 {
7285 return new TriplePatternFragmentImpl ( request .getFragmentURL (),
7386 request .getDatasetURL () );
7487 }
7588
76- protected TriplePatternFragment createTriplePatternFragment (
89+ protected ITriplePatternFragment createTriplePatternFragment (
7790 final Model triples ,
7891 final long totalSize ,
7992 final boolean isLastPage )
8093 {
81- final long pageNumber ;
82- if ( request .isPageRequest () )
83- pageNumber = request .getPageNumber ();
84- else
85- pageNumber = 1L ;
86-
8794 return new TriplePatternFragmentImpl ( triples ,
8895 totalSize ,
8996 request .getFragmentURL (),
9097 request .getDatasetURL (),
91- pageNumber ,
98+ request . getPageNumber () ,
9299 isLastPage );
93100 }
94101
0 commit comments