/**
* 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.util.ArrayList;
import java.util.Date;
import java.util.List;
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.Collaborator;
import com.autentia.tnt.businessobject.Contact;
import com.autentia.tnt.businessobject.Organization;
import com.autentia.tnt.businessobject.User;
import com.autentia.tnt.dao.SortCriteria;
import com.autentia.tnt.dao.search.CollaboratorSearch;
import com.autentia.tnt.manager.admin.UserManager;
import com.autentia.tnt.manager.contacts.CollaboratorManager;
import com.autentia.tnt.manager.contacts.ContactManager;
import com.autentia.tnt.manager.contacts.OrganizationManager;
import com.autentia.tnt.manager.security.Permission;
import com.autentia.tnt.upload.Uploader;
import com.autentia.tnt.upload.UploaderFactory;
import com.autentia.tnt.util.FacesUtils;
import com.autentia.tnt.util.SpringUtils;
public class CollaboratorBean extends BaseBean {
/** Logger */
private static final Log log = LogFactory.getLog(CollaboratorBean.class);
/** Active search object */
private CollaboratorSearch search = new CollaboratorSearch();
/** Manager */
private static CollaboratorManager manager = CollaboratorManager.getDefault();
/** Upload service */
private static final Uploader uploader = UploaderFactory.getInstance("collaborator");
/** Active Collaborator object */
private Collaborator collaborator;
/** Default sort column */
private String sortColumn = "id";
/** Default sort order */
private boolean sortAscending = true;
/**
* List collaborators. Order depends on Faces parameter sort.
* @return the list of all collaborators sorted by requested criterion
*/
public List<Collaborator> 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>();
ret.add(new SelectItem(null, ""));
for( User ref : refs ){
ret.add( new SelectItem(ref, ref.getName() ) );
}
return ret;
}
/**
* Get the list of all contacts
* @return the list of all contacts
*/
public List<SelectItem> getContacts(){
List<Contact> refs = ContactManager.getDefault().getAllEntities( null, new SortCriteria("name") );
ArrayList<SelectItem> ret = new ArrayList<SelectItem>();
ret.add(new SelectItem(null, ""));
for( Contact ref : refs ){
ret.add( new SelectItem(ref, ref.getName() ) );
}
return ret;
}
/**
* Get the list of all organizations
* @return the list of all organizations
*/
public List<SelectItem> getOrganizations(){
List<Organization> refs = OrganizationManager.getDefault().getAllEntities( null, new SortCriteria("name") );
ArrayList<SelectItem> ret = new ArrayList<SelectItem>();
ret.add(new SelectItem(null, ""));
for( Organization 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 Collaborator
*/
public boolean isCreateAvailable()
{
return SpringUtils.isRolePermissionGranted(Permission.Entity_Create(Collaborator.class));
}
/**
* Whether or not edit button is available for user
* @return true if user can edit current object
*/
public boolean isEditAvailable()
{
return SpringUtils.isAclPermissionGranted(collaborator,BasePermission.WRITE);
}
/**
* Whether or not delete button is available for user
* @return true if user can delete current object
*/
public boolean isDeleteAvailable()
{
return (collaborator.getId()!=null) &&
SpringUtils.isAclPermissionGranted(collaborator,BasePermission.DELETE);
}
/**
* Go to create page
* @return forward to CREATE page
*/
public String create(){
collaborator = new Collaborator();
return NavigationResults.CREATE;
}
/**
* Go to detail page
* @return forward to DETAIL page
*/
public String detail(){
Integer id = Integer.parseInt( FacesUtils.getRequestParameter(ROW_ID) );
collaborator = manager.getEntityById(id);
return SpringUtils.isAclPermissionGranted( collaborator, BasePermission.WRITE )
? NavigationResults.EDIT
: NavigationResults.DETAIL;
}
/**
* Save bean and stay on it
* @return forward to list page
*/
public String save(){
if (doBeforeSave() != null) {
return "";
}
if( collaborator.getId()==null ){
manager.insertEntity(collaborator);
} else {
manager.updateEntity(collaborator);
}
// Calls an after save action
String result = doAfterSave(NavigationResults.LIST);
// Unselect object
collaborator = null;
return result;
}
public String doBeforeSave() {
// comprobacion de que solo se ha seleccionado o un usuario, o un contacto o una organizacion
int numRefs = 0;
if (collaborator.getUser() != null){
numRefs++;
CollaboratorSearch collaboratorSearch = new CollaboratorSearch();
collaboratorSearch.setUser(this.getUser());
if (!CollaboratorManager.getDefault().getAllEntities( collaboratorSearch, new SortCriteria("id")).isEmpty()) {
FacesUtils.addErrorMessage(null, "collaborator.error.duplicateUserCollaborator");
return "Fail";
}
}
if (collaborator.getContact() != null){
numRefs++;
CollaboratorSearch collaboratorSearch = new CollaboratorSearch();
collaboratorSearch.setContact(this.getContact());
if (!CollaboratorManager.getDefault().getAllEntities( collaboratorSearch, new SortCriteria("id")).isEmpty()) {
FacesUtils.addErrorMessage(null, "collaborator.error.duplicateContactCollaborator");
return "Fail";
}
}
if (collaborator.getOrganization() != null) {
numRefs++;
CollaboratorSearch collaboratorSearch = new CollaboratorSearch();
collaboratorSearch.setOrganization(this.getOrganization());
if (!CollaboratorManager.getDefault().getAllEntities( collaboratorSearch, new SortCriteria("id")).isEmpty()) {
FacesUtils.addErrorMessage(null, "collaborator.error.duplicateOrganizationCollaborator");
return "Fail";
}
}
if (numRefs != 1){
FacesUtils.addErrorMessage(null, "collaborator.error.justOne");
return "Fail";
}
return null;
}
/**
* Delete bean and go back to beans list
* @return forward to LIST page
*/
public String delete(){
try {
manager.deleteEntity(collaborator);
} catch (Exception e) {
FacesUtils.addErrorMessage(null,"collaborator.error.cannotDelete", collaborator.getName());
}
collaborator = 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 isCollaboratorSelected(){
return collaborator!=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 CollaboratorSearch getSearch(){
return search;
}
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 Contact getSearchContact(){
return search.getContact();
}
public void setSearchContact( Contact val ){
if( search.isContactSet() ) {
search.setContact( val );
}
}
public boolean isSearchContactValid(){
return search.isContactSet();
}
public void setSearchContactValid( boolean val ){
if( val ){
search.setContact( search.getContact() );
} else {
search.unsetContact();
}
}
public Organization getSearchOrganization(){
return search.getOrganization();
}
public void setSearchOrganization( Organization val ){
if( search.isOrganizationSet() ) {
search.setOrganization( val );
}
}
public boolean isSearchOrganizationValid(){
return search.isOrganizationSet();
}
public void setSearchOrganizationValid( boolean val ){
if( val ){
search.setOrganization( search.getOrganization() );
} else {
search.unsetOrganization();
}
}
// Getters and setters to handle uploads
// Getters and setters to manipulate active Collaborator object
public java.lang.Integer getId() {
return collaborator.getId();
}
public Integer getOwnerId() {
return collaborator.getOwnerId();
}
public void setOwnerId( Integer ownerId ) {
collaborator.setOwnerId( ownerId );
}
public Integer getDepartmentId() {
return collaborator.getDepartmentId();
}
public void setDepartmentId( Integer departmentId ) {
collaborator.setDepartmentId( departmentId );
}
public Date getInsertDate() {
return collaborator.getInsertDate();
}
public void setInsertDate( Date insertDate ) {
collaborator.setInsertDate( insertDate );
}
public Date getUpdateDate() {
return collaborator.getUpdateDate();
}
public void setUpdateDate( Date updateDate ) {
collaborator.setUpdateDate( updateDate );
}
public User getUser() {
return collaborator.getUser();
}
public void setUser( User user ) {
collaborator.setUser( user );
}
public Contact getContact() {
return collaborator.getContact();
}
public void setContact( Contact contact ) {
collaborator.setContact( contact );
}
public Organization getOrganization() {
return collaborator.getOrganization();
}
public void setOrganization( Organization organization ) {
collaborator.setOrganization( organization );
}
public String getName(){
return collaborator.getName();
}
public void setName(String name){
collaborator.setName(name);
}
/* collaborator - generated by stajanov (do not edit/delete) */
}