/** * 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.contacts; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.faces.component.UIComponent; import javax.faces.component.UIData; import javax.faces.component.html.HtmlDataTable; 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.BillBreakDown; import com.autentia.tnt.businessobject.Department; import com.autentia.tnt.businessobject.EvaluationCriteria; import com.autentia.tnt.businessobject.OfferState; import com.autentia.tnt.businessobject.Organization; import com.autentia.tnt.businessobject.OrganizationISOCategory; import com.autentia.tnt.businessobject.OrganizationType; import com.autentia.tnt.businessobject.Province; import com.autentia.tnt.businessobject.Tag; import com.autentia.tnt.dao.DataAccException; import com.autentia.tnt.dao.SortCriteria; import com.autentia.tnt.dao.search.DepartmentSearch; import com.autentia.tnt.dao.search.OrganizationSearch; import com.autentia.tnt.manager.admin.DepartmentManager; import com.autentia.tnt.manager.admin.ProvinceManager; import com.autentia.tnt.manager.contacts.OrganizationISOCategoryManager; import com.autentia.tnt.manager.contacts.OrganizationManager; import com.autentia.tnt.manager.contacts.OrganizationTypeManager; import com.autentia.tnt.manager.security.Permission; import com.autentia.tnt.manager.tags.TagManager; 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; import java.util.Collection; /** * UI bean for Organization objects. * * @author stajanov code generator */ public class OrganizationBean extends BaseBean { /** Serial version field */ private static final long serialVersionUID = -1L; /** JSF outcome to go to organization contacts */ private static final String OUTCOME_SEARCH_CONTACTS = "searchContacts"; /** * Method to navigate to organization's contacts * * @return OrganizationBean#OUTCOME_SEARCH_CONTACTS */ public String searchContacts() { // Remove ourself from session to avoid Hibernate errors FacesUtils.removeFromSession("organizationBean"); // Set an active search in contactBean to show only contacts related to // this organization UIData list = (UIData) FacesUtils.getComponent("organizations:list"); Organization org = (Organization) list.getRowData(); ContactBean contactBean = (ContactBean) FacesUtils .getBean("contactBean"); // TODO contactBean.getSearch().setOrganization(org); return OUTCOME_SEARCH_CONTACTS; } /* organization - generated by stajanov (do not edit/delete) */ public EvaluationCriteria getEvaluationCriteria() { return organization.getEvaluationCriteria(); } public void setEvaluationCriteria(EvaluationCriteria evaluationCriteria) { organization.setEvaluationCriteria(evaluationCriteria); } /** Logger */ private static final Log log = LogFactory.getLog(OrganizationBean.class); /** Active search object */ private OrganizationSearch search = new OrganizationSearch(); /** Manager */ private static OrganizationManager manager = OrganizationManager.getDefault(); /** Upload service */ private static final Uploader uploader = UploaderFactory.getInstance("organization"); /** Active Organization object */ private Organization organization; /** Default sort column */ private String sortColumn = "name"; /** Default sort order */ private boolean sortAscending = true; /** Quick search letter for ABC pager control */ private Character letter; /** * List organizations. Order depends on Faces parameter sort. * @return the list of all organizations sorted by requested criterion */ public List<Organization> getAll(){ return manager.getAllEntities(search, new SortCriteria(sortColumn, sortAscending) ); } // Getters to list possible values of related entities /** * Get the list of all types * @return the list of all types */ public List<SelectItem> getTypes(){ List<OrganizationType> refs = OrganizationTypeManager.getDefault().getAllEntities( null, new SortCriteria("name") ); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for( OrganizationType ref : refs ){ ret.add( new SelectItem( ref, ref.getName() ) ); } return ret; } /** * Get the list of all categorys * @return the list of all categorys */ public List<SelectItem> getCategorys(){ List<OrganizationISOCategory> refs = OrganizationISOCategoryManager.getDefault().getAllEntities( null, new SortCriteria("name") ); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for( OrganizationISOCategory ref : refs ){ ret.add( new SelectItem( ref, ref.getName() ) ); } return ret; } /** * Get the list of all EvaluationCriteria values * * @return the list of all EvaluationCriteria values */ public List<SelectItem> getEvaluationCriterias() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); EvaluationCriteria[] vals = EvaluationCriteria.values(); ret.add(new SelectItem(null, FacesUtils.formatMessage("organization.unknown" ))); for (EvaluationCriteria val : vals) { ret.add(new SelectItem(val, FacesUtils.formatMessage("EvaluationCriteria." + val.name()))); } return ret; } /** * Get the list of all provinces * @return the list of all provinces */ public List<SelectItem> getProvinces(){ List<Province> refs = ProvinceManager.getDefault().getAllEntities( null, new SortCriteria("name") ); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for( Province 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 Organization */ public boolean isCreateAvailable() { return SpringUtils.isRolePermissionGranted(Permission.Entity_Create(Organization.class)); } /** * Whether or not edit button is available for user * @return true if user can edit current object */ public boolean isEditAvailable() { return SpringUtils.isAclPermissionGranted(organization,BasePermission.WRITE); } /** * Whether or not delete button is available for user * @return true if user can delete current object */ public boolean isDeleteAvailable() { return (organization.getId()!=null) && SpringUtils.isAclPermissionGranted(organization,BasePermission.DELETE); } /** * Go to create page * @return forward to CREATE page */ public String create(){ organization = new Organization(); // se inserta el departamento 'Indefinido' en caso de existir final DepartmentSearch departmentSearch = new DepartmentSearch(); departmentSearch.setName("Indefinido"); List<Department> departments = DepartmentManager.getDefault().getAllEntities(departmentSearch, new SortCriteria("name", true)); Set<Department> departmentsSet = new HashSet<Department>(); for (Department department: departments){ departmentsSet.add(department); } organization.setDepartments(departmentsSet); return NavigationResults.CREATE; } /** * Go to detail page * @return forward to DETAIL page */ public String detail(){ Integer id = Integer.parseInt( FacesUtils.getRequestParameter(ROW_ID) ); organization = manager.getEntityById(id); return SpringUtils.isAclPermissionGranted( organization, BasePermission.WRITE ) ? NavigationResults.EDIT : NavigationResults.DETAIL; } /** * Save bean and stay on it * @return forward to list page */ public String save(){ doBeforeSave(); for (Department department: organization.getDepartments()) { if (department.getId() == null) { DepartmentManager.getDefault().insertEntity(department); } else { DepartmentManager.getDefault().updateEntityWithoutTrack(department); } } if( organization.getId()==null ){ manager.insertEntity(organization); } else { manager.updateEntity(organization); } // Calls an after save action String result = doAfterSave(NavigationResults.LIST); // Unselect object organization = null; return result; } /** * Delete bean and go back to beans list * @return forward to LIST page */ public String delete(){ try{ manager.deleteEntity(organization); }catch(DataAccException daex){ FacesUtils.addErrorMessage("organization", "organization.deleteRestrict", null); return NavigationResults.EDIT; } organization = null; return NavigationResults.LIST; } /** * Go back to beans list * @return forward to LIST page */ public String list(){ return NavigationResults.LIST; } /** * Reset search criteria * @return forward to LIST page */ public String reset(){ search.reset(); return 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 isOrganizationSelected(){ return organization!=null; } public String createDepartment() { final Department department = new Department(); if (organization.getDepartments() == null) { organization.setDepartments(new HashSet<Department>()); } organization.getDepartments().add(department); return null; } public String deleteDepartment() { final UIData table = (UIData) FacesUtils.getComponent("organization:departments"); final Department toDelete = (Department) table.getRowData(); organization.getDepartments().remove(toDelete); return NavigationResults.EDIT; } // 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 OrganizationSearch getSearch(){ return search; } 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 getSearchCif(){ return search.getCif(); } public void setSearchCif( String val ){ if( search.isCifSet() ) { search.setCif( val ); } } public boolean isSearchCifValid(){ return search.isCifSet(); } public void setSearchCifValid( boolean val ){ if( val ){ search.setCif( search.getCif() ); } else { search.unsetCif(); } } public String getSearchStreet(){ return search.getStreet(); } public void setSearchStreet( String val ){ if( search.isStreetSet() ) { search.setStreet( val ); } } public boolean isSearchStreetValid(){ return search.isStreetSet(); } public void setSearchStreetValid( boolean val ){ if( val ){ search.setStreet( search.getStreet() ); } else { search.unsetStreet(); } } public String getSearchNumber(){ return search.getNumber(); } public void setSearchNumber( String val ){ if( search.isNumberSet() ) { search.setNumber( val ); } } public boolean isSearchNumberValid(){ return search.isNumberSet(); } public void setSearchNumberValid( boolean val ){ if( val ){ search.setNumber( search.getNumber() ); } else { search.unsetNumber(); } } public String getSearchLocator(){ return search.getLocator(); } public void setSearchLocator( String val ){ if( search.isLocatorSet() ) { search.setLocator( val ); } } public boolean isSearchLocatorValid(){ return search.isLocatorSet(); } public void setSearchLocatorValid( boolean val ){ if( val ){ search.setLocator( search.getLocator() ); } else { search.unsetLocator(); } } public String getSearchPostalCode(){ return search.getPostalCode(); } public void setSearchPostalCode( String val ){ if( search.isPostalCodeSet() ) { search.setPostalCode( val ); } } public boolean isSearchPostalCodeValid(){ return search.isPostalCodeSet(); } public void setSearchPostalCodeValid( boolean val ){ if( val ){ search.setPostalCode( search.getPostalCode() ); } else { search.unsetPostalCode(); } } public String getSearchCity(){ return search.getCity(); } public void setSearchCity( String val ){ if( search.isCitySet() ) { search.setCity( val ); } } public boolean isSearchCityValid(){ return search.isCitySet(); } public void setSearchCityValid( boolean val ){ if( val ){ search.setCity( search.getCity() ); } else { search.unsetCity(); } } public String getSearchState(){ return search.getState(); } public void setSearchState( String val ){ if( search.isStateSet() ) { search.setState( val ); } } public boolean isSearchStateValid(){ return search.isStateSet(); } public void setSearchStateValid( boolean val ){ if( val ){ search.setState( search.getState() ); } else { search.unsetState(); } } public String getSearchCountry(){ return search.getCountry(); } public void setSearchCountry( String val ){ if( search.isCountrySet() ) { search.setCountry( val ); } } public boolean isSearchCountryValid(){ return search.isCountrySet(); } public void setSearchCountryValid( boolean val ){ if( val ){ search.setCountry( search.getCountry() ); } else { search.unsetCountry(); } } public String getSearchPhone(){ return search.getPhone(); } public void setSearchPhone( String val ){ if( search.isPhoneSet() ) { search.setPhone( val ); } } public boolean isSearchPhoneValid(){ return search.isPhoneSet(); } public void setSearchPhoneValid( boolean val ){ if( val ){ search.setPhone( search.getPhone() ); } else { search.unsetPhone(); } } public String getSearchFax(){ return search.getFax(); } public void setSearchFax( String val ){ if( search.isFaxSet() ) { search.setFax( val ); } } public boolean isSearchFaxValid(){ return search.isFaxSet(); } public void setSearchFaxValid( boolean val ){ if( val ){ search.setFax( search.getFax() ); } else { search.unsetFax(); } } public String getSearchEmail(){ return search.getEmail(); } public void setSearchEmail( String val ){ if( search.isEmailSet() ) { search.setEmail( val ); } } public boolean isSearchEmailValid(){ return search.isEmailSet(); } public void setSearchEmailValid( boolean val ){ if( val ){ search.setEmail( search.getEmail() ); } else { search.unsetEmail(); } } public String getSearchWebsite(){ return search.getWebsite(); } public void setSearchWebsite( String val ){ if( search.isWebsiteSet() ) { search.setWebsite( val ); } } public boolean isSearchWebsiteValid(){ return search.isWebsiteSet(); } public void setSearchWebsiteValid( boolean val ){ if( val ){ search.setWebsite( search.getWebsite() ); } else { search.unsetWebsite(); } } public String getSearchFtpsite(){ return search.getFtpsite(); } public void setSearchFtpsite( String val ){ if( search.isFtpsiteSet() ) { search.setFtpsite( val ); } } public boolean isSearchFtpsiteValid(){ return search.isFtpsiteSet(); } public void setSearchFtpsiteValid( boolean val ){ if( val ){ search.setFtpsite( search.getFtpsite() ); } else { search.unsetFtpsite(); } } public String getSearchNotes(){ return search.getNotes(); } public void setSearchNotes( String val ){ if( search.isNotesSet() ) { search.setNotes( val ); } } public boolean isSearchNotesValid(){ return search.isNotesSet(); } public void setSearchNotesValid( boolean val ){ if( val ){ search.setNotes( search.getNotes() ); } else { search.unsetNotes(); } } 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 OrganizationType getSearchType(){ return search.getType(); } public void setSearchType( OrganizationType val ){ if( search.isTypeSet() ) { search.setType( val ); } } public boolean isSearchTypeValid(){ return search.isTypeSet(); } public void setSearchTypeValid( boolean val ){ if( val ){ search.setType( search.getType() ); } else { search.unsetType(); } } public OrganizationISOCategory getSearchCategory(){ return search.getCategory(); } public void setSearchCategory( OrganizationISOCategory val ){ if( search.isCategorySet() ) { search.setCategory( val ); } } public boolean isSearchCategoryValid(){ return search.isCategorySet(); } public void setSearchCategoryValid( boolean val ){ if( val ){ search.setCategory( search.getCategory() ); } else { search.unsetCategory(); } } public EvaluationCriteria getSearchEvaluationCriteria(){ return search.getEvaluationCriteria(); } public void setSearchEvaluationCriteria( EvaluationCriteria val ){ if( search.isEvaluationCriteriaSet() ) { search.setEvaluationCriteria( val ); } } public boolean isSearchEvaluationCriteriaValid(){ return search.isEvaluationCriteriaSet(); } public void setSearchEvaluationCriteriaValid( boolean val ){ if( val ){ search.setEvaluationCriteria( search.getEvaluationCriteria() ); } else { search.unsetEvaluationCriteria(); } } public Province getSearchProvince(){ return search.getProvince(); } public void setSearchProvince( Province val ){ if( search.isProvinceSet() ) { search.setProvince( val ); } } public boolean isSearchProvinceValid(){ return search.isProvinceSet(); } public void setSearchProvinceValid( boolean val ){ if( val ){ search.setProvince( search.getProvince() ); } else { search.unsetProvince(); } } /** Handle an ABC pager letter click: filter objects by specified starting letter */ public void letterClicked() { if( letter!=null ){ UIComponent comp = FacesUtils.getComponent("organizations: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 Organization object public java.lang.Integer getId() { return organization.getId(); } public String getName() { return organization.getName(); } public void setName( String name ) { organization.setName( name ); } public String getCif() { return organization.getCif(); } public void setCif( String cif ) { organization.setCif( cif ); } public String getStreet() { return organization.getStreet(); } public void setStreet( String street ) { organization.setStreet( street ); } public String getNumber() { return organization.getNumber(); } public void setNumber( String number ) { organization.setNumber( number ); } public String getLocator() { return organization.getLocator(); } public void setLocator( String locator ) { organization.setLocator( locator ); } public String getPostalCode() { return organization.getPostalCode(); } public void setPostalCode( String postalCode ) { organization.setPostalCode( postalCode ); } public String getCity() { return organization.getCity(); } public void setCity( String city ) { organization.setCity( city ); } public String getState() { return organization.getState(); } public void setState( String state ) { organization.setState( state ); } public String getCountry() { return organization.getCountry(); } public void setCountry( String country ) { organization.setCountry( country ); } public String getPhone() { return organization.getPhone(); } public void setPhone( String phone ) { organization.setPhone( phone ); } public String getFax() { return organization.getFax(); } public void setFax( String fax ) { organization.setFax( fax ); } public String getEmail() { return organization.getEmail(); } public void setEmail( String email ) { organization.setEmail( email ); } public String getWebsite() { return organization.getWebsite(); } public void setWebsite( String website ) { organization.setWebsite( website ); } public String getFtpsite() { return organization.getFtpsite(); } public void setFtpsite( String ftpsite ) { organization.setFtpsite( ftpsite ); } public String getNotes() { return organization.getNotes(); } public void setNotes( String notes ) { organization.setNotes( notes ); } public Integer getOwnerId() { return organization.getOwnerId(); } public void setOwnerId( Integer ownerId ) { organization.setOwnerId( ownerId ); } public Integer getDepartmentId() { return organization.getDepartmentId(); } public void setDepartmentId( Integer departmentId ) { organization.setDepartmentId( departmentId ); } public Date getInsertDate() { return organization.getInsertDate(); } public void setInsertDate( Date insertDate ) { organization.setInsertDate( insertDate ); } public Date getUpdateDate() { return organization.getUpdateDate(); } public void setUpdateDate( Date updateDate ) { organization.setUpdateDate( updateDate ); } public OrganizationType getType() { return organization.getType(); } public void setType( OrganizationType type ) { organization.setType( type ); } public OrganizationISOCategory getCategory() { return organization.getCategory(); } public void setCategory( OrganizationISOCategory category ) { organization.setCategory( category ); } public Province getProvince() { return organization.getProvince(); } public void setProvince( Province province ) { organization.setProvince( province ); } public String doAfterSave(String result) { return result; } private Department selectedDepartment; public Department getSelectedDepartment() { return selectedDepartment; } public void setSelectedDepartment(Department selectedDepartment) { this.selectedDepartment = selectedDepartment; } public List<SelectItem> getAllDepartments() { final List<Department> refs = DepartmentManager.getDefault().getAllEntities(null, new SortCriteria("name")); final List<SelectItem> ret = new ArrayList<SelectItem>(); for (Department ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } public Set<Department> getCompanyDepartments () { return organization.getDepartments(); } public void setCompanyDepartments(Set<Department> departments) { organization.setDepartments(departments); } private Tag selectedTag; public Tag getSelectedTag() { return selectedTag; } public void setSelectedTag(Tag selectedTag) { this.selectedTag = selectedTag; } public List<SelectItem> getAllTags() { final List<Tag> refs = TagManager.getDefault().getAllEntities(null, new SortCriteria("id")); final List<SelectItem> ret = new ArrayList<SelectItem>(); for (Tag ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } public String addTag() { organization.getTags().add(getSelectedTag()); return NavigationResults.EDIT; } public Set<Tag> getDepartmentTags () { return organization.getTags(); } public void setTags(Set<Tag> tags) { organization.setTags(tags); } public String deleteTag() { final UIData table = (UIData) FacesUtils.getComponent("organization:tags"); final Tag toDelete = (Tag) table.getRowData(); organization.getTags().remove(toDelete); return NavigationResults.EDIT; } public boolean isAreTagsToSelect() { return !getAllTags().isEmpty(); } public boolean isAreTagsSelected() { return !organization.getTags().isEmpty(); } public boolean isAreDepartmentsSelected() { return !organization.getDepartments().isEmpty(); } }