2018-03-21 13:11:02 +01:00
|
|
|
package eu.eudat.data.query.definition.helpers;
|
2018-01-25 16:24:21 +01:00
|
|
|
|
|
|
|
import java.util.LinkedList;
|
|
|
|
import java.util.List;
|
|
|
|
|
2018-02-01 10:08:06 +01:00
|
|
|
|
2018-01-25 16:24:21 +01:00
|
|
|
public class ColumnOrderings {
|
|
|
|
|
|
|
|
private String[] fields;
|
|
|
|
|
|
|
|
public String[] getFields() {
|
|
|
|
return fields;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setFields(String[] fields) {
|
|
|
|
this.fields = fields;
|
|
|
|
}
|
|
|
|
|
2018-05-28 11:50:42 +02:00
|
|
|
public Ordering[] getFieldOrderings() {
|
2018-01-25 16:24:21 +01:00
|
|
|
List<Ordering> orderings = new LinkedList<>();
|
2018-02-16 11:34:02 +01:00
|
|
|
for (String field : fields) {
|
2018-01-25 16:24:21 +01:00
|
|
|
orderings.add(this.orderingFromString(field));
|
|
|
|
}
|
|
|
|
return orderings.toArray(new Ordering[orderings.size()]);
|
|
|
|
}
|
|
|
|
|
2018-05-28 11:50:42 +02:00
|
|
|
private Ordering orderingFromString(String field) {
|
2018-02-02 16:24:06 +01:00
|
|
|
Ordering ordering = new Ordering(field);
|
2018-02-16 11:34:02 +01:00
|
|
|
if (ordering.getFieldName().contains("+"))
|
|
|
|
ordering.fieldName(ordering.getFieldName().replace("+", "")).orderByType(Ordering.OrderByType.ASC);
|
|
|
|
else if (ordering.getFieldName().startsWith("-"))
|
|
|
|
ordering.fieldName(ordering.getFieldName().replace("-", "")).orderByType(Ordering.OrderByType.DESC);
|
|
|
|
if (ordering.getFieldName().contains("|count|"))
|
|
|
|
ordering.fieldName(ordering.getFieldName().replace("|count|", "")).columnType(Ordering.ColumnType.COUNT);
|
|
|
|
else if (ordering.getFieldName().contains("|join|"))
|
|
|
|
ordering.fieldName(ordering.getFieldName().replace("|join|", "")).columnType(Ordering.ColumnType.JOIN_COLUMN);
|
2018-02-02 16:24:06 +01:00
|
|
|
return ordering;
|
2018-01-25 16:24:21 +01:00
|
|
|
}
|
|
|
|
}
|