/**
* 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.account;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.faces.component.UIComponent;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.context.FacesContext;
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.Account;
import com.autentia.tnt.businessobject.AccountEntryType;
import com.autentia.tnt.businessobject.Frequency;
import com.autentia.tnt.businessobject.Organization;
import com.autentia.tnt.businessobject.PeriodicalAccountEntry;
import com.autentia.tnt.dao.SortCriteria;
import com.autentia.tnt.dao.search.PeriodicalAccountEntrySearch;
import com.autentia.tnt.manager.account.AccountEntryTypeManager;
import com.autentia.tnt.manager.account.AccountManager;
import com.autentia.tnt.manager.account.PeriodicalAccountEntryManager;
import com.autentia.tnt.manager.admin.FrequencyManager;
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 PeriodicalAccountEntryBean extends BaseBean
{
/**
* Reset search criteria
* @return forward to LIST page
*/
public String reset(){
search.reset();
return list();
}
/**
* Go to edit page
* @return forward to EDIT page
*/
public String copy()
{
Integer id = Integer.parseInt( FacesUtils.getRequestParameter(ROW_ID) );
periodicalAccountEntry = manager.copy(id);
return NavigationResults.COPY_ENTRY;
}
private int accountSelected = ALL_ACCOUNTS;
public static int ALL_ACCOUNTS = -1;
public int getAccountSelected()
{
return accountSelected;
}
public void setAccountSelected(int accountSelected)
{
this.accountSelected = accountSelected;
}
public List<SelectItem> getAllAccounts()
{
FacesContext context = FacesContext.getCurrentInstance();
Locale locale = context.getViewRoot().getLocale();
ResourceBundle bundle = ResourceBundle.getBundle("com.autentia.tnt.resources.messages", locale);
ArrayList <SelectItem> ret = new ArrayList<SelectItem>();
ret.add(new SelectItem(Integer.valueOf(ALL_ACCOUNTS),bundle.getString("accountEntry.allaccounts")));
List<Account> refs = AccountManager.getDefault().getAllEntities(null,new SortCriteria("name"));
for( Account ref : refs )
{
ret.add( new SelectItem( ref.getId(), ref.getName() ) );
}
return ret;
}
/* PeriodicalAccountEntry - generated by stajanov (do not edit/delete) */
/**
* Whether or not create button is available for user
* @return true if user can create objects of type PeriodicalAccountEntry
*/
public boolean isCreateAvailable()
{
return SpringUtils.isRolePermissionGranted(Permission.Entity_Create(PeriodicalAccountEntry.class));
}
/**
* Whether or not edit button is available for user
* @return true if user can edit current object
*/
public boolean isEditAvailable()
{
return SpringUtils.isAclPermissionGranted(periodicalAccountEntry,BasePermission.WRITE);
}
/**
* Whether or not delete button is available for user
* @return true if user can delete current object
*/
public boolean isDeleteAvailable()
{
return (periodicalAccountEntry.getId()!=null) &&
SpringUtils.isAclPermissionGranted(periodicalAccountEntry,BasePermission.DELETE);
}
/** Active search object */
private PeriodicalAccountEntrySearch search = new PeriodicalAccountEntrySearch();
/** Manager */
private static PeriodicalAccountEntryManager manager = PeriodicalAccountEntryManager.getDefault();
/** Handle an ABC pager letter click: filter objects by specified starting letter */
public void letterClicked()
{
if( letter!=null )
{
UIComponent comp = FacesUtils.getComponent("periodicalAccountEntrys:list");
HtmlDataTable tabla = (HtmlDataTable) comp;
tabla.setFirst(0);
search.setConcept( letter+"%" );
}
else
{
search.unsetConcept();
}
}
public Character getLetter()
{
return letter;
}
public void setLetter( Character letter )
{
this.letter = letter;
}
/** Quick search letter for ABC pager control */
private Character letter;
/** Logger */
private static final Log log = LogFactory.getLog(PeriodicalAccountEntryBean.class);
/** Upload service */
private static final Uploader uploader = UploaderFactory.getInstance("periodicalAccountEntry");
/** Active PeriodicalAccountEntry object */
private PeriodicalAccountEntry periodicalAccountEntry;
/** Default sort column */
private String sortColumn = "date";
/** Default sort order */
private boolean sortAscending = false;
/**
* List periodicalAccountEntrys. Order depends on Faces parameter sort.
* @return the list of all periodicalAccountEntrys sorted by requested criterion
*/
public List<PeriodicalAccountEntry> getAll()
{
if(accountSelected!=ALL_ACCOUNTS)
{
search.setAccount(AccountManager.getDefault().getEntityById(accountSelected));
}
else
{
search.unsetAccount();
}
return manager.getAllEntities(search, new SortCriteria( sortColumn, sortAscending ));
}
// Getters to list possible values of related entities
/**
* Get the list of all accounts
* @return the list of all accounts
*/
public List<SelectItem> getAccounts()
{
ArrayList<SelectItem> ret = new ArrayList<SelectItem>();
List<Account> refs = AccountManager.getDefault().getAllEntities(null,new SortCriteria("name"));
for( Account ref : refs )
{
ret.add( new SelectItem( ref, ref.getName() ) );
}
return ret;
}
/**
* Get the list of all frequencys
* @return the list of all frequencys
*/
public List<SelectItem> getFrequencys()
{
ArrayList<SelectItem> ret = new ArrayList<SelectItem>();
List<Frequency> refs = FrequencyManager.getDefault().getAllEntities(null,new SortCriteria("name"));
for( Frequency 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)
/**
* Go to create page
* @return forward to CREATE page
*/
public String create()
{
periodicalAccountEntry = new PeriodicalAccountEntry();
return NavigationResults.CREATE;
}
/**
* Go to edit page
* @return forward to EDIT page
*/
public String edit()
{
Integer id = Integer.parseInt( FacesUtils.getRequestParameter(ROW_ID) );
periodicalAccountEntry = manager.getEntityById(id);
return NavigationResults.EDIT;
}
/**
* Go to detail page
* @return forward to DETAIL page
*/
public String detail(){
Integer id = Integer.parseInt( FacesUtils.getRequestParameter(ROW_ID) );
periodicalAccountEntry = manager.getEntityById(id);
return SpringUtils.isAclPermissionGranted( periodicalAccountEntry, BasePermission.WRITE )
? NavigationResults.EDIT
: NavigationResults.DETAIL;
}
/**
* Save bean and stay on it
* @return forward to list page
*/
public String save()
{
doBeforeSave();
if( periodicalAccountEntry.getId()==null )
{
manager.insertEntity(periodicalAccountEntry);
}
else
{
manager.updateEntity(periodicalAccountEntry);
}
// Calls an after save action
String result = doAfterSave(NavigationResults.LIST);
// Unselect object
periodicalAccountEntry = null;
return result;
}
/**
* Delete bean and go back to beans list
* @return forward to LIST page
*/
public String delete()
{
manager.deleteEntity(periodicalAccountEntry);
periodicalAccountEntry = 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 isPeriodicalAccountEntrySelected()
{
return periodicalAccountEntry!=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 PeriodicalAccountEntrySearch getSearch()
{
return search;
}
public String getSearchConcept()
{
return search.getConcept();
}
public void setSearchConcept( String val )
{
if( search.isConceptSet() )
{
search.setConcept( val );
}
}
public boolean isSearchConceptValid()
{
return search.isConceptSet();
}
public void setSearchConceptValid( boolean val )
{
if( val )
{
search.setConcept( search.getConcept() );
}
else
{
search.unsetConcept();
}
}
public Date getSearchStartDate()
{
return search.getStartDate();
}
public void setSearchStartDate( Date val )
{
if( val!=null )
{
search.setStartDate( val );
}
else
{
search.unsetStartDate();
}
}
public boolean isSearchStartDateValid()
{
return search.isStartDateSet();
}
public void setSearchStartDateValid( boolean val )
{
if( val )
{
search.setStartDate( search.getStartDate() );
}
else
{
search.unsetStartDate();
}
}
public Date getSearchEndDate()
{
return search.getEndDate();
}
public void setSearchEndDate( Date val )
{
if( val!=null )
{
search.setEndDate( val );
}
else
{
search.unsetEndDate();
}
}
public boolean isSearchEndDateValid()
{
return search.isEndDateSet();
}
public void setSearchEndDateValid( boolean val )
{
if( val )
{
search.setEndDate( search.getEndDate() );
}
else
{
search.unsetEndDate();
}
}
public BigDecimal getSearchStartAmount()
{
return search.getStartAmount();
}
public void setSearchStartAmount( BigDecimal val )
{
if( val!=null )
{
search.setStartAmount( val );
}
else
{
search.unsetStartAmount();
}
}
public boolean isSearchStartAmountValid()
{
return search.isStartAmountSet();
}
public void setSearchStartAmountValid( boolean val )
{
if( val )
{
search.setStartAmount( search.getStartAmount() );
}
else
{
search.unsetStartAmount();
}
}
public BigDecimal getSearchEndAmount()
{
return search.getEndAmount();
}
public void setSearchEndAmount( BigDecimal val )
{
if( val!=null )
{
search.setEndAmount( val );
}
else
{
search.unsetEndAmount();
}
}
public boolean isSearchEndAmountValid()
{
return search.isEndAmountSet();
}
public void setSearchEndAmountValid( boolean val )
{
if( val )
{
search.setEndAmount( search.getEndAmount() );
}
else
{
search.unsetEndAmount();
}
}
public BigDecimal getSearchStartRise()
{
return search.getStartRise();
}
public void setSearchStartRise( BigDecimal val )
{
if( val!=null )
{
search.setStartRise( val );
}
else
{
search.unsetStartRise();
}
}
public boolean isSearchStartRiseValid()
{
return search.isStartRiseSet();
}
public void setSearchStartRiseValid( boolean val )
{
if( val )
{
search.setStartRise( search.getStartRise() );
}
else
{
search.unsetStartRise();
}
}
public BigDecimal getSearchEndRise()
{
return search.getEndRise();
}
public void setSearchEndRise( BigDecimal val )
{
if( val!=null )
{
search.setEndRise( val );
}
else
{
search.unsetEndRise();
}
}
public boolean isSearchEndRiseValid()
{
return search.isEndRiseSet();
}
public void setSearchEndRiseValid( boolean val )
{
if( val )
{
search.setEndRise( search.getEndRise() );
}
else
{
search.unsetEndRise();
}
}
public String getSearchObservations()
{
return search.getObservations();
}
public void setSearchObservations( String val )
{
if( search.isObservationsSet() )
{
search.setObservations( val );
}
}
public boolean isSearchObservationsValid()
{
return search.isObservationsSet();
}
public void setSearchObservationsValid( boolean val )
{
if( val )
{
search.setObservations( search.getObservations() );
}
else
{
search.unsetObservations();
}
}
public Account getSearchAccount()
{
return search.getAccount();
}
public void setSearchAccount( Account val )
{
if( search.isAccountSet() )
{
search.setAccount( val );
}
}
public boolean isSearchAccountValid()
{
return search.isAccountSet();
}
public void setSearchAccountValid( boolean val )
{
if( val )
{
search.setAccount( search.getAccount() );
}
else
{
search.unsetAccount();
}
}
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();
}
}
public AccountEntryType getSearchType()
{
return search.getType();
}
public void setSearchType( AccountEntryType 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 Frequency getSearchFrequency()
{
return search.getFrequency();
}
public void setSearchFrequency( Frequency val )
{
if( search.isFrequencySet() )
{
search.setFrequency( val );
}
}
public boolean isSearchFrequencyValid()
{
return search.isFrequencySet();
}
public void setSearchFrequencyValid( boolean val )
{
if( val )
{
search.setFrequency( search.getFrequency() );
}
else
{
search.unsetFrequency();
}
}
// Getters and setters to handle uploads
// Getters and setters to manipulate active PeriodicalAccountEntry object
public java.lang.Integer getId()
{
return periodicalAccountEntry.getId();
}
public String getConcept()
{
return periodicalAccountEntry.getConcept();
}
public void setConcept( String concept )
{
periodicalAccountEntry.setConcept( concept );
}
public Date getDate()
{
return periodicalAccountEntry.getDate();
}
public void setDate( Date date )
{
periodicalAccountEntry.setDate( date );
}
public BigDecimal getAmount()
{
return periodicalAccountEntry.getAmount();
}
public void setAmount( BigDecimal amount )
{
periodicalAccountEntry.setAmount( amount );
}
public BigDecimal getRise()
{
return periodicalAccountEntry.getRise();
}
public void setRise( BigDecimal rise )
{
periodicalAccountEntry.setRise( rise );
}
public String getObservations()
{
return periodicalAccountEntry.getObservations();
}
public void setObservations( String observations )
{
periodicalAccountEntry.setObservations( observations );
}
public Account getAccount()
{
return periodicalAccountEntry.getAccount();
}
public void setAccount( Account account )
{
periodicalAccountEntry.setAccount( account );
}
public AccountEntryType getType()
{
return periodicalAccountEntry.getType();
}
public void setType( AccountEntryType type )
{
periodicalAccountEntry.setType( type );
}
public Frequency getFrequency()
{
return periodicalAccountEntry.getFrequency();
}
public void setFrequency( Frequency frequency )
{
periodicalAccountEntry.setFrequency( frequency );
}
/* PeriodicalAccountEntry - generated by stajanov (do not edit/delete) */
public void valueTypeChanged(ValueChangeEvent event )
{
this.setType((AccountEntryType) event.getNewValue());
FacesUtils.renderResponse();
}
/**
* Get the list of all types
* @return the list of all types
*/
public List<SelectItem> getTypes()
{
ArrayList<SelectItem> ret = new ArrayList<SelectItem>();
List<AccountEntryType> refs = AccountEntryTypeManager.getDefault().getAllEntities(null,new SortCriteria("name"));
for( AccountEntryType ref : refs )
{
ret.add( new SelectItem( ref, ref.getName() ) );
}
ret.add(0,new SelectItem(""));
return ret;
}
/**
* 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 = OrganizationManager.getDefault().getAllEntities(null,new SortCriteria("name"));
ret.add(new SelectItem(null, FacesUtils.formatMessage("organization.unknown" )));
for (Organization ref : refs) {
ret.add(new SelectItem(ref, ref.getName()));
}
return ret;
}
public Organization getOrganization() {
return periodicalAccountEntry.getOrganization();
}
public void setOrganization( Organization organization ) {
periodicalAccountEntry.setOrganization( organization );
}
/**
* Carlos, desde aquĆ
*/
public void onSelectedOrganizationChanged(ValueChangeEvent event) {
setSelectedOrganization((Organization) event.getNewValue());
FacesUtils.renderResponse();
}
public void onEditSelected(ActionEvent event) {
setSelectedOrganization(null);
}
public void setSelectedOrganization(Organization organization) {
this.setOrganization(organization);
}
public Organization getSelectedOrganization() {
return this.getOrganization();
}
}