gt: 				if (filterKriterien[i].isKrit) {
context: /*******************************************************************************
   * HELIUM V, Open Source ERP software for sustained success
   * at small and medium-sized enterprises.
   * Copyright (C) 2004 - 2015 HELIUM V IT-Solutions GmbH
   * 
   * 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 theLicense, or 
   * (at your option) any later version.
   * 
   * According to sec. 7 of the GNU Affero General Public License, version 3, 
   * the terms of the AGPL are supplemented with the following terms:
   * 
   * "HELIUM V" and "HELIUM 5" are registered trademarks of 
   * HELIUM V IT-Solutions GmbH. The licensing of the program under the 
   * AGPL does not imply a trademark license. Therefore any rights, title and
   * interest in our trademarks remain entirely with us. If you want to propagate
   * modified versions of the Program under the name "HELIUM V" or "HELIUM 5",
   * you may only do so if you have a written permission by HELIUM V IT-Solutions 
   * GmbH (to acquire a permission please contact HELIUM V IT-Solutions
   * at trademark@heliumv.com).
   * 
   * 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/>.
   * 
   * Contact: developers@heliumv.com
   ******************************************************************************/
  package com.lp.server.partner.fastlanereader;
  
  import java.util.Iterator;
  import java.util.List;
  
  import org.hibernate.HibernateException;
  import org.hibernate.Query;
  import org.hibernate.ScrollableResults;
  import org.hibernate.Session;
  import org.hibernate.SessionFactory;
  
  import com.lp.server.partner.fastlanereader.generated.FLRBranche;
  import com.lp.server.partner.fastlanereader.generated.FLRBranchespr;
  import com.lp.server.util.fastlanereader.FLRSessionFactory;
  import com.lp.server.util.fastlanereader.UseCaseHandler;
  import com.lp.server.util.fastlanereader.service.query.FilterBlock;
  import com.lp.server.util.fastlanereader.service.query.FilterKriterium;
  import com.lp.server.util.fastlanereader.service.query.QueryParameters;
  import com.lp.server.util.fastlanereader.service.query.QueryResult;
  import com.lp.server.util.fastlanereader.service.query.SortierKriterium;
  import com.lp.server.util.fastlanereader.service.query.TableInfo;
  import com.lp.util.EJBExceptionLP;
  import com.lp.util.Helper;
  
  /**
   * <p>
   * Diese Klasse kuemmert sich um den Branchen-FLR.
   * </p>
   * 
   * <p>
   * Copyright Logistik Pur Software GmbH (c) 2004-2007
   * </p>
   * 
   * <p>
   * Erstellungsdatum 27.01.05
   * </p>
   * 
   * <p>
   * 
   * @author $Author: heidi $
   *         </p>
   * 
   * @version $Revision: 1.9 $ Date $Date: 2009/04/24 07:55:31 $
   */
  public class BrancheHandler extends UseCaseHandler {
  
  	public QueryResult getPageAt(Integer rowIndex) throws EJBExceptionLP {
  
  		QueryResult result = null;
  		SessionFactory factory = FLRSessionFactory.getFactory();
  		Session session = null;
  		try {
  			int colCount = getTableInfo().getColumnClasses().length;
  			int pageSize = PAGE_SIZE;
  			int startIndex = Math.max(rowIndex.intValue() - (pageSize / 2), 0);
  			int endIndex = startIndex + pageSize - 1;
  
  			session = factory.openSession();
  			String queryString = this.getFromClause() + this.buildWhereClause()
  					+ this.buildOrderByClause();
  
  			Query query = session.createQuery(queryString);
  			session = setFilter(session);
  
  			query.setFirstResult(startIndex);
  			query.setMaxResults(pageSize);
  			List<?> resultList = query.list();
  			Iterator<?> resultListIterator = resultList.iterator();
  
  			Object[][] rows = new Object[resultList.size()][colCount];
  			int row = 0;
  			int col = 0;
  
  			String sLocUI = Helper.locale2String(theClientDto.getLocUi());
  
  			while (resultListIterator.hasNext()) {
  				Object o[] = (Object[]) resultListIterator.next();
  				FLRBranche branche = (FLRBranche) o[0];
  
  				Iterator<?> sprsetIterator = branche.getBranche_branchespr_set()
  						.iterator();
  
  				rows[row][col++] = branche.getI_id();
  				rows[row][col++] = branche.getC_nr();
  
  				rows[row][col++] = findSpr(sLocUI, sprsetIterator);
  
  				row++;
  				col = 0;
  			}
  			result = new QueryResult(rows, this.getRowCount(), startIndex,
  					endIndex, 0);
  		} catch (Exception e) {
  			throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FLR, e);
  		} finally {
  			try {
  				session.close();
  			} catch (HibernateException he) {
  				throw new EJBExceptionLP(EJBExceptionLP.FEHLER, he);
  			}
  		}
  		return result;
  	}
  
  	private String findSpr(String sLocaleI, Iterator<?> iterUebersetzungenI) {
  
  		String sUebersetzung = null;
  		while (iterUebersetzungenI.hasNext()) {
  			FLRBranchespr branchespr = (FLRBranchespr) iterUebersetzungenI
  					.next();
  			if (branchespr.getLocale().getC_nr().compareTo(sLocaleI) == 0) {
  				sUebersetzung = branchespr.getC_bez();
  				break;
  			}
  		}
  		return sUebersetzung;
  	}
  
  	protected long getRowCountFromDataBase() {
  		long rowCount = 0;
  		SessionFactory factory = FLRSessionFactory.getFactory();
  		Session session = null;
  		try {
  			session = factory.openSession();
  			session = setFilter(session);
  
  			String queryString = "SELECT COUNT(*) FROM FLRBranche AS branche"
  					+ " LEFT JOIN branche.branche_branchespr_set AS branche_branchespr_set "
  					+ this.buildWhereClause();
  
  			Query query = session.createQuery(queryString);
  			List<?> rowCountResult = query.list();
  			if (rowCountResult != null && rowCountResult.size() > 0) {
  				rowCount = ((Long) rowCountResult.get(0)).longValue();
  			}
  		} catch (Exception e) {
  			throw new EJBExceptionLP(EJBExceptionLP.FEHLER, e);
  		} finally {
  			if (session != null) {
  				try {
  					session.close();
  				} catch (HibernateException he) {
  					throw new EJBExceptionLP(EJBExceptionLP.FEHLER, he);
  				}
  			}
  		}
  		return rowCount;
  	}
  
  	/**
  	 * builds the where clause of the HQL (Hibernate Query Language) statement
  	 * using the current query.
  	 * 
  	 * @return the HQL where clause.
  	 */
  	private String buildWhereClause() {
  		StringBuffer where = new StringBuffer("");
  
  		if (this.getQuery() != null && this.getQuery().getFilterBlock() != null
  				&& this.getQuery().getFilterBlock().filterKrit != null) {
  
  			FilterBlock filterBlock = this.getQuery().getFilterBlock();
  			FilterKriterium[] filterKriterien = this.getQuery()
  					.getFilterBlock().filterKrit;
  			String booleanOperator = filterBlock.boolOperator;
  			boolean filterAdded = false;
  
  			for (int i = 0; i < filterKriterien.length; i++) {
  