/** * 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.activity; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.faces.event.ActionEvent; import javax.faces.event.ValueChangeEvent; import javax.faces.model.SelectItem; import org.acegisecurity.acls.domain.BasePermission; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.autentia.tnt.bean.BaseBean; import com.autentia.tnt.bean.NavigationResults; import com.autentia.tnt.businessobject.Occupation; import com.autentia.tnt.businessobject.Organization; import com.autentia.tnt.businessobject.Project; import com.autentia.tnt.businessobject.User; import com.autentia.tnt.dao.SortCriteria; import com.autentia.tnt.dao.hibernate.OrganizationDAO; import com.autentia.tnt.dao.search.OccupationSearch; import com.autentia.tnt.manager.activity.OccupationManager; import com.autentia.tnt.manager.admin.ProjectManager; import com.autentia.tnt.manager.admin.UserManager; import com.autentia.tnt.manager.security.Permission; import com.autentia.tnt.upload.Uploader; import com.autentia.tnt.upload.UploaderFactory; import com.autentia.tnt.util.ConfigurationUtil; import com.autentia.tnt.util.FacesUtils; import com.autentia.tnt.util.SpringUtils; public class OccupationBean extends BaseBean { private OrganizationDAO organizationDAO = new OrganizationDAO(); /** * Get the list of all organizations * @return the list of all organizations */ public List<SelectItem> getOrganizations(){ ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); List<Organization> refs = organizationDAO .search( new SortCriteria("name") ); for( Organization ref : refs ){ ret.add( new SelectItem( ref, ref.getName() ) ); } return ret; } /** Selected organization **/ private Organization selectedOrganization; public Organization getSelectedOrganization(){ if(occupation!=null && occupation.getProject()!=null) { if(selectedOrganization == null) { selectedOrganization = occupation.getProject().getClient(); } return selectedOrganization; } if(selectedOrganization==null) { OrganizationDAO organizationDAO = new OrganizationDAO(); selectedOrganization = organizationDAO.getById(ConfigurationUtil.getDefault().getIdOurCompany()); } return selectedOrganization; } public void setSelectedOrganization( Organization organization ){ selectedOrganization = organization; } public List<SelectItem> getProjectsBySelectedOrganization() { List<Project> refs = ProjectManager.getDefault().getProjectsByOrganization(getSelectedOrganization()); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for( Object ref : refs ){ Project proy = (Project)ref; String asterisco = proy.isFinished()?"(*)":""; ret.add( new SelectItem( proy, proy.getName() + asterisco )); } return ret; } public void onSelectedOrganizationChanged( ValueChangeEvent event ){ setSelectedOrganization( (Organization)event.getNewValue() ); FacesUtils.renderResponse(); } public void onSelectedOrganizationSearchChanged( ValueChangeEvent event ){ Organization now = (Organization)event.getNewValue(); if(now==null) return; setSearchProjectValid(true); setSelectedOrganization( now ); FacesUtils.renderResponse(); } public void onEditSelected( ActionEvent event ){ setSelectedOrganization( null ); } /* occupation - generated by stajanov (do not edit/delete) */ /** Logger */ private static final Log log = LogFactory.getLog(OccupationBean.class); /** Active search object */ private OccupationSearch search = new OccupationSearch(); /** Manager */ private static OccupationManager manager = OccupationManager.getDefault(); /** Upload service */ private static final Uploader uploader = UploaderFactory.getInstance("occupation"); /** Active Occupation object */ private Occupation occupation; /** Default sort column */ private String sortColumn = "startDate"; /** Default sort order */ private boolean sortAscending = false; /** * List occupations. Order depends on Faces parameter sort. * @return the list of all occupations sorted by requested criterion */ public List<Occupation> getAll(){ return manager.getAllEntities(search, new SortCriteria(sortColumn, sortAscending) ); } // Getters to list possible values of related entities /** * Get the list of all users * @return the list of all users */ public List<SelectItem> getUsers(){ List<User> refs = UserManager.getDefault().getAllEntities( null, new SortCriteria("name") ); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for( User ref : refs ){ ret.add( new SelectItem( ref, ref.getName() ) ); } return ret; } /** * Get the list of all projects * @return the list of all projects */ public List<SelectItem> getProjects(){ List<Project> refs = ProjectManager.getDefault().getAllEntities( null, new SortCriteria("name") ); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for( Project 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) /** * Whether or not create button is available for user * @return true if user can create objects of type Occupation */ public boolean isCreateAvailable() { return SpringUtils.isRolePermissionGranted(Permission.Entity_Create(Occupation.class)); } /** * Whether or not edit button is available for user * @return true if user can edit current object */ public boolean isEditAvailable() { return SpringUtils.isAclPermissionGranted(occupation,BasePermission.WRITE); } /** * Whether or not delete button is available for user * @return true if user can delete current object */ public boolean isDeleteAvailable() { return (occupation.getId()!=null) && SpringUtils.isAclPermissionGranted(occupation,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(){ selectedOrganization=null; occupation = new Occupation(); return NavigationResults.CREATE; } /** * Go to detail page * @return forward to DETAIL page */ public String detail(){ Integer id = Integer.parseInt( FacesUtils.getRequestParameter(ROW_ID) ); occupation = manager.getEntityById(id); selectedOrganization=null; return SpringUtils.isAclPermissionGranted( occupation, BasePermission.WRITE ) ? NavigationResults.EDIT : NavigationResults.DETAIL; } /** * Save bean and stay on it * @return forward to list page */ public String save(){ doBeforeSave(); if( occupation.getId()==null ){ manager.insertEntity(occupation); } else { manager.updateEntity(occupation); } // Calls an after save action String result = doAfterSave(NavigationResults.LIST); // Unselect object occupation = null; return result; } /** * Delete bean and go back to beans list * @return forward to LIST page */ public String delete(){ manager.deleteEntity(occupation); occupation = 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 isOccupationSelected(){ return occupation!=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 OccupationSearch getSearch(){ return search; } 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 java.lang.Integer getSearchStartDuration(){ return search.getStartDuration(); } public void setSearchStartDuration( java.lang.Integer val ){ if( val!=null ){ search.setStartDuration( val ); } else { search.unsetStartDuration(); } } public boolean isSearchStartDurationValid(){ return search.isStartDurationSet(); } public void setSearchStartDurationValid( boolean val ){ if( val ){ search.setStartDuration( search.getStartDuration() ); } else { search.unsetStartDuration(); } } public java.lang.Integer getSearchEndDuration(){ return search.getEndDuration(); } public void setSearchEndDuration( java.lang.Integer val ){ if( val!=null ){ search.setEndDuration( val ); } else { search.unsetEndDuration(); } } public boolean isSearchEndDurationValid(){ return search.isEndDurationSet(); } public void setSearchEndDurationValid( boolean val ){ if( val ){ search.setEndDuration( search.getEndDuration() ); } else { search.unsetEndDuration(); } } 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 User getSearchUser(){ return search.getUser(); } public void setSearchUser( User val ){ if( search.isUserSet() ) { search.setUser( val ); } } public boolean isSearchUserValid(){ return search.isUserSet(); } public void setSearchUserValid( boolean val ){ if( val ){ search.setUser( search.getUser() ); } else { search.unsetUser(); } } public Project getSearchProject(){ return search.getProject(); } public void setSearchProject( Project val ){ if( search.isProjectSet() ) { search.setProject( val ); } } public boolean isSearchProjectValid(){ return search.isProjectSet(); } public void setSearchProjectValid( boolean val ){ if( val ){ search.setProject( search.getProject() ); } else { search.unsetProject(); } } // Getters and setters to handle uploads // Getters and setters to manipulate active Occupation object public java.lang.Integer getId() { return occupation.getId(); } public Date getStartDate() { return occupation.getStartDate(); } public void setStartDate( Date startDate ) { occupation.setStartDate( startDate ); } public Date getEndDate() { return occupation.getEndDate(); } public void setEndDate( Date endDate ) { occupation.setEndDate( endDate ); } public String getDescription() { return occupation.getDescription(); } public void setDescription( String description ) { occupation.setDescription( description ); } public int getDuration() { return occupation.getDuration(); } public void setDuration( int duration ) { occupation.setDuration( duration ); } public Integer getOwnerId() { return occupation.getOwnerId(); } public void setOwnerId( Integer ownerId ) { occupation.setOwnerId( ownerId ); } public Integer getDepartmentId() { return occupation.getDepartmentId(); } public void setDepartmentId( Integer departmentId ) { occupation.setDepartmentId( departmentId ); } public Date getInsertDate() { return occupation.getInsertDate(); } public void setInsertDate( Date insertDate ) { occupation.setInsertDate( insertDate ); } public Date getUpdateDate() { return occupation.getUpdateDate(); } public void setUpdateDate( Date updateDate ) { occupation.setUpdateDate( updateDate ); } public User getUser() { return occupation.getUser(); } public void setUser( User user ) { occupation.setUser( user ); } public Project getProject() { return occupation.getProject(); } public void setProject( Project project ) { occupation.setProject( project ); } 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 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 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 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(); } } /* occupation - generated by stajanov (do not edit/delete) */ public String insertOccupation() { Integer id = Integer.parseInt( FacesUtils.getRequestParameter(ROW_ID) ); occupation = new Occupation(); UserManager userManager = UserManager.getDefault(); User user = userManager.getEntityById(id); occupation.setUser(user); return "insertOccupation"; } }