Package org.apache.empire.jsf2.websample.web.pages

Source Code of org.apache.empire.jsf2.websample.web.pages.EmployeeListPage$EmployeeListEntry

/*

* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you 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 org.apache.empire.jsf2.websample.web.pages;

import java.lang.reflect.InvocationTargetException;
import java.util.Collection;
import java.util.Date;

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.empire.commons.ObjectUtils;
import org.apache.empire.commons.Options;
import org.apache.empire.data.DataType;
import org.apache.empire.db.DBColumn;
import org.apache.empire.db.DBColumnExpr;
import org.apache.empire.db.DBCommand;
import org.apache.empire.exceptions.BeanPropertyGetException;
import org.apache.empire.jsf2.pageelements.BeanListPageElement;
import org.apache.empire.jsf2.pageelements.ListPageElement;
import org.apache.empire.jsf2.websample.db.SampleDB;
import org.apache.empire.jsf2.websample.db.SampleDB.TDepartments;
import org.apache.empire.jsf2.websample.db.SampleDB.TEmployees;
import org.apache.empire.jsf2.websample.web.SampleUtils;
import org.apache.empire.jsf2.websample.web.objects.EmployeeSearchFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class EmployeeListPage extends SamplePage
{
    private static final long                      serialVersionUID  = 1L;
    private static final Logger                    log               = LoggerFactory.getLogger(EmployeeListPage.class);

   
    public static final String                     EMPLOYEES_PROPERTY = "employees";
    private BeanListPageElement<EmployeeListEntry> employees;

   
    public static class EmployeeListEntry extends ListPageElement.SelectableItem
    {
        private static final long serialVersionUID = 1L;

        private int               employeeId;
        private String            name;
        private String            gender;
        private Date              dateOfBirth;
        private String            department;
        private boolean           retired;
        private String            idParam;

        @Override
        public String getIdParam()
        {
            return this.idParam;
        }

        public void setIdParam(String idParam)
        {
            this.idParam = idParam;
        }

        public int getEmployeeId()
        {
            return employeeId;
        }

        public void setEmployeeId(int employeeId)
        {
            this.employeeId = employeeId;
        }

        public String getName()
        {
            return name;
        }

        public void setName(String name)
        {
            this.name = name;
        }

        public String getGender()
        {
            return gender;
        }

        public void setGender(String gender)
        {
            this.gender = gender;
        }

        public Date getDateOfBirth()
        {
            return dateOfBirth;
        }

        public void setDateOfBirth(Date dateOfBirth)
        {
            this.dateOfBirth = dateOfBirth;
        }

        public String getDepartment()
        {
            return department;
        }

        public void setDepartment(String department)
        {
            this.department = department;
        }

    public boolean isRetired() {
      return retired;
    }

    public void setRetired(boolean retired) {
      this.retired = retired;
    }

    }

    public EmployeeListPage()
    {
        EmployeeListPage.log.trace("EmployeeListPage created");
        TEmployees EMP = getDatabase().T_EMPLOYEES;
       
        DBColumn defSortColumn = EMP.EMPLOYEE_ID;
        employees = new BeanListPageElement<EmployeeListEntry>(this, EmployeeListEntry.class, defSortColumn, EmployeeListPage.EMPLOYEES_PROPERTY);
    }

   
    public EmployeeSearchFilter getSearchFilter()
    {
        return SampleUtils.getManagedBean(EmployeeSearchFilter.class);
    }
   
    public ListPageElement<EmployeeListEntry> getEmployees()
    {
        return employees;
    }

    /*** Action Section ***/

    @Override
    public void doInit()
    { // Notify Elements
        super.doInit();
    }
   
    public void doResetSearch()
    {
        getSearchFilter().resetFilter();
        this.employees.clearItems();
    }
   
    public void doSearch()
    {
        TDepartments DEP = getDatabase().T_DEPARTMENTS;
        TEmployees EMP = getDatabase().T_EMPLOYEES;

        DBColumnExpr FULL_NAME = EMP.LAST_NAME.append(", ").append(EMP.FIRST_NAME).as("NAME");
        DBColumnExpr DEPARTMENT = DEP.NAME.as("DEPARTMENT");

        DBCommand queryCmd = createQueryCommand();

        queryCmd.select(EMP.EMPLOYEE_ID, FULL_NAME);
        queryCmd.select(EMP.GENDER, EMP.DATE_OF_BIRTH, EMP.RETIRED);
        // queryCmd.select(EMP.RETIRED.decode(true, "X", "-"));
        queryCmd.select(DEPARTMENT);

        queryCmd.join(DEP.DEPARTMENT_ID, EMP.DEPARTMENT_ID);
        queryCmd.orderBy(EMP.FIRST_NAME);
       
        addAllConstraints(queryCmd);

        employees.initItems(queryCmd);
    }


    public Options getDepartmentOptions()
    {
      TDepartments DEP = getDatabase().T_DEPARTMENTS;

      DBCommand queryCmd = createQueryCommand();
      queryCmd.select(DEP.DEPARTMENT_ID,DEP.NAME);
     
      SampleDB db = getDatabase();
        return db.queryOptionList(queryCmd, getConnection());
    }
   
   
    protected void addAllConstraints(DBCommand queryCmd)
    {
        TEmployees EMP = getDatabase().T_EMPLOYEES;
        EmployeeSearchFilter filter = getSearchFilter();
       
        addSearchConstraint(queryCmd, EMP.EMPLOYEE_ID, filter);
        addSearchConstraint(queryCmd, EMP.FIRST_NAME, filter);
        addSearchConstraint(queryCmd, EMP.LAST_NAME, filter);
        addSearchConstraint(queryCmd, EMP.GENDER, filter);
        addSearchConstraint(queryCmd, EMP.DEPARTMENT_ID, filter);
    }
   
    private void addSearchConstraint(DBCommand cmd, DBColumn col, Object bean)
    {
        Object value;
        try
        {
            value = PropertyUtils.getProperty(bean, col.getBeanPropertyName());
            if (ObjectUtils.isEmpty(value))
                return;
            // is it an array
            if (value instanceof Collection<?> || value.getClass().isArray())
            {
                cmd.where(col.in(value));
                return;
            }
            // text
            if (col.getOptions() == null && col.getDataType().equals(DataType.TEXT))
            {
                StringBuilder b = new StringBuilder();
                b.append("%");
                b.append(((String) value).toUpperCase());
                b.append("%");
                cmd.where(col.upper().like(b.toString()));
                return;
            }
            // value
            cmd.where(col.is(value));
            return;
        }
        catch (IllegalAccessException e)
        {
            throw new BeanPropertyGetException(bean, col.getBeanPropertyName(), e);
        }
        catch (InvocationTargetException e)
        {
            throw new BeanPropertyGetException(bean, col.getBeanPropertyName(), e);
        }
        catch (NoSuchMethodException e)
        {
            throw new BeanPropertyGetException(bean, col.getBeanPropertyName(), e);
        }
    }

   
}
TOP

Related Classes of org.apache.empire.jsf2.websample.web.pages.EmployeeListPage$EmployeeListEntry

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.