/* Ara - capture species and specimen data * * Copyright (C) 2009 INBio (Instituto Nacional de Biodiversidad) * * 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, or * (at your option) any later version. * * 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 org.inbio.ara.taxonomy; import com.sun.rave.web.ui.appbase.AbstractPageBean; import com.sun.webui.jsf.component.DropDown; import com.sun.webui.jsf.component.TextField; import com.sun.webui.jsf.model.Option; import com.sun.webui.jsf.model.SingleSelectOptionsList; import java.util.ArrayList; import java.util.List; import java.util.Locale; import javax.faces.FacesException; import javax.faces.context.FacesContext; import org.inbio.ara.AraSessionBean; import org.inbio.ara.dto.agent.InstitutionDTO; import org.inbio.ara.dto.inventory.TaxonDTO; import org.inbio.ara.dto.taxonomy.LanguageDTO; import org.inbio.ara.dto.taxonomy.TaxonDescriptionStageDTO; import org.inbio.ara.util.AddRemoveList; import org.inbio.ara.util.BundleHelper; import org.inbio.ara.util.MessageBean; /** * <p>Page bean that corresponds to a similarly named JSP page. This * class contains component definitions (and initialization code) for * all components that you have defined on this page, as well as * lifecycle methods and event handlers where you may add behavior * to respond to incoming events.</p> * * @version NewSpecies.java * @version Created on 13/10/2009, 03:07:49 PM * @author esmata */ public class NewSpecies extends AbstractPageBean { // <editor-fold defaultstate="collapsed" desc="Managed Component Definition"> /** * <p>Automatically managed component initialization. <strong>WARNING:</strong> * This method is automatically generated, so any user-specified code inserted * here is subject to being replaced.</p> */ private void _init() throws Exception { } // </editor-fold> //Contexto utilizado para obtener el current locale private FacesContext context; private Locale myLocale; //Bindings de los componentes graficos private DropDown ddScientificName = new DropDown(); private DropDown ddLanguage = new DropDown(); private DropDown ddStatus = new DropDown(); private DropDown ddInstitutions = new DropDown(); private TextField txSequence = new TextField(); private TextField txTitle = new TextField(); //En esta variable se setearan los datos del drop down de nombres cientificos private SingleSelectOptionsList scientificNameData = new SingleSelectOptionsList(); //En esta variable se setearan los datos del drop down de idioma private SingleSelectOptionsList languageData = new SingleSelectOptionsList(); //En esta variable se setearan los datos del drop down de estado private SingleSelectOptionsList statusData = new SingleSelectOptionsList(); //En esta variable se setearan los datos del drop down de instituciones private SingleSelectOptionsList institutionsData = new SingleSelectOptionsList(); /** * <p>Construct a new Page bean instance.</p> */ public NewSpecies() { } /** * <p>Callback method that is called whenever a page is navigated to, * either directly via a URL, or indirectly via page navigation. * Customize this method to acquire resources that will be needed * for event handlers and lifecycle methods, whether or not this * page is performing post back processing.</p> * * <p>Note that, if the current request is a postback, the property * values of the components do <strong>not</strong> represent any * values submitted with this request. Instead, they represent the * property values that were saved for this view when it was rendered.</p> */ @Override public void init() { // Perform initializations inherited from our superclass super.init(); // Perform application initialization that must complete // *before* managed components are initialized // TODO - add your own initialiation code here // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization"> // Initialize automatically managed components // *Note* - this logic should NOT be modified try { _init(); } catch (Exception e) { log("NewSpecies Initialization Failure", e); throw e instanceof FacesException ? (FacesException) e: new FacesException(e); } // </editor-fold> // Perform application initialization that must complete // *after* managed components are initialized // TODO - add your own initialization code here } /** * <p>Callback method that is called after the component tree has been * restored, but before any event processing takes place. This method * will <strong>only</strong> be called on a postback request that * is processing a form submit. Customize this method to allocate * resources that will be required in your event handlers.</p> */ @Override public void preprocess() { } /** * <p>Callback method that is called just before rendering takes place. * This method will <strong>only</strong> be called for the page that * will actually be rendered (and not, for example, on a page that * handled a postback and then navigated to a different page). Customize * this method to allocate resources that will be required for rendering * this page.</p> */ @Override public void prerender() { this.scientificNameData.setOptions(getScientificNamesDropDownData()); this.languageData.setOptions(getLanguagesDropDownData()); this.statusData.setOptions(getTaxonDescriptionStatusDropDownData()); this.institutionsData.setOptions(getInstitutionDropDownData()); } /** * <p>Callback method that is called after rendering is completed for * this request, if <code>init()</code> was called (regardless of whether * or not this was the page that was actually rendered). Customize this * method to release resources acquired in the <code>init()</code>, * <code>preprocess()</code>, or <code>prerender()</code> methods (or * acquired during execution of an event handler).</p> */ @Override public void destroy() { } /** * Obtener los datos del drop down de nombres cientificos */ public Option[] getScientificNamesDropDownData(){ List<TaxonDTO> DTOList = this.gettaxonomy$SpeciesSessionBean(). getAllSpecies(); ArrayList<Option> allOptions = new ArrayList<Option>(); Option[] allOptionsInArray; Option option; //Crear opcion titulo option = new Option(null," -- "+BundleHelper.getDefaultBundleValue ("drop_down_default",getMyLocale())+" --"); allOptions.add(option); //Crear todas las opciones del drop down for(TaxonDTO myDTO : DTOList){ option = new Option(myDTO.getTaxonKey(), myDTO.getDefaultName().trim()); allOptions.add(option); } //return the elements allOptionsInArray = new Option[allOptions.size()]; return allOptions.toArray(allOptionsInArray); } /** * Obtener los datos del drop down de idiomas */ public Option[] getLanguagesDropDownData(){ List<LanguageDTO> DTOList = this.gettaxonomy$SpeciesSessionBean(). getAllLanguages(); ArrayList<Option> allOptions = new ArrayList<Option>(); Option[] allOptionsInArray; Option option; //Crear opcion titulo option = new Option(null," -- "+BundleHelper.getDefaultBundleValue ("drop_down_default",getMyLocale())+" --"); allOptions.add(option); //Crear todas las opciones del drop down for(LanguageDTO myDTO : DTOList){ option = new Option(myDTO.getLanguageId(), myDTO.getConcepName().trim()); allOptions.add(option); } //return the elements allOptionsInArray = new Option[allOptions.size()]; return allOptions.toArray(allOptionsInArray); } /** * Obtener los datos del drop down de estados */ public Option[] getTaxonDescriptionStatusDropDownData(){ List<TaxonDescriptionStageDTO> DTOList = this.gettaxonomy$SpeciesSessionBean(). getAllTaxonDescriptionStages(); ArrayList<Option> allOptions = new ArrayList<Option>(); Option[] allOptionsInArray; Option option; //Crear opcion titulo option = new Option(null," -- "+BundleHelper.getDefaultBundleValue ("drop_down_default",getMyLocale())+" --"); allOptions.add(option); //Crear todas las opciones del drop down for(TaxonDescriptionStageDTO myDTO : DTOList){ option = new Option(myDTO.getTaxonDescriptionStageId(), myDTO.getName().trim()); allOptions.add(option); } //return the elements allOptionsInArray = new Option[allOptions.size()]; return allOptions.toArray(allOptionsInArray); } /** * Obtener los datos del drop down de instituciones */ public Option[] getInstitutionDropDownData(){ List<InstitutionDTO> instDTOList = this.gettaxonomy$SpeciesSessionBean() .SetInstitutionDropDownData(); ArrayList<Option> allOptions = new ArrayList<Option>(); Option[] allOptionsInArray; Option option; //Crear opcion titulo option = new Option(null," -- "+BundleHelper.getDefaultBundleValue ("drop_down_default",getMyLocale())+" --"); allOptions.add(option); //Crear todas las opciones del drop down for(InstitutionDTO instDTO : instDTOList){ option = new Option(instDTO.getInstitutionId(), instDTO.getInstitutionName()); allOptions.add(option); } allOptionsInArray = new Option[allOptions.size()]; return allOptions.toArray(allOptionsInArray); } /** * Metodo ejecutado por el boton para crear un nuevo taxon description * @return */ public String btnNewTaxonDescription_action() { SpeciesSessionBean ssb = this.gettaxonomy$SpeciesSessionBean(); //Capturar datos de la pantalla String title = (String)this.getTxTitle().getText(); Long sequence = null; String sequenceAux = (String)this.getTxSequence().getText(); if(sequenceAux!=null){ sequence = Long.parseLong(sequenceAux); } //Setear el current DTO ssb.getCurrentTaxDescripDTO().setTaxonId(ssb.getSelectedScientificName()); ssb.getCurrentTaxDescripDTO().setTaxonDescriptionSequence (sequence); ssb.getCurrentTaxDescripDTO().setTitle(title); ssb.getCurrentTaxDescripDTO().setLanguageId (ssb.getSelectedLanguage()); ssb.getCurrentTaxDescripDTO().setTaxonDescriptionStageId (ssb.getSelectedStatus()); ssb.getCurrentTaxDescripDTO().setInstitutionId (ssb.getSelectedInstitution()); String scientificName = ssb.getTaxonomyFacadeImpl(). getSpeciesNameById(ssb.getSelectedScientificName()); ssb.getCurrentTaxDescripDTO().setTaxonDefaultName(scientificName); //Asegurarnos de que el registro no exista previamente en la BD boolean existDescription = this.exist(); if(existDescription){ MessageBean.setErrorMessageFromBundle("alredy_exist", this.getMyLocale()); return null; } //Persistir el nuevo registro de especie try { ssb.saveTaxonDescription(); } catch (Exception e) { MessageBean.setErrorMessageFromBundle("error", this.getMyLocale()); return null; } //Limpiar la pantalla this.getTxSequence().setText(null); this.getTxTitle().setText(null); ssb.setSelectedLanguage(null); ssb.setSelectedScientificName(null); ssb.setSelectedStatus(null); ssb.setArAudiences(new AddRemoveList()); ssb.setArAuthors(new AddRemoveList()); ssb.setArInstitutions(new AddRemoveList()); //Refrescar el paginador ssb.getPagination().refreshList(); /*//Notificar al usuario MessageBean.setSuccessMessageFromBundle ("create_species_record_succces", this.getMyLocale());*/ /*Indicar a la pantalla de edit que cargue 1 sola ves los datos seleccionados de los AddRemove*/ this.gettaxonomy$SpeciesSessionBean().setFirstTime(true); return "edit"; } /** * True si existe el registro, False en caso contrario * @return */ private boolean exist(){ SpeciesSessionBean ssb = this.gettaxonomy$SpeciesSessionBean(); Long taxonId = ssb.getCurrentTaxDescripDTO().getTaxonId(); Long sequenceId = ssb.getCurrentTaxDescripDTO().getTaxonDescriptionSequence(); return ssb.getTaxonomyFacadeImpl().existTaxonDescription (taxonId, sequenceId); } /** * <p>Return a reference to the scoped data bean.</p> * * @return reference to the scoped data bean */ protected SpeciesSessionBean gettaxonomy$SpeciesSessionBean() { return (SpeciesSessionBean) getBean("taxonomy$SpeciesSessionBean"); } /** * <p>Return a reference to the scoped data bean.</p> * * @return reference to the scoped data bean */ protected AraSessionBean getAraSessionBean() { return (AraSessionBean) getBean("AraSessionBean"); } /** * @return the scientificNameData */ public SingleSelectOptionsList getScientificNameData() { return scientificNameData; } /** * @param scientificNameData the scientificNameData to set */ public void setScientificNameData(SingleSelectOptionsList scientificNameData) { this.scientificNameData = scientificNameData; } /** * @return the languageData */ public SingleSelectOptionsList getLanguageData() { return languageData; } /** * @param languageData the languageData to set */ public void setLanguageData(SingleSelectOptionsList languageData) { this.languageData = languageData; } /** * @return the statusData */ public SingleSelectOptionsList getStatusData() { return statusData; } /** * @param statusData the statusData to set */ public void setStatusData(SingleSelectOptionsList statusData) { this.statusData = statusData; } /** * @return the ddScientificName */ public DropDown getDdScientificName() { return ddScientificName; } /** * @param ddScientificName the ddScientificName to set */ public void setDdScientificName(DropDown ddScientificName) { this.ddScientificName = ddScientificName; } /** * @return the ddLanguage */ public DropDown getDdLanguage() { return ddLanguage; } /** * @param ddLanguage the ddLanguage to set */ public void setDdLanguage(DropDown ddLanguage) { this.ddLanguage = ddLanguage; } /** * @return the ddStatus */ public DropDown getDdStatus() { return ddStatus; } /** * @param ddStatus the ddStatus to set */ public void setDdStatus(DropDown ddStatus) { this.ddStatus = ddStatus; } /** * @return the txSequence */ public TextField getTxSequence() { return txSequence; } /** * @param txSequence the txSequence to set */ public void setTxSequence(TextField txSequence) { this.txSequence = txSequence; } /** * @return the txTitle */ public TextField getTxTitle() { return txTitle; } /** * @param txTitle the txTitle to set */ public void setTxTitle(TextField txTitle) { this.txTitle = txTitle; } /** * @return the myLocale */ public Locale getMyLocale() { return this.getAraSessionBean().getCurrentLocale(); } /** * @return the ddInstitutions */ public DropDown getDdInstitutions() { return ddInstitutions; } /** * @param ddInstitutions the ddInstitutions to set */ public void setDdInstitutions(DropDown ddInstitutions) { this.ddInstitutions = ddInstitutions; } /** * @return the institutionsData */ public SingleSelectOptionsList getInstitutionsData() { return institutionsData; } /** * @param institutionsData the institutionsData to set */ public void setInstitutionsData(SingleSelectOptionsList institutionsData) { this.institutionsData = institutionsData; } }