/*
This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2011 Servoy BV
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option) any
later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along
with this program; if not, see http://www.gnu.org/licenses or write to the Free
Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
*/
package com.servoy.j2db.querybuilder.impl;
import java.util.Iterator;
import org.mozilla.javascript.annotations.JSFunction;
import com.servoy.j2db.documentation.ServoyDocumented;
import com.servoy.j2db.persistence.RepositoryException;
import com.servoy.j2db.querybuilder.IQueryBuilderColumn;
import com.servoy.j2db.querybuilder.IQueryBuilderSort;
import com.servoy.j2db.querybuilder.IQueryBuilderSorts;
import com.servoy.j2db.scripting.annotations.JSReadonlyProperty;
/**
* @author rgansevles
*
*/
@ServoyDocumented(category = ServoyDocumented.RUNTIME)
public class QBSorts extends QBPart implements IQueryBuilderSorts
{
/**
* @param queryBuilder
*/
QBSorts(QBSelect parent)
{
super(parent, parent);
}
@Override
@JSReadonlyProperty
public final QBSelect getParent()
{
return (QBSelect)super.getParent();
}
/**
* @clonedesc com.servoy.j2db.querybuilder.IQueryBuilderSorts#addPk()
* @sample
*
* query.sort.addPk()
*/
@JSFunction
public QBSorts addPk() throws RepositoryException
{
Iterator<String> rowIdentColumnNames = getParent().getTable().getRowIdentColumnNames();
while (rowIdentColumnNames.hasNext())
{
add(getParent().getColumn(rowIdentColumnNames.next()).asc());
}
return this;
}
/**
* @clonedesc com.servoy.j2db.querybuilder.IQueryBuilderSorts#clear()
* @sample
*
* query.sort.clear()
*/
@JSFunction
public QBSorts clear()
{
getParent().getQuery().clearSorts();
return this;
}
/**
* @clonedesc com.servoy.j2db.querybuilder.IQueryBuilderSorts#add(IQueryBuilderSort)
* @sample
* query.sort.add(query.columns.orderid.desc)
*
* @param sort the sort to add
*/
public QBSorts js_add(QBSort sort) throws RepositoryException
{
return add(sort);
}
public QBSorts add(IQueryBuilderSort sort) throws RepositoryException
{
getParent().getQuery().addSort(((QBSort)sort).getQueryQuerySort());
return this;
}
/**
* @clonedesc com.servoy.j2db.querybuilder.IQueryBuilderSorts#add(IQueryBuilderColumn)
* @sample
* query.sort.add(query.columns.orderid)
*
* @param columnSortAsc column to sort by
*/
public QBSorts js_add(QBColumn columnSortAsc) throws RepositoryException
{
return add(columnSortAsc);
}
/**
* @clonedesc com.servoy.j2db.querybuilder.IQueryBuilderSorts#add(IQueryBuilderColumn)
* @sample
* query.sort.add(query.columns.orderid)
*
* @param functionSortAsc function to add
*/
public QBSorts js_add(QBFunction functionSortAsc) throws RepositoryException
{
return add(functionSortAsc);
}
public QBSorts add(IQueryBuilderColumn columnSortAsc) throws RepositoryException
{
return add(columnSortAsc.asc());
}
}