This commit is contained in:
Lucio Lelii 2018-04-18 16:28:05 +00:00
parent e58ef0f251
commit fdbc419887
9 changed files with 200 additions and 0 deletions

View File

@ -0,0 +1,5 @@
package org.gcube.common.storagehub.model.expressions;
public interface Expression<T> {
}

View File

@ -0,0 +1,25 @@
package org.gcube.common.storagehub.model.expressions;
import java.util.Calendar;
import org.gcube.common.storagehub.model.items.Item;
public class GenericSearchableItem extends SearchableItem<Item>{
private static GenericSearchableItem item = new GenericSearchableItem();
public static GenericSearchableItem get() {
return item;
}
protected GenericSearchableItem() {
super(Item.class);
}
public final SearchableField<String> title = new SearchableField<String>(String.class, "jcr:title");
public final SearchableField<Calendar> lastModification = new SearchableField<Calendar>(Calendar.class, "jcr:lastModified");
public final SearchableField<Calendar> creationTime = new SearchableField<Calendar>(Calendar.class, "jcr:created");
}

View File

@ -0,0 +1,21 @@
package org.gcube.common.storagehub.model.expressions;
public final class SearchableField<T> {
private Class<T> type;
private String name;
protected SearchableField(Class<T> _class, String name) {
this.type = _class;
this.name = name;
}
@Override
public String toString() {
return "[" + name +"]";
}
}

View File

@ -0,0 +1,13 @@
package org.gcube.common.storagehub.model.expressions;
import org.gcube.common.storagehub.model.items.Item;
public class SearchableItem<T extends Item> {
Class<T> type;
protected SearchableItem(Class<T> _class){
this.type = _class;
}
}

View File

@ -0,0 +1,35 @@
package org.gcube.common.storagehub.model.expressions.date;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import org.gcube.common.storagehub.model.expressions.Expression;
import org.gcube.common.storagehub.model.expressions.SearchableField;
public class Before implements Expression<Boolean> {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
private SearchableField<Calendar> searchableField;
private Calendar value;
public Before(SearchableField<Calendar> searchableField, Calendar value) {
super();
this.searchableField = searchableField;
this.value = value;
}
public SearchableField<Calendar> getSearchableField() {
return searchableField;
}
public Calendar getValue() {
return value;
}
@Override
public String toString() {
return "Before [searchableField=" + searchableField + ", value=" + dateFormat.format(value.getTime()) + "]";
}
}

View File

@ -0,0 +1,26 @@
package org.gcube.common.storagehub.model.expressions.logical;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.gcube.common.storagehub.model.expressions.Expression;
public class And implements Expression<Boolean>{
List<Expression<Boolean>> expressions = new ArrayList<>();
public And(Expression<Boolean> first , Expression<Boolean> second , Expression<Boolean> ... others ) {
expressions = Arrays.asList(first, second);
if (others !=null && others.length>0)
expressions.addAll(Arrays.asList(others));
}
@Override
public String toString() {
return "And [" + expressions.stream().map(Object::toString).collect(Collectors.joining(",")).toString() + "]";
}
}

View File

@ -0,0 +1,24 @@
package org.gcube.common.storagehub.model.expressions.logical;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.gcube.common.storagehub.model.expressions.Expression;
public class Or implements Expression<Boolean>{
List<Expression<Boolean>> expressions = new ArrayList<>();
public Or(Expression<Boolean> first , Expression<Boolean> second , Expression<Boolean> ... others ) {
expressions = Arrays.asList(first, second);
if (others !=null && others.length>0)
expressions.addAll(Arrays.asList(others));
}
@Override
public String toString() {
return "Or [" + expressions.stream().map(Object::toString).collect(Collectors.joining(",")).toString() + "]";
}
}

View File

@ -0,0 +1,33 @@
package org.gcube.common.storagehub.model.expressions.text;
import org.gcube.common.storagehub.model.expressions.Expression;
import org.gcube.common.storagehub.model.expressions.SearchableField;
public class Contains implements Expression<Boolean> {
private SearchableField<String> searchableField;
private String value;
public Contains(SearchableField<String> searchableField, String value) {
super();
this.searchableField = searchableField;
this.value = value;
}
public SearchableField<String> getSearchableField() {
return searchableField;
}
public String getValue() {
return value;
}
@Override
public String toString() {
return "Contains [searchableField=" + searchableField + ", value=" + value + "]";
}
}

View File

@ -0,0 +1,18 @@
package org.gcube.storagehub.model.expressions;
import org.gcube.common.storagehub.model.expressions.Expression;
import org.gcube.common.storagehub.model.expressions.GenericSearchableItem;
import org.gcube.common.storagehub.model.expressions.text.Contains;
import org.junit.Test;
public class ExpressionsTest {
@Test
public void contains() {
Expression<Boolean> expr = new Contains(GenericSearchableItem.get().title, "Data");
System.out.println( expr.toString());
}
}