]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - BasicSearch.java
8028f5d2033e8d5138bf23aaca90a029b2e2f4ce
1 package org
.argeo
.api
.acr
.search
;
4 import java
.util
.ArrayList
;
5 import java
.util
.Arrays
;
7 import java
.util
.Objects
;
8 import java
.util
.function
.Consumer
;
10 import javax
.xml
.namespace
.QName
;
12 import org
.argeo
.api
.acr
.DName
;
13 import org
.argeo
.api
.acr
.QNamed
;
15 public class BasicSearch
{
17 private List
<QName
> select
= new ArrayList
<>();
18 private List
<Scope
> from
= new ArrayList
<>();
20 private ContentFilter
<?
extends Composition
> where
;
22 public BasicSearch
select(QNamed
... attr
) {
24 select
.add(q
.qName());
28 public BasicSearch
select(QName
... attr
) {
29 select
.addAll(Arrays
.asList(attr
));
33 public BasicSearch
from(URI uri
) {
34 return from(uri
, Depth
.INFINITTY
);
37 public BasicSearch
from(URI uri
, Depth depth
) {
38 Objects
.requireNonNull(uri
);
39 Objects
.requireNonNull(depth
);
40 Scope scope
= new Scope(uri
, depth
);
45 public BasicSearch
where(Consumer
<AndFilter
> and
) {
47 throw new IllegalStateException("A where clause is already set");
48 AndFilter subFilter
= new AndFilter();
49 and
.accept(subFilter
);
54 public List
<QName
> getSelect() {
58 public List
<Scope
> getFrom() {
62 public ContentFilter
<?
extends Composition
> getWhere() {
66 public static enum Depth
{
70 public static class Scope
{
75 public Scope(URI uri
, Depth depth
) {
84 public Depth
getDepth() {
90 static void main(String
[] args
) {
91 BasicSearch search
= new BasicSearch();
92 search
.select(DName
.creationdate
.qName()) //
93 .from(URI
.create("/test")) //
94 .where((f
) -> f
.eq(DName
.creationdate
.qName(), ""));