public function getSortables()
{
$sortables = [];
$annotation_sortables = $this->getEntityAnnotation()->sortable_by;
foreach ($annotation_sortables as $sortable) {
$conditions = [];
if ($sortable instanceof SortableAnnotation) {
if ($sortable->conditions) {
foreach ($sortable->conditions as $condition) {
if ($condition instanceof ConditionAnnotation) {
$this->testConditionAnnotation($condition);
$conditions[] = new Condition($condition->column, $condition->method, $condition->value, $condition->comparison);
} else {
throw new UnexpectedValueException(self::ERR_UNKNOWN_CONDITION);
}
}
}
$sortables[] = new Sortable($sortable->column, $conditions, $sortable->name);
} elseif (is_string($sortable)) {
$sortables[] = new Sortable($sortable);
} else {
throw new UnexpectedValueException(self::ERR_UNKNOWN_SORTABLE);
}
}
return $sortables;
}