com.ut.tekir.tender.TenderBrowseBean.java Source code

Java tutorial

Introduction

Here is the source code for com.ut.tekir.tender.TenderBrowseBean.java

Source

/*
 * Copyleft 2007-2011 Ozgur Yazilim A.S.
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 * http://www.gnu.org/licenses/lgpl.html
 *
 * www.tekir.com.tr
 * www.ozguryazilim.com.tr
 *
 */

package com.ut.tekir.tender;

import javax.ejb.Stateful;

import org.hibernate.Criteria;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.hibernate.transform.Transformers;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Observer;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.persistence.HibernateSessionProxy;

import com.ut.tekir.entities.Tender;
import com.ut.tekir.entities.TenderStatus;
import com.ut.tekir.framework.BrowserBase;
import com.ut.tekir.framework.CalendarManager;

/**
 * @author sinan.yumak
 *
 */
@Stateful
@Name("tenderBrowse")
@Scope(ScopeType.SESSION)
public class TenderBrowseBean extends BrowserBase<Tender, TenderFilterModel>
        implements TenderBrowse<Tender, TenderFilterModel> {
    @In
    CalendarManager calendarManager;

    @Override
    public TenderFilterModel newFilterModel() {
        TenderFilterModel fm = new TenderFilterModel();
        fm.setBeginDate(calendarManager.getLastTenDay());
        fm.setEndDate(calendarManager.getCurrentDate());
        return fm;
    }

    @Observer("refreshBrowser:com.ut.tekir.entities.Tender")
    public void refreshResults() {
        log.debug("#{messages['beanMessages.RefreshingResultSet']}");
        if (getEntityList() == null || getEntityList().isEmpty()) {
            return;
        }
        search();
    }

    @Override
    @SuppressWarnings("unchecked")
    public void search() {
        log.debug("Search Execute");

        HibernateSessionProxy session = (HibernateSessionProxy) getEntityManager().getDelegate();

        Criteria ecrit = buildCriteria().getExecutableCriteria(session);

        ecrit.setMaxResults(100);

        ecrit.createAlias("contact", "contact", CriteriaSpecification.LEFT_JOIN);

        setEntityList(ecrit.list());
    }

    @Override
    public DetachedCriteria buildCriteria() {
        DetachedCriteria crit = DetachedCriteria.forClass(Tender.class);

        addProjections(crit);

        addRestrictions(crit);

        crit.addOrder(Order.desc("serial"));

        return crit;
    }

    private void addProjections(DetachedCriteria crit) {
        crit.setProjection(Projections.projectionList().add(Projections.property("id"), "id")
                .add(Projections.property("serial"), "serial").add(Projections.property("reference"), "reference")
                .add(Projections.property("status"), "status")
                .add(Projections.property("referenceSuffix"), "referenceSuffix")
                .add(Projections.property("code"), "code").add(Projections.property("date"), "date")
                .add(Projections.property("info1"), "info1").add(Projections.property("info2"), "info2")
                .add(Projections.property("contact.fullname"), "contactName")
                .add(Projections.property("contact.code"), "contactCode")
                .add(Projections.property("totalAmount.value"), "totalAmountValue")
                .add(Projections.property("totalAmount.currency"), "totalAmountCurrency")
                .add(Projections.property("totalDiscount.value"), "totalDiscountValue")
                .add(Projections.property("totalDiscount.currency"), "totalDiscountCurrency")
                .add(Projections.property("totalExpense.value"), "totalExpenseValue")
                .add(Projections.property("totalExpense.currency"), "totalExpenseCurrency")
                .add(Projections.property("totalFee.value"), "totalFeeValue")
                .add(Projections.property("totalFee.currency"), "totalFeeCurrency")
                .add(Projections.property("totalTax.value"), "totalTaxValue")
                .add(Projections.property("totalTax.currency"), "totalTaxCurrency"))
                .setResultTransformer(Transformers.aliasToBean(TenderFilterModel.class));
    }

    private void addRestrictions(DetachedCriteria crit) {
        if (isNotEmpty(filterModel.getSerial())) {
            crit.add(Restrictions.ilike("this.serial", filterModel.getSerial(), MatchMode.START));
        }

        if (isNotEmpty(filterModel.getReference())) {
            crit.add(Restrictions.ilike("this.reference", filterModel.getReference(), MatchMode.START));
        }

        if (filterModel.getStatus() != null) {
            crit.add(Restrictions.eq("this.status", filterModel.getStatus()));
        }

        if (isNotEmpty(filterModel.getCode())) {
            crit.add(Restrictions.ilike("this.code", filterModel.getCode(), MatchMode.START));
        }

        if (isNotEmpty(filterModel.getContactName())) {
            crit.add(Restrictions.ilike("contact.name", filterModel.getContactName(), MatchMode.START));
        }

        if (isNotEmpty(filterModel.getContactCode())) {
            crit.add(Restrictions.ilike("contact.code", filterModel.getContactCode(), MatchMode.START));
        }

        if (filterModel.getBeginDate() != null) {
            crit.add(Restrictions.ge("this.date", filterModel.getBeginDate()));
        }

        if (filterModel.getEndDate() != null) {
            crit.add(Restrictions.le("this.date", filterModel.getEndDate()));
        }
    }

    public TenderStatus[] getTenderStatusList() {
        return TenderStatus.values();
    }

}