/** * 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.businessobject; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.autentia.tnt.dao.ITransferObject; /** * Transfer object to store Projects * @author stajanov code generator */ /** * @author alumno * */ public class Project implements Serializable, ITransferObject { /** Serial version field */ private static final long serialVersionUID = -1L; private static final Log log = LogFactory.getLog(Project.class); /** * Test if a project is finished as of now * @return true if project is finished */ public boolean isFinished(){ return !open; } /* project - generated by stajanov (do not edit/delete) */ // Fields private Integer id; private Date startDate; private Date endDate; private Boolean open; private String name; private String description; private Boolean billable; private Integer ownerId; private Integer departmentId; private Date insertDate; private Date updateDate; private Organization client; private Set<ProjectRole> roles = new HashSet<ProjectRole>(); private Set<ProjectCost> costs = new HashSet<ProjectCost>(); private User user; // Setters and getters public Integer getId() { return id; } public void setId( Integer id ) { this.id = id; } public Date getStartDate() { return startDate; } public void setStartDate( Date startDate ) { this.startDate = startDate; } public Date getEndDate() { return endDate; } public void setEndDate( Date endDate ) { this.endDate = endDate; } public Boolean getOpen() { return open; } public void setOpen( Boolean open ) { this.open = open; } public String getName() { return name; } public void setName( String name ) { this.name = name; } public String getDescription() { return description; } public void setDescription( String description ) { this.description = description; } public Boolean getBillable() { return billable; } public void setBillable( Boolean billable ) { this.billable = billable; } public Integer getOwnerId() { return ownerId; } public void setOwnerId( Integer ownerId ) { this.ownerId = ownerId; } public Integer getDepartmentId() { return departmentId; } public void setDepartmentId( Integer departmentId ) { this.departmentId = departmentId; } public Date getInsertDate() { return insertDate; } public void setInsertDate( Date insertDate ) { this.insertDate = insertDate; } public Date getUpdateDate() { return updateDate; } public void setUpdateDate( Date updateDate ) { this.updateDate = updateDate; } public Organization getClient() { return client; } public void setClient( Organization client ) { this.client = client; } public Set<ProjectRole> getRoles() { return roles; } public void setRoles( Set<ProjectRole> roles ) { this.roles = roles; } public Set<ProjectCost> getCosts() { return costs; } public void setCosts( Set<ProjectCost> costs ) { this.costs = costs; } @Override public boolean equals( Object that ) { try { if (that == null) return false; else return this.getId().equals( ((Project)that).getId() ); } catch (Exception e) { return false; } } @Override public int hashCode() { if(this.getId()==null) return super.hashCode(); else return this.getId().intValue(); } /* project - generated by stajanov (do not edit/delete) */ public BigDecimal getTotalCost(){ BigDecimal ret = new BigDecimal(0); if( getCosts()!=null ){ for( ProjectCost cost : getCosts() ){ BigDecimal c = cost.getCost(); if( c!=null ){ ret = ret.add( c ); } } } if( getRoles()!=null ){ for( ProjectRole role : getRoles() ){ BigDecimal cph = role.getCostPerHour(); if( cph!=null ){ BigDecimal eh = new BigDecimal( role.getExpectedHours() ); ret = ret.add( cph.multiply( eh ) ); } } } return ret; } public List<Integer> getOwnersId() { // TODO Auto-generated method stub return null; } /** * @return Return the total worked time in minutes */ public long getWorkedHours(){ long total = 0; if (this.getRoles()!=null){ for (ProjectRole role : this.getRoles()){ if(role.getActivities()!=null){ for (Activity activity : role.getActivities()){ total += activity.getDuration(); } } } } return total; } public long getExpectedHours(){ long total = 0; if (this.getRoles()!=null){ for (ProjectRole role : this.getRoles()){ total += role.getExpectedHours(); } } return total; } public double getPercentageWorked(){ double expected = this.getExpectedHours(); double worked = (double)this.getWorkedHours()/60; if (worked == 0){ return 0; } else if (expected == 0){ return 1; } else { return worked/expected; } } public double getPercentageCosts(){ double finalcost = this.getCostPerProject().doubleValue(); double expected = this.getTotalCost().doubleValue(); if (finalcost == 0){ return 0; } else if (expected == 0){ return 1; } else { return finalcost/expected; } } public BigDecimal getCostPerProject(){ BigDecimal total = new BigDecimal(0); Set<ProjectRole> roles = this.getRoles(); if (roles != null){ for (ProjectRole role : roles){ Set<Activity> activities = role.getActivities(); if (activities != null){ for (Activity activity : activities){ BigDecimal converse = new BigDecimal(activity.getUser().getCostPerHour()); BigDecimal div = new BigDecimal( activity.getDuration()); BigDecimal ret = div.multiply(converse); total = total.add(ret.divide(new BigDecimal(60),2,BigDecimal.ROUND_HALF_UP));// += activity.getDuration() * activity.getUser().getCostPerHour()/ 60 ; } } } } return total; } }