argos/dmp-backend/web/src/main/java/eu/eudat/controllers/publicapi/query/definition/helpers/ColumnOrderings.java

47 lines
1.8 KiB
Java
Raw Normal View History

package eu.eudat.controllers.publicapi.query.definition.helpers;
2018-01-25 16:24:21 +01:00
2022-10-18 08:39:46 +02:00
import io.swagger.annotations.ApiModelProperty;
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 {
2022-10-18 08:39:46 +02:00
@ApiModelProperty(value = "fields", name = "fields", dataType = "List<String>", example = "[]")
private List<String> fields;
2018-01-25 16:24:21 +01:00
public List<String> getFields() {
2018-01-25 16:24:21 +01:00
return fields;
}
public void setFields(List<String> fields) {
2018-01-25 16:24:21 +01:00
this.fields = fields;
}
public List<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;
2018-01-25 16:24:21 +01:00
}
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);
else if (ordering.getFieldName().equals("asc"))
ordering.fieldName("label").orderByType(Ordering.OrderByType.ASC);
else if (ordering.getFieldName().equals("desc"))
ordering.fieldName("label").orderByType(Ordering.OrderByType.DESC);
2018-02-02 16:24:06 +01:00
return ordering;
2018-01-25 16:24:21 +01:00
}
}