/**
* 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;
}
}