argos/dmp-backend/src/main/java/eu/eudat/models/helpers/common/ColumnOrderings.java

36 lines
1.4 KiB
Java
Raw Normal View History

2018-01-25 16:24:21 +01:00
package eu.eudat.models.helpers.common;
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;
}
public Ordering[] getFieldOrderings() throws Exception {
List<Ordering> orderings = new LinkedList<>();
for(String field : fields){
orderings.add(this.orderingFromString(field));
}
return orderings.toArray(new Ordering[orderings.size()]);
}
private Ordering orderingFromString(String field) throws Exception {
2018-02-02 16:24:06 +01:00
Ordering ordering = new Ordering(field);
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);
return ordering;
2018-01-25 16:24:21 +01:00
}
}