package io.robe.hibernate.criteria.api;
/**
* Created by kamilbukum on 10/01/2017.
*/
public class Order {
private String criteriaAlias;
private final String name;
private final boolean isAlias;
private final Type type;
public Order(String name, Type type, boolean isAlias) {
this.name = name;
this.type = type;
this.isAlias = isAlias;
}
public static Order asc(String name) {
return new Order(name, Type.ASC, false);
}
public static Order ascByAlias(String alias) {
return new Order(alias, Type.ASC, true);
}
public static Order desc(String name) {
return new Order(name, Type.DESC, false);
}
public static Order descByAlias(String alias) {
return new Order(alias, Type.DESC, true);
}
public boolean isAlias() {
return isAlias;
}
public String getCriteriaAlias() {
return criteriaAlias;
}
void setCriteriaAlias(String criteriaAlias) {
this.criteriaAlias = criteriaAlias;
}
public String getName() {
return name;
}
public Type getType() {
return type;
}
public enum Type {
ASC("+") , DESC("-");
/**
* Holds operator as {@link String}
*/
private String value;
/**
*
* @param value
*/
Type(String value) {
this.value = value;
}
/**
* gets Operator as {@link String}
* @return
*/
public String value() {
return value;
}
/**
* gets Operator as {@link Type} enum type
* @param op
* @return
*/
public static Type value(String op){
for(Type type: Type.values()) {
if(type.value().equals(op)) {
return type;
}
}
throw new RuntimeException("Value not found in " + Type.class.getName()) ;
}
}
}