/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.inbio.ara.germplasm;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import com.sun.webui.jsf.component.Calendar;
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.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;
import javax.faces.FacesException;
import org.inbio.ara.AraSessionBean;
import org.inbio.ara.admin.SelectionListSessionBean;
import org.inbio.ara.admin.PersonSessionBean;
import org.inbio.ara.dto.germplasm.SemenGatheringDTO;
import org.inbio.ara.dto.inventory.SelectionListDTO;
import org.inbio.ara.dto.inventory.SelectionListEntity;
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 EditSemenGathering.java
* @version Created on 08/04/2010, 09:52:07 AM
* @author dasolano
*/
public class EditSemenGathering 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>
private SingleSelectOptionsList semenGatheringMethod = new SingleSelectOptionsList();
private SingleSelectOptionsList solvent = new SingleSelectOptionsList();
private SingleSelectOptionsList hourDropDown = new SingleSelectOptionsList();
private SingleSelectOptionsList minutesDropDown = new SingleSelectOptionsList();
private SingleSelectOptionsList consistency = new SingleSelectOptionsList();
private Calendar gatheringDate = new Calendar();
private TextField textTime = new TextField();
/**
* <p>Construct a new Page bean instance.</p>
*/
public EditSemenGathering() {
}
/**
* <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("EditSemenGathering 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() {
getSemenGatheringMethod().setOptions(getSelectionListDropDownData(SelectionListEntity.SEMEN_GATHERING_METHOD.getId()));
getSolvent().setOptions(getSelectionListDropDownData(SelectionListEntity.SOLVENT.getId()));
getHourDropDown().setOptions(getHourDropDownData());
getMinutesDropDown().setOptions(getMinutesDropDownData());
getConsistency().setOptions(getSelectionListDropDownData(SelectionListEntity.SEMEN_CONSISTENCY.getId()));
if(getgermplasm$SemenGatheringSessionBean().
getSemenGatheringDTO().getSemenGatheringTime() != null)
{
String parts[] = getgermplasm$SemenGatheringSessionBean().
getSemenGatheringDTO().getSemenGatheringTime().split(":");
getgermplasm$SemenGatheringSessionBean().setSelectedHour(Long.parseLong(parts[0]));
getgermplasm$SemenGatheringSessionBean().setSelectedMinutes(Long.parseLong(parts[1]));
}
this.gatheringDate.setSelectedDate(getgermplasm$SemenGatheringSessionBean().
getSemenGatheringDTO().getSemenGatheringDate().getTime());
getgermplasm$SemenGatheringSessionBean().setFirstTime(false);
}
/**
* <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() {
}
/**
* fill the options for the hour drop down
* @return
*/
public Option[] getHourDropDownData()
{
ArrayList<Option> allOptions = new ArrayList<Option>();
Option[] allOptionsInArray;
Option option;
//Crear opcion titulo
option = new Option(null, " -- ");
allOptions.add(option);
option = new Option(0L, "00");
allOptions.add(option);
option = new Option(1L, "01");
allOptions.add(option);
option = new Option(2L, "02");
allOptions.add(option);
option = new Option(3L, "03");
allOptions.add(option);
option = new Option(4L, "04");
allOptions.add(option);
option = new Option(5L, "05");
allOptions.add(option);
option = new Option(6L, "06");
allOptions.add(option);
option = new Option(7L, "07");
allOptions.add(option);
option = new Option(8L, "08");
allOptions.add(option);
option = new Option(9L, "09");
allOptions.add(option);
for(int i = 10; i <= 23; i ++)
{
option = new Option(new Long(i), Integer.toString(i));
allOptions.add(option);
}
allOptionsInArray = new Option[allOptions.size()];
return allOptions.toArray(allOptionsInArray);
}
/**
* fill the options for the minutes drop down
* @return
*/
public Option[] getMinutesDropDownData()
{
ArrayList<Option> allOptions = new ArrayList<Option>();
Option[] allOptionsInArray;
Option option;
//Crear opcion titulo
option = new Option(null, " -- ");
allOptions.add(option);
option = new Option(0L, "00");
allOptions.add(option);
option = new Option(1L, "01");
allOptions.add(option);
option = new Option(2L, "02");
allOptions.add(option);
option = new Option(3L, "03");
allOptions.add(option);
option = new Option(4L, "04");
allOptions.add(option);
option = new Option(5L, "05");
allOptions.add(option);
option = new Option(6L, "06");
allOptions.add(option);
option = new Option(7L, "07");
allOptions.add(option);
option = new Option(8L, "08");
allOptions.add(option);
option = new Option(9L, "09");
allOptions.add(option);
for(int i = 10; i <=59; i ++)
{
option = new Option(new Long(i), Integer.toString(i));
allOptions.add(option);
}
allOptionsInArray = new Option[allOptions.size()];
return allOptions.toArray(allOptionsInArray);
}
/**
* Metodo para obtener los datos a mostrar en los drop downs de la
* ventana de generacion que pertenecen a listas de seleccion
* @param selectionListEntityId que es el id del enum de listas de seleccion
* @return
*/
public Option[] getSelectionListDropDownData(Long selectionListEntityId) {
//getAllSelectionListElementsByCollection
List<SelectionListDTO> DTOList = this.getgermplasm$AccessionSessionBean().
getInventoryFacadeRemote().
getAllSelectionListElementsByCollection(selectionListEntityId, getAraSessionBean().getGlobalCollectionId());
/*List<SelectionListDTO> DTOList = this.getPassportSessionBean().
getGermplasmFacadeRemote().getElementsForSelectionList(selectionListEntityId);*/
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 (SelectionListDTO slDTO : DTOList) {
option = new Option(slDTO.getValueId(), slDTO.getValueName());
allOptions.add(option);
}
allOptionsInArray = new Option[allOptions.size()];
return allOptions.toArray(allOptionsInArray);
}
/**
* Performed the update action for a semen gathering
* @return
*/
public String updateSemenGathering()
{
try
{
SemenGatheringDTO semenGatheringDTO = getgermplasm$SemenGatheringSessionBean().getSemenGatheringDTO();
semenGatheringDTO.setUserName(getAraSessionBean().getGlobalUserName());
GregorianCalendar semenGatheringDateGC = new GregorianCalendar();
Date semenGatheringDate = this.getGatheringDate().getSelectedDate();
if (semenGatheringDate != null)
{
semenGatheringDateGC.setTime(semenGatheringDate);
getgermplasm$SemenGatheringSessionBean().getSemenGatheringDTO().
setSemenGatheringDate(semenGatheringDateGC);
}
String hhmm = null;
if(getgermplasm$SemenGatheringSessionBean().getSelectedHour() != null &&
getgermplasm$SemenGatheringSessionBean().getSelectedMinutes() != null)
{
String mm = getgermplasm$SemenGatheringSessionBean().getSelectedMinutes().toString();
if(mm.length() == 1)
mm = "0"+mm;
hhmm = getgermplasm$SemenGatheringSessionBean().getSelectedHour() +
":"+ mm;
}
getgermplasm$SemenGatheringSessionBean().getSemenGatheringDTO().
setSemenGatheringTime(hhmm);
if(semenGatheringDTO.getCurrentStrawQuantity() != null)
{
if(semenGatheringDTO.getCurrentStrawQuantity() <= semenGatheringDTO.getStrawQuantity() &&
semenGatheringDTO.getCurrentStrawQuantity() >= 0)
{
getgermplasm$SemenGatheringSessionBean().getGermplasmFacadeRemote().updateSemenGathering(semenGatheringDTO);
getgermplasm$SemenGatheringSessionBean().getPagination().refreshList();
MessageBean.setSuccessMessageFromBundle("update_semen_gathering_success", this.getMyLocale());
}
else
MessageBean.setErrorMessageFromBundle("error_current_straw_quantity", this.getMyLocale());
}
else
{
getgermplasm$SemenGatheringSessionBean().getGermplasmFacadeRemote().updateSemenGathering(semenGatheringDTO);
getgermplasm$SemenGatheringSessionBean().getPagination().refreshList();
MessageBean.setSuccessMessageFromBundle("update_semen_gathering_success", this.getMyLocale());
}
}
catch (Exception e)
{
MessageBean.setErrorMessageFromBundle("error", this.getMyLocale());
}
return null;
}
/**
* @return the myLocale
*/
public Locale getMyLocale() {
return this.getAraSessionBean().getCurrentLocale();
}
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected AraSessionBean getAraSessionBean() {
return (AraSessionBean) getBean("AraSessionBean");
}
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected SemenGatheringSessionBean getgermplasm$SemenGatheringSessionBean() {
return (SemenGatheringSessionBean) getBean("germplasm$SemenGatheringSessionBean");
}
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected AccessionSessionBean getgermplasm$AccessionSessionBean() {
return (AccessionSessionBean) getBean("germplasm$AccessionSessionBean");
}
/**
* <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 PersonSessionBean getadmin$PersonSessionBean() {
return (PersonSessionBean) getBean("admin$PersonSessionBean");
}
/**
* @return the semenGatheringMethod
*/
public SingleSelectOptionsList getSemenGatheringMethod() {
return semenGatheringMethod;
}
/**
* @param semenGatheringMethod the semenGatheringMethod to set
*/
public void setSemenGatheringMethod(SingleSelectOptionsList semenGatheringMethod) {
this.semenGatheringMethod = semenGatheringMethod;
}
/**
* @return the solvent
*/
public SingleSelectOptionsList getSolvent() {
return solvent;
}
/**
* @param solvent the solvent to set
*/
public void setSolvent(SingleSelectOptionsList solvent) {
this.solvent = solvent;
}
/**
* @return the hourDropDown
*/
public SingleSelectOptionsList getHourDropDown() {
return hourDropDown;
}
/**
* @param hourDropDown the hourDropDown to set
*/
public void setHourDropDown(SingleSelectOptionsList hourDropDown) {
this.hourDropDown = hourDropDown;
}
/**
* @return the minutesDropDown
*/
public SingleSelectOptionsList getMinutesDropDown() {
return minutesDropDown;
}
/**
* @param minutesDropDown the minutesDropDown to set
*/
public void setMinutesDropDown(SingleSelectOptionsList minutesDropDown) {
this.minutesDropDown = minutesDropDown;
}
/**
* @return the gatheringDate
*/
public Calendar getGatheringDate() {
return gatheringDate;
}
/**
* @param gatheringDate the gatheringDate to set
*/
public void setGatheringDate(Calendar gatheringDate) {
this.gatheringDate = gatheringDate;
}
/**
* @return the textTime
*/
public TextField getTextTime() {
return textTime;
}
/**
* @param textTime the textTime to set
*/
public void setTextTime(TextField textTime) {
this.textTime = textTime;
}
/**
* @return the consistency
*/
public SingleSelectOptionsList getConsistency() {
return consistency;
}
/**
* @param consistency the consistency to set
*/
public void setConsistency(SingleSelectOptionsList consistency) {
this.consistency = consistency;
}
}