com.autentia.tnt.bean.admin.ProjectBean.java Source code

Java tutorial

Introduction

Here is the source code for com.autentia.tnt.bean.admin.ProjectBean.java

Source

/**
 * TNTConcept Easy Enterprise Management by Autentia Real Bussiness Solution S.L.
 * Copyright (C) 2007 Autentia Real Bussiness Solution S.L.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License.
 *
 * 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.autentia.tnt.bean.admin;

import java.math.*;
import java.text.NumberFormat;
import java.util.*;

import javax.faces.component.UIComponent;
import javax.faces.component.UIData;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.model.*;

import org.apache.commons.logging.*;

import com.autentia.tnt.bean.*;
import com.autentia.tnt.businessobject.*;
import com.autentia.tnt.dao.*;
import com.autentia.tnt.dao.search.*;
import com.autentia.tnt.manager.admin.ProjectCostManager;
import com.autentia.tnt.manager.admin.ProjectManager;
import com.autentia.tnt.manager.admin.ProjectRoleManager;
import com.autentia.tnt.manager.contacts.OrganizationManager;
import com.autentia.tnt.manager.security.Permission;
import com.autentia.tnt.upload.*;
import com.autentia.tnt.util.*;

import org.acegisecurity.acls.domain.BasePermission;

/**
 * UI bean for Project objects.
 * @author stajanov code generator
 */
public class ProjectBean extends BaseBean {
    /** Serial version field */
    private static final long serialVersionUID = -1L;

    public BigDecimal getTotalCost() {
        return project.getTotalCost();
    }

    /**
      * Go to edit page
      * @return forward to EDIT page
      */

    public String copy() {
        Integer id = Integer.parseInt(FacesUtils.getRequestParameter(ROW_ID));
        Offer oferta = manager.copyFromOffer(id);

        project = new Project();

        project.setClient(oferta.getOrganization());
        project.setStartDate(new Date());
        project.setOpen(true);

        HashSet<ProjectRole> roles = new HashSet<ProjectRole>();
        HashSet<ProjectCost> costs = new HashSet<ProjectCost>();

        for (OfferRole role : oferta.getRoles()) {
            ProjectRole pr = new ProjectRole();
            pr.setName(role.getName());
            pr.setCostPerHour(role.getCostPerHour());
            pr.setExpectedHours(role.getExpectedHours());
            roles.add(pr);
        }

        for (OfferCost cost : oferta.getCosts()) {
            ProjectCost pc = new ProjectCost();
            pc.setName(cost.getName());
            pc.setBillable(cost.isBillable());
            pc.setCost(cost.getCost());
            costs.add(pc);
        }

        project.setRoles(roles);
        project.setCosts(costs);

        return NavigationResults.COPY_FROM_OFFER;
    }

    /* project - generated by stajanov (do not edit/delete) */

    /** Logger */
    private static final Log log = LogFactory.getLog(ProjectBean.class);

    /** Active search object */
    private ProjectSearch search = new ProjectSearch();

    /** Manager */
    private static ProjectManager manager = ProjectManager.getDefault();

    /** Upload service */
    private static final Uploader uploader = UploaderFactory.getInstance("project");

    /** Active Project object */
    private Project project;

    /** Default sort column */
    private String sortColumn = "name";

    /** Default sort order */
    private boolean sortAscending = true;

    /** Quick search letter for ABC pager control */
    private Character letter;

    public ProjectBean() {
        search.setOpen(new Boolean(true));
    }

    /**
       * List projects. Order depends on Faces parameter sort.
       * @return the list of all projects sorted by requested criterion
       */
    public List<Project> getAll() {

        return manager.getAllEntities(search, new SortCriteria(sortColumn, sortAscending));
    }

    // Getters to list possible values of related entities

    /**
     * Get the list of all clients
     * @return the list of all clients
     */
    public List<SelectItem> getClients() {
        List<Organization> refs = OrganizationManager.getDefault().getAllEntities(null, new SortCriteria("name"));

        ArrayList<SelectItem> ret = new ArrayList<SelectItem>();
        for (Organization ref : refs) {
            ret.add(new SelectItem(ref, ref.getName()));
        }
        return ret;
    }

    /**
     * Get the list of all roless
     * @return the list of all roless
     */
    public List<SelectItem> getRoless() {
        List<ProjectRole> refs = ProjectRoleManager.getDefault().getAllEntities(null, new SortCriteria("name"));

        ArrayList<SelectItem> ret = new ArrayList<SelectItem>();
        for (ProjectRole ref : refs) {
            ret.add(new SelectItem(ref, ref.getName()));
        }
        return ret;
    }

    /**
     * Get the list of all costss
     * @return the list of all costss
     */
    public List<SelectItem> getCostss() {
        List<ProjectCost> refs = ProjectCostManager.getDefault().getAllEntities(null, new SortCriteria("name"));

        ArrayList<SelectItem> ret = new ArrayList<SelectItem>();
        for (ProjectCost ref : refs) {
            ret.add(new SelectItem(ref, ref.getName()));
        }
        return ret;
    }

    // Getters to list possible values of enum fields

    // Methods to create/remove instances of one-to-many entities (slave entities)

    /**
     * Create a new empty instance of the one-to-many field
     * @return forward to the same page
     */
    public String createRoles() {
        ProjectRole item = new ProjectRole();
        item.setProject(project);
        if (project.getRoles() == null) {
            project.setRoles(new HashSet());
        }
        project.getRoles().add(item);
        return null;
    }

    /**
     * Create a new empty instance of the one-to-many field
     * @return forward to the same page
     */
    public String editRoles() {
        ProjectRole item = new ProjectRole();
        item.setProject(project);
        if (project.getRoles() == null) {
            project.setRoles(new HashSet());
        }
        project.getRoles().add(item);
        return null;
    }

    /**
     * Delete selected instance of the one-to-many field
     * @return forward to the same page
     */
    public String deleteRoles() {
        UIData table = (UIData) FacesUtils.getComponent("project:roles");
        project.getRoles().remove(table.getRowData());
        return null;
    }

    /**
     * Create a new empty instance of the one-to-many field
     * @return forward to the same page
     */
    public String createCosts() {
        ProjectCost item = new ProjectCost();
        item.setProject(project);
        if (project.getCosts() == null) {
            project.setCosts(new HashSet());
        }
        project.getCosts().add(item);
        return null;
    }

    /**
     * Create a new empty instance of the one-to-many field
     * @return forward to the same page
     */
    public String editCosts() {
        ProjectCost item = new ProjectCost();
        item.setProject(project);
        if (project.getCosts() == null) {
            project.setCosts(new HashSet());
        }
        project.getCosts().add(item);
        return null;
    }

    /**
     * Delete selected instance of the one-to-many field
     * @return forward to the same page
     */
    public String deleteCosts() {
        UIData table = (UIData) FacesUtils.getComponent("project:costs");
        project.getCosts().remove(table.getRowData());
        return null;
    }

    /**
     * Whether or not create button is available for user
     * @return true if user can create objects of type Project
     */
    public boolean isCreateAvailable() {
        return SpringUtils.isRolePermissionGranted(Permission.Entity_Create(Project.class));
    }

    /**
     * Whether or not edit button is available for user
     * @return true if user can edit current object
     */
    public boolean isEditAvailable() {
        return SpringUtils.isAclPermissionGranted(project, BasePermission.WRITE);
    }

    /**
     * Whether or not delete button is available for user
     * @return true if user can delete current object
     */
    public boolean isDeleteAvailable() {
        return (project.getId() != null) && SpringUtils.isAclPermissionGranted(project, BasePermission.DELETE);
    }

    /**
     * Reset search criteria
     * @return forward to LIST page
     */
    public String reset() {
        search.reset();
        return list();
    }

    /**
     * Go to create page
     * @return forward to CREATE page
     */
    public String create() {
        project = new Project();
        project.setStartDate(new Date());
        project.setBillable(true);
        return NavigationResults.CREATE;
    }

    /**
     * Go to detail page
     * @return forward to DETAIL page
     */
    public String detail() {
        Integer id = Integer.parseInt(FacesUtils.getRequestParameter(ROW_ID));
        project = manager.getEntityById(id);

        return SpringUtils.isAclPermissionGranted(project, BasePermission.WRITE) ? NavigationResults.EDIT
                : NavigationResults.DETAIL;
    }

    /**
     * Save bean and stay on it
     * @return forward to list page
     */
    public String save() {

        doBeforeSave();

        if (project.getId() == null) {
            manager.insertEntity(project);
        } else {
            manager.updateEntity(project);
        }

        // Calls an after save action
        String result = doAfterSave(NavigationResults.LIST);

        // Unselect object
        project = null;

        return result;
    }

    /**
     * Delete bean and go back to beans list
     * @return forward to LIST page
     */
    public String delete() {
        manager.deleteEntity(project);
        project = null;
        return NavigationResults.LIST;
    }

    /**
     * Go back to beans list
     * @return forward to LIST page
     */
    public String list() {
        return NavigationResults.LIST;
    }

    /**
     * Go to search page
     * @return forward to SEARCH page
     */
    public String search() {
        return NavigationResults.SEARCH;
    }

    /** 
     * Check if we have an active object.
     * @return true is an object is selected
     */
    public boolean isProjectSelected() {
        return project != null;
    }

    // Getters and setters to manipulate sorting
    public boolean isSortAscending() {
        return sortAscending;
    }

    public void setSortAscending(boolean sortAscending) {
        this.sortAscending = sortAscending;
    }

    public String getSortColumn() {
        return sortColumn;
    }

    public void setSortColumn(String sortColumn) {
        this.sortColumn = sortColumn;
    }

    // Getters and setters to handle search
    public ProjectSearch getSearch() {
        return search;
    }

    public Date getSearchStartStartDate() {
        return search.getStartStartDate();
    }

    public void setSearchStartStartDate(Date val) {
        if (val != null) {
            search.setStartStartDate(val);
        } else {
            search.unsetStartStartDate();
        }
    }

    public boolean isSearchStartStartDateValid() {
        return search.isStartStartDateSet();
    }

    public void setSearchStartStartDateValid(boolean val) {
        if (val) {
            search.setStartStartDate(search.getStartStartDate());
        } else {
            search.unsetStartStartDate();
        }
    }

    public Date getSearchEndStartDate() {
        return search.getEndStartDate();
    }

    public void setSearchEndStartDate(Date val) {
        if (val != null) {
            search.setEndStartDate(val);
        } else {
            search.unsetEndStartDate();
        }
    }

    public boolean isSearchEndStartDateValid() {
        return search.isEndStartDateSet();
    }

    public void setSearchEndStartDateValid(boolean val) {
        if (val) {
            search.setEndStartDate(search.getEndStartDate());
        } else {
            search.unsetEndStartDate();
        }
    }

    public Date getSearchStartEndDate() {
        return search.getStartEndDate();
    }

    public void setSearchStartEndDate(Date val) {
        if (val != null) {
            search.setStartEndDate(val);
        } else {
            search.unsetStartEndDate();
        }
    }

    public boolean isSearchStartEndDateValid() {
        return search.isStartEndDateSet();
    }

    public void setSearchStartEndDateValid(boolean val) {
        if (val) {
            search.setStartEndDate(search.getStartEndDate());
        } else {
            search.unsetStartEndDate();
        }
    }

    public Date getSearchEndEndDate() {
        return search.getEndEndDate();
    }

    public void setSearchEndEndDate(Date val) {
        if (val != null) {
            search.setEndEndDate(val);
        } else {
            search.unsetEndEndDate();
        }
    }

    public boolean isSearchEndEndDateValid() {
        return search.isEndEndDateSet();
    }

    public void setSearchEndEndDateValid(boolean val) {
        if (val) {
            search.setEndEndDate(search.getEndEndDate());
        } else {
            search.unsetEndEndDate();
        }
    }

    public Boolean getSearchOpen() {
        return search.getOpen();
    }

    public void setSearchOpen(Boolean val) {
        if (search.isOpenSet()) {
            search.setOpen(val);
        }
    }

    public boolean isSearchOpenValid() {
        return search.isOpenSet();
    }

    public void setSearchOpenValid(boolean val) {
        if (val) {
            search.setOpen(search.getOpen());
        } else {
            search.unsetOpen();
        }
    }

    public String getSearchName() {
        return search.getName();
    }

    public void setSearchName(String val) {
        if (search.isNameSet()) {
            search.setName(val);
        }
    }

    public boolean isSearchNameValid() {
        return search.isNameSet();
    }

    public void setSearchNameValid(boolean val) {
        if (val) {
            search.setName(search.getName());
        } else {
            search.unsetName();
        }
    }

    public String getSearchDescription() {
        return search.getDescription();
    }

    public void setSearchDescription(String val) {
        if (search.isDescriptionSet()) {
            search.setDescription(val);
        }
    }

    public boolean isSearchDescriptionValid() {
        return search.isDescriptionSet();
    }

    public void setSearchDescriptionValid(boolean val) {
        if (val) {
            search.setDescription(search.getDescription());
        } else {
            search.unsetDescription();
        }
    }

    public Boolean getSearchBillable() {
        return search.getBillable();
    }

    public void setSearchBillable(Boolean val) {
        if (search.isBillableSet()) {
            search.setBillable(val);
        }
    }

    public boolean isSearchBillableValid() {
        return search.isBillableSet();
    }

    public void setSearchBillableValid(boolean val) {
        if (val) {
            search.setBillable(search.getBillable());
        } else {
            search.unsetBillable();
        }
    }

    public Integer getSearchOwnerId() {
        return search.getOwnerId();
    }

    public void setSearchOwnerId(Integer val) {
        if (search.isOwnerIdSet()) {
            search.setOwnerId(val);
        }
    }

    public boolean isSearchOwnerIdValid() {
        return search.isOwnerIdSet();
    }

    public void setSearchOwnerIdValid(boolean val) {
        if (val) {
            search.setOwnerId(search.getOwnerId());
        } else {
            search.unsetOwnerId();
        }
    }

    public Integer getSearchDepartmentId() {
        return search.getDepartmentId();
    }

    public void setSearchDepartmentId(Integer val) {
        if (search.isDepartmentIdSet()) {
            search.setDepartmentId(val);
        }
    }

    public boolean isSearchDepartmentIdValid() {
        return search.isDepartmentIdSet();
    }

    public void setSearchDepartmentIdValid(boolean val) {
        if (val) {
            search.setDepartmentId(search.getDepartmentId());
        } else {
            search.unsetDepartmentId();
        }
    }

    public Date getSearchStartInsertDate() {
        return search.getStartInsertDate();
    }

    public void setSearchStartInsertDate(Date val) {
        if (val != null) {
            search.setStartInsertDate(val);
        } else {
            search.unsetStartInsertDate();
        }
    }

    public boolean isSearchStartInsertDateValid() {
        return search.isStartInsertDateSet();
    }

    public void setSearchStartInsertDateValid(boolean val) {
        if (val) {
            search.setStartInsertDate(search.getStartInsertDate());
        } else {
            search.unsetStartInsertDate();
        }
    }

    public Date getSearchEndInsertDate() {
        return search.getEndInsertDate();
    }

    public void setSearchEndInsertDate(Date val) {
        if (val != null) {
            search.setEndInsertDate(val);
        } else {
            search.unsetEndInsertDate();
        }
    }

    public boolean isSearchEndInsertDateValid() {
        return search.isEndInsertDateSet();
    }

    public void setSearchEndInsertDateValid(boolean val) {
        if (val) {
            search.setEndInsertDate(search.getEndInsertDate());
        } else {
            search.unsetEndInsertDate();
        }
    }

    public Date getSearchStartUpdateDate() {
        return search.getStartUpdateDate();
    }

    public void setSearchStartUpdateDate(Date val) {
        if (val != null) {
            search.setStartUpdateDate(val);
        } else {
            search.unsetStartUpdateDate();
        }
    }

    public boolean isSearchStartUpdateDateValid() {
        return search.isStartUpdateDateSet();
    }

    public void setSearchStartUpdateDateValid(boolean val) {
        if (val) {
            search.setStartUpdateDate(search.getStartUpdateDate());
        } else {
            search.unsetStartUpdateDate();
        }
    }

    public Date getSearchEndUpdateDate() {
        return search.getEndUpdateDate();
    }

    public void setSearchEndUpdateDate(Date val) {
        if (val != null) {
            search.setEndUpdateDate(val);
        } else {
            search.unsetEndUpdateDate();
        }
    }

    public boolean isSearchEndUpdateDateValid() {
        return search.isEndUpdateDateSet();
    }

    public void setSearchEndUpdateDateValid(boolean val) {
        if (val) {
            search.setEndUpdateDate(search.getEndUpdateDate());
        } else {
            search.unsetEndUpdateDate();
        }
    }

    public Organization getSearchClient() {
        return search.getClient();
    }

    public void setSearchClient(Organization val) {
        if (search.isClientSet()) {
            search.setClient(val);
        }
    }

    public boolean isSearchClientValid() {
        return search.isClientSet();
    }

    public void setSearchClientValid(boolean val) {
        if (val) {
            search.setClient(search.getClient());
        } else {
            search.unsetClient();
        }
    }

    public List<ProjectRole> getSearchRoles() {
        return search.getRoles();
    }

    public void setSearchRoles(List<ProjectRole> val) {
        if (search.isRolesSet()) {
            search.setRoles(val);
        }
    }

    public boolean isSearchRolesValid() {
        return search.isRolesSet();
    }

    public void setSearchRolesValid(boolean val) {
        if (val) {
            search.setRoles(search.getRoles());
        } else {
            search.unsetRoles();
        }
    }

    public List<ProjectCost> getSearchCosts() {
        return search.getCosts();
    }

    public void setSearchCosts(List<ProjectCost> val) {
        if (search.isCostsSet()) {
            search.setCosts(val);
        }
    }

    public boolean isSearchCostsValid() {
        return search.isCostsSet();
    }

    public void setSearchCostsValid(boolean val) {
        if (val) {
            search.setCosts(search.getCosts());
        } else {
            search.unsetCosts();
        }
    }

    /** Handle an ABC pager letter click: filter objects by specified starting letter */
    public void letterClicked() {
        if (letter != null) {
            UIComponent comp = FacesUtils.getComponent("projects:list");
            HtmlDataTable tabla = (HtmlDataTable) comp;
            tabla.setFirst(0);

            search.setName(letter + "%");
        } else {
            search.unsetName();
        }
    }

    public Character getLetter() {
        return letter;
    }

    public void setLetter(Character letter) {
        this.letter = letter;
    }

    // Getters and setters to handle uploads

    // Getters and setters to manipulate active Project object
    public java.lang.Integer getId() {
        return project.getId();
    }

    public Date getStartDate() {
        return project.getStartDate();
    }

    public void setStartDate(Date startDate) {
        project.setStartDate(startDate);
    }

    public Date getEndDate() {
        return project.getEndDate();
    }

    public void setEndDate(Date endDate) {
        project.setEndDate(endDate);
    }

    public Boolean getOpen() {
        return project.getOpen();
    }

    public void setOpen(Boolean open) {
        project.setOpen(open);
    }

    public String getName() {
        return project.getName();
    }

    public void setName(String name) {
        project.setName(name);
    }

    public String getDescription() {
        return project.getDescription();
    }

    public void setDescription(String description) {
        project.setDescription(description);
    }

    public Boolean getBillable() {
        return project.getBillable();
    }

    public void setBillable(Boolean billable) {
        project.setBillable(billable);
    }

    public Integer getOwnerId() {
        return project.getOwnerId();
    }

    public void setOwnerId(Integer ownerId) {
        project.setOwnerId(ownerId);
    }

    public Integer getDepartmentId() {
        return project.getDepartmentId();
    }

    public void setDepartmentId(Integer departmentId) {
        project.setDepartmentId(departmentId);
    }

    public Date getInsertDate() {
        return project.getInsertDate();
    }

    public void setInsertDate(Date insertDate) {
        project.setInsertDate(insertDate);
    }

    public Date getUpdateDate() {
        return project.getUpdateDate();
    }

    public void setUpdateDate(Date updateDate) {
        project.setUpdateDate(updateDate);
    }

    public Organization getClient() {
        return project.getClient();
    }

    public void setClient(Organization client) {
        project.setClient(client);
    }

    public Set<ProjectRole> getRoles() {
        return project.getRoles();
    }

    public void setRoles(Set<ProjectRole> roles) {
        project.setRoles(roles);
    }

    public Set<ProjectCost> getCosts() {
        return project.getCosts();
    }

    public void setCosts(Set<ProjectCost> costs) {
        project.setCosts(costs);
    }

    /* project - generated by stajanov (do not edit/delete) */

    // Para arreglar un problema que surge en copy from Offer
    public String doBeforeSave() {
        if (project != null) {
            if (project.getRoles() != null) {
                for (ProjectRole pr : project.getRoles()) {
                    if (pr.getProject() == null)
                        pr.setProject(project);

                }
            }

            if (project.getCosts() != null) {
                for (ProjectCost pc : project.getCosts()) {
                    if (pc.getProject() == null)
                        pc.setProject(project);

                }
            }
        }

        return null;
    }

    public String getWorkedHours() {
        long total = project.getWorkedHours();
        String totalWorked = "0";

        if (total != 0) {
            NumberFormat format = NumberFormat.getInstance();
            format.setMaximumFractionDigits(2);
            totalWorked = format.format(total / 60); // Convertimos a horas
        }

        return totalWorked;
    }

    public long getExpectedHours() {

        return project.getExpectedHours();
    }

    public double getPercentageWorked() {

        return project.getPercentageWorked();

    }

    public double getPercentageCosts() {
        return project.getPercentageCosts();
    }

    public String getCostPerProject() {
        BigDecimal total = project.getCostPerProject();
        String totalCost = null;

        NumberFormat format = NumberFormat.getInstance();
        format.setMaximumFractionDigits(2);
        totalCost = format.format(total.doubleValue());

        return totalCost;
    }

    /** Fuerza refresh de pantalla */
    public String reload() {
        return null;
    }

}