/******************************************************************************* * Copyright (c) 2014 antoniomariasanchez at gmail.com. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * antoniomaria - initial API and implementation ******************************************************************************/ /* * Copyright 2012 JAXIO http://www.jaxio.com Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific language governing permissions and limitations under the * License. */ package net.sf.gazpachoquest.qbe; import java.io.Serializable; import javax.persistence.metamodel.SingularAttribute; import net.sf.gazpachoquest.domain.support.Persistable; import org.apache.commons.lang3.Validate; /** * Holder class for search ordering used by the {@link SearchParameters}. When * used with {@link NamedQueryUtil}, you * pass column name. For other usage, pass the property name. */ public class OrderBy implements Serializable { private static final long serialVersionUID = 1L; private final String columnOrProperty; private OrderByDirection direction = OrderByDirection.ASC; public OrderBy(final SingularAttribute<? extends Persistable, ? extends Serializable> attribute) { this(attribute, OrderByDirection.ASC); } public OrderBy(final SingularAttribute<? extends Persistable, ? extends Serializable> attribute, final OrderByDirection direction) { Validate.notNull(attribute); Validate.notNull(direction); columnOrProperty = attribute.getName(); this.direction = direction; } public OrderBy(final String columnOrProperty) { this(columnOrProperty, OrderByDirection.ASC); } public OrderBy(final String columnOrProperty, final OrderByDirection direction) { Validate.notNull(columnOrProperty); Validate.notNull(direction); this.columnOrProperty = columnOrProperty; this.direction = direction; } public String getColumn() { return columnOrProperty; } public OrderByDirection getDirection() { return direction; } public String getProperty() { return columnOrProperty; } public boolean isOrderDesc() { return OrderByDirection.DESC == direction; } }