/* 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.Label; //import com.sun.webui.jsf.component.TextArea; import java.util.HashMap; import java.util.List; import javax.faces.FacesException; import javax.faces.component.html.HtmlPanelGrid; import javax.faces.component.html.HtmlInputTextarea; import org.inbio.ara.admin.SelectionListSessionBean; import org.inbio.ara.admin.ProfileSessionBean; import org.inbio.ara.admin.CollectionSessionBean; import org.inbio.ara.SessionManager; import org.inbio.ara.util.ValidatorBean; import org.inbio.ara.inventory.SpecimenGenerationSessionBean; import org.inbio.ara.inventory.GatheringSessionBean; import org.inbio.ara.inventory.SpecimenSessionBean; import org.inbio.ara.admin.AudienceSessionBean; import org.inbio.ara.dto.agent.AudienceDTO; import org.inbio.ara.dto.agent.InstitutionDTO; import org.inbio.ara.dto.inventory.PersonDTO; import org.inbio.ara.dto.taxonomy.TaxonDescriptionAudienceDTO; import org.inbio.ara.dto.taxonomy.TaxonDescriptionCategoryDTO; import org.inbio.ara.dto.taxonomy.TaxonDescriptionElementDTO; import org.inbio.ara.dto.taxonomy.TaxonDescriptionInstitutionDTO; import org.inbio.ara.dto.taxonomy.TaxonDescriptionPersonProfileDTO; import org.inbio.ara.dto.taxonomy.TaxonDescriptionRecordDTO; import org.inbio.ara.guimanagers.Components; import org.inbio.ara.guimanagers.DynamicPanelForm; import org.inbio.ara.statistics.StatisticsSessionBean; /** * <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 PreviewSpecies.java * @version Created on 02/11/2009, 04:04:32 PM * @author esmata */ public class PreviewSpecies 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> //Bindings de los componentes graficos private HtmlInputTextarea abstractText = new HtmlInputTextarea(); private Label descriptionsLabel = new Label(); private DynamicPanelForm descriptionsDynamicPanel = new DynamicPanelForm(); private Label audiencesLabel = new Label(); private DynamicPanelForm audiencesDynamicPanel = new DynamicPanelForm(); private Label authorsLabel = new Label(); private DynamicPanelForm authorDynamicPanel = new DynamicPanelForm(); private Label institutionsLabel = new Label(); private DynamicPanelForm institutionsDynamicPanel = new DynamicPanelForm(); /** * <p>Construct a new Page bean instance.</p> */ public PreviewSpecies() { } /** * <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("PreviewSpecies 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() { SpeciesSessionBean ssb = this.gettaxonomy$SpeciesSessionBean(); Long taxonId = ssb.getCurrentTaxDescripDTO().getTaxonId(); Long taxonDescriptionSequence = ssb.getCurrentTaxDescripDTO(). getTaxonDescriptionSequence(); //Panel de descripciones setPanelProperties(this.descriptionsDynamicPanel, 3); List<TaxonDescriptionRecordDTO> TDRList = ssb.getTaxonomyFacadeImpl().getTaxonDescriptionRecordsByTaxonDescription (taxonId, taxonDescriptionSequence); writeDescriptions(TDRList); //Panel de audiencias setPanelProperties(audiencesDynamicPanel, 1); List<TaxonDescriptionAudienceDTO> TDAList = ssb.getTaxonomyFacadeImpl().getTDAudiencesByTaxonDescription (taxonId, taxonDescriptionSequence); writeAudiences(TDAList); //Panel de autores setPanelProperties(authorDynamicPanel, 1); List<TaxonDescriptionPersonProfileDTO> authorList = ssb.getTaxonomyFacadeImpl().getAuthorsByTaxonDescription (taxonId, taxonDescriptionSequence); writeAuthors(authorList); //Finalmente el panel de instituciones relacionadas setPanelProperties(institutionsDynamicPanel, 1); List<TaxonDescriptionInstitutionDTO> institutionsList = ssb.getTaxonomyFacadeImpl().getTDInstitutionsByTaxonDescription (taxonId, taxonDescriptionSequence); writeInstitutions(institutionsList); } /** * <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() { } private void setPanelProperties(DynamicPanelForm panel, int cols) { HashMap p = new HashMap(); panel.getPanel().getChildren().clear(); p.put("columns", cols); p.put("border", 1); p.put("rules", "all"); p.put("rowClasses", "list-row-even,list-row-odd"); panel.setPanelProperties(p); } private void writeDescriptions(List<TaxonDescriptionRecordDTO> data) { SpeciesSessionBean ssb = this.gettaxonomy$SpeciesSessionBean(); if(data.isEmpty()) this.descriptionsLabel.setVisible(false); for(TaxonDescriptionRecordDTO TDR : data){ HashMap info = new HashMap(); //Si es un valor textual esta directamente disponible if (TDR.getContentsNumeric() == 0) { //76 es el abstract if (TDR.getTaxonDescriptionElementId() == 76L) { this.abstractText.setValue(TDR.getContentsText()); } else { TaxonDescriptionElementDTO tde = ssb.getTaxonomyFacadeImpl(). getElementById(TDR.getTaxonDescriptionElementId()); TaxonDescriptionCategoryDTO tdc = ssb.getTaxonomyFacadeImpl(). getCategoryById(tde.getTaxonDescriptionCategoryId()); info.put("value", tdc.getName()); this.descriptionsDynamicPanel.setComponent(Components.LABEL, info); info.put("value", tde.getName()); this.descriptionsDynamicPanel.setComponent(Components.LABEL, info); info.put("value", TDR.getContentsText()); this.descriptionsDynamicPanel.setComponent(Components.TEXT_AREA, info); } } else { TaxonDescriptionElementDTO tde = ssb.getTaxonomyFacadeImpl(). getElementById(TDR.getTaxonDescriptionElementId()); TaxonDescriptionCategoryDTO tdc = ssb.getTaxonomyFacadeImpl(). getCategoryById(tde.getTaxonDescriptionCategoryId()); Long contentsNumeric = TDR.getContentsNumeric(); String tableName = tde.getTableName(); String keyField = tde.getKeyField(); String tableField =tde.getMainFieldName(); String textualValue = ssb.getTaxonomyFacadeImpl().getFieldContent (contentsNumeric, tableName, keyField, tableField); info.put("value", tdc.getName()); this.descriptionsDynamicPanel.setComponent(Components.LABEL, info); info.put("value", tde.getName()); this.descriptionsDynamicPanel.setComponent(Components.LABEL, info); info.put("value", textualValue); this.descriptionsDynamicPanel.setComponent(Components.TEXT_AREA, info); } } } private void writeAudiences(List<TaxonDescriptionAudienceDTO> TDAList) { SpeciesSessionBean ssb = this.gettaxonomy$SpeciesSessionBean(); if(TDAList!=null){ if(TDAList.size() == 0) this.audiencesLabel.setVisible(false); for (TaxonDescriptionAudienceDTO tdaDTO :TDAList) { HashMap info = new HashMap(); AudienceDTO a = ssb.getTaxonomyFacadeImpl().getAudienceById(tdaDTO.getAudienceId()); info.put("value", a.getName()); this.audiencesDynamicPanel.setComponent(0L, info); } } } private void writeAuthors(List<TaxonDescriptionPersonProfileDTO> authorList) { SpeciesSessionBean ssb = this.gettaxonomy$SpeciesSessionBean(); if (authorList!=null){ if(authorList.size() == 0) this.authorsLabel.setVisible(false); for (TaxonDescriptionPersonProfileDTO tdppDTO :authorList) { HashMap info = new HashMap(); PersonDTO p = ssb.getTaxonomyFacadeImpl().getPersonById(tdppDTO.getPersonId()); info.put("value", p.getNaturalLongName()); this.authorDynamicPanel.setComponent(0L, info); } } } private void writeInstitutions(List<TaxonDescriptionInstitutionDTO> institutionsList) { SpeciesSessionBean ssb = this.gettaxonomy$SpeciesSessionBean(); if(institutionsList!=null){ if(institutionsList.size() == 0) this.institutionsLabel.setVisible(false); for (TaxonDescriptionInstitutionDTO tdi :institutionsList) { HashMap info = new HashMap(); InstitutionDTO iDTO = ssb.getTaxonomyFacadeImpl().getInstitutionById (tdi.getInstitutionId()); info.put("value", iDTO.getInstitutionName()); this.institutionsDynamicPanel.setComponent(0L, info); } } } /** * <p>Return a reference to the scoped data bean.</p> * * @return reference to the scoped data bean */ protected SelectionListSessionBean getadmin$SelectionListSessionBean() { return (SelectionListSessionBean) getBean("admin$SelectionListSessionBean"); } /** * <p>Return a reference to the scoped data bean.</p> * * @return reference to the scoped data bean */ protected ProfileSessionBean getadmin$ProfileSessionBean() { return (ProfileSessionBean) getBean("admin$ProfileSessionBean"); } /** * <p>Return a reference to the scoped data bean.</p> * * @return reference to the scoped data bean */ protected CollectionSessionBean getadmin$CollectionSessionBean() { return (CollectionSessionBean) getBean("admin$CollectionSessionBean"); } /** * <p>Return a reference to the scoped data bean.</p> * * @return reference to the scoped data bean */ protected SessionManager getSessionManager() { return (SessionManager) getBean("SessionManager"); } /** * <p>Return a reference to the scoped data bean.</p> * * @return reference to the scoped data bean */ protected ValidatorBean getutil$ValidatorBean() { return (ValidatorBean) getBean("util$ValidatorBean"); } /** * <p>Return a reference to the scoped data bean.</p> * * @return reference to the scoped data bean */ protected SpecimenGenerationSessionBean getinventory$SpecimenGenerationSessionBean() { return (SpecimenGenerationSessionBean) getBean("inventory$SpecimenGenerationSessionBean"); } /** * <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 GatheringSessionBean getinventory$GatheringSessionBean() { return (GatheringSessionBean) getBean("inventory$GatheringSessionBean"); } /** * <p>Return a reference to the scoped data bean.</p> * * @return reference to the scoped data bean */ protected SpecimenSessionBean getinventory$SpecimenSessionBean() { return (SpecimenSessionBean) getBean("inventory$SpecimenSessionBean"); } /** * <p>Return a reference to the scoped data bean.</p> * * @return reference to the scoped data bean */ protected AudienceSessionBean getadmin$AudienceSessionBean() { return (AudienceSessionBean) getBean("admin$AudienceSessionBean"); } /** * <p>Return a reference to the scoped data bean.</p> * * @return reference to the scoped data bean */ protected StatisticsSessionBean getstatistics$StatisticsSessionBean() { return (StatisticsSessionBean) getBean("statistics$StatisticsSessionBean"); } /** * @return the abstractText */ public HtmlInputTextarea getAbstractText() { return abstractText; } /** * @param abstractText the abstractText to set */ public void setAbstractText(HtmlInputTextarea abstractText) { this.abstractText = abstractText; } /** * @return the descriptionsLabel */ public Label getDescriptionsLabel() { return descriptionsLabel; } /** * @param descriptionsLabel the descriptionsLabel to set */ public void setDescriptionsLabel(Label descriptionsLabel) { this.descriptionsLabel = descriptionsLabel; } /** * @return the descriptionsDynamicPanel */ public HtmlPanelGrid getDescriptionsDynamicPanel() { return descriptionsDynamicPanel.getPanel(); } /** * @param descriptionsDynamicPanel the descriptionsDynamicPanel to set */ public void setDescriptionsDynamicPanel(HtmlPanelGrid descriptionsDynamicPanel) { this.descriptionsDynamicPanel.setPanel(descriptionsDynamicPanel); } /** * @return the audiencesLabel */ public Label getAudiencesLabel() { return audiencesLabel; } /** * @param audiencesLabel the audiencesLabel to set */ public void setAudiencesLabel(Label audiencesLabel) { this.audiencesLabel = audiencesLabel; } /** * @return the audiencesDynamicPanel */ public HtmlPanelGrid getAudiencesDynamicPanel() { return audiencesDynamicPanel.getPanel(); } /** * @param audiencesDynamicPanel the audiencesDynamicPanel to set */ public void setAudiencesDynamicPanel(HtmlPanelGrid audiencesDynamicPanel) { this.audiencesDynamicPanel.setPanel(audiencesDynamicPanel); } /** * @return the authorsLabel */ public Label getAuthorsLabel() { return authorsLabel; } /** * @param authorsLabel the authorsLabel to set */ public void setAuthorsLabel(Label authorsLabel) { this.authorsLabel = authorsLabel; } /** * @return the authorDynamicPanel */ public HtmlPanelGrid getAuthorDynamicPanel() { return authorDynamicPanel.getPanel(); } /** * @param authorDynamicPanel the authorDynamicPanel to set */ public void setAuthorDynamicPanel(HtmlPanelGrid authorDynamicPanel) { this.authorDynamicPanel.setPanel(authorDynamicPanel); } /** * @return the institutionsLabel */ public Label getInstitutionsLabel() { return institutionsLabel; } /** * @param institutionsLabel the institutionsLabel to set */ public void setInstitutionsLabel(Label institutionsLabel) { this.institutionsLabel = institutionsLabel; } /** * @return the institutionsDynamicPanel */ public HtmlPanelGrid getInstitutionsDynamicPanel() { return institutionsDynamicPanel.getPanel(); } /** * @param institutionsDynamicPanel the institutionsDynamicPanel to set */ public void setInstitutionsDynamicPanel(HtmlPanelGrid institutionsDynamicPanel) { this.institutionsDynamicPanel.setPanel(institutionsDynamicPanel); } }