ar.com.cristal.creditos.client.tambo.partediario.celoservicio.PdCeloServicioActivity.java Source code

Java tutorial

Introduction

Here is the source code for ar.com.cristal.creditos.client.tambo.partediario.celoservicio.PdCeloServicioActivity.java

Source

 /*
  * Copyright 2011 Google Inc. All Rights Reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *     http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package ar.com.cristal.creditos.client.tambo.partediario.celoservicio;

 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;

 import ar.com.cristal.creditos.client.ClientFactory;
 import ar.com.cristal.creditos.client.dto.TipoCeloServicioEnumDTO;
 import ar.com.cristal.creditos.client.tambo.dto.CeloServicioDTO;
 import ar.com.cristal.creditos.client.tambo.dto.InseminadorDTO;
 import ar.com.cristal.creditos.client.tambo.dto.TipoServicioDTO;
 import ar.com.cristal.creditos.client.tambo.dto.ToroDTO;
 import ar.com.cristal.creditos.client.tambo.dto.VacaDTO;
 import ar.com.cristal.creditos.client.tambo.partediario.parto.PdPartoPlace;
 import ar.com.cristal.creditos.client.ui.home.HomePlace;
 import ar.com.cristal.creditos.client.ui.util.ClientContext;
 import ar.com.cristal.creditos.client.ui.util.ConstantesView;
 import ar.com.cristal.creditos.client.ui.util.CustomAbstractActivity;
 import ar.com.cristal.creditos.client.ui.util.InicializarCombos;
 import ar.com.cristal.creditos.client.ui.util.PopUpInfo;
 import ar.com.cristal.creditos.client.widget.CustomSiNoDialogBox;
 import ar.com.cristal.creditos.util.DateUtil;

 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.event.shared.HandlerRegistration;
 import com.google.gwt.place.shared.Place;
 import com.google.gwt.user.client.rpc.AsyncCallback;
 import com.google.gwt.user.client.ui.AcceptsOneWidget;
 import com.google.gwt.user.client.ui.Button;
 import com.google.gwt.user.client.ui.DialogBox;
 import com.google.gwt.user.client.ui.HTMLTable.Cell;

 /**
  * Activities are started and stopped by an ActivityManager associated with a container Widget.
  */
 public class PdCeloServicioActivity extends CustomAbstractActivity implements PdCeloServicioView.Presenter {

     private ClientFactory clientFactory;
     public PopUpInfo popup = null;
     private PdCeloServicioView view;
     private String token;
     private Place place = null;
     private HandlerRegistration handlerRegistrationAdd;
     private final String ID_COMPONENTE_ACTIVITY = "PD_CELOSYSERVICIOS";
     private long tiempo = new Date().getTime();
     private Date fechaParteDiario;

     public PdCeloServicioActivity(PdCeloServicioPlace place, ClientFactory cf) {
         clientFactory = cf;
         popup = clientFactory.getPopUp();
         view = clientFactory.getPdCeloServicioView();
         view.limpiarControles();
         view.setWidth(ConstantesView.maxPanelWidthPixels);
         token = place.getToken();
         this.place = place;
     }

     public void start(AcceptsOneWidget containerWidget, EventBus eventBus) {

         super.start(containerWidget, eventBus, ID_COMPONENTE_ACTIVITY);
         view.setPresenter(this);

         view.clienteDiv.setInnerText("Carga de parte diario");

         containerWidget.setWidget(view.asWidget());

     }

     @Override
     public String mayStop() {
         return null;
     }

     private void inicializarControles() {
         try {
             if (token != null && !token.isEmpty() && !token.equalsIgnoreCase("null")) {
                 fechaParteDiario = new Date(Long.valueOf(token));
                 System.out.println(fechaParteDiario);
             }

             view.limpiarControles();
             view.initTable();
             cargarCelosServicios(fechaParteDiario);
             inicializarCombos();
             view.visibilizarControlesParaServicio(false);

         } catch (Exception e) {
             popup.mostrarMensaje("Error", "No se pudo inicializar los controles");
         }

     }

     /**
      * Recupera los celos y servicios de la fecha y los muestra en la grilla
      * @param date
      */
     private void cargarCelosServicios(Date fecha) {
         popup.mostrarMensaje("Espere", "Obteniendo celos y servicios...");
         clientFactory.getVacasService().obtenerCelosServiciosPorFechaRPC(fecha,
                 new AsyncCallback<List<CeloServicioDTO>>() {

                     @Override
                     public void onFailure(Throwable e) {
                         popup.mostrarMensaje("Atencion", "Ha ocurrido un error: " + e.getMessage());

                     }

                     @Override
                     public void onSuccess(List<CeloServicioDTO> lista) {
                         view.initTable();
                         for (CeloServicioDTO c : lista) {
                             agregarCeloServicioATabla(c);
                         }
                         popup.ocultar();

                     }

                 });

     }

     /**
      * El goTo place es cambiado para dar el comportamiento deseado por la pantalla:
      * Primero se ubica la operacin que se esta tratando de hacer para luego verificar si el cliente y/o el credito
      * cumplen con las precondiciones. Luego se redirige en caso positivo o se muestra un mensaje de error en caso contrario.
      * 
      * @author lucas.napoli
      * @see PdCeloServicioView.Presenter#goTo(Place)
      */
     public void goTo(final Place place) {

         clientFactory.getPlaceController().goTo(place);

     }

     public void onCerrar() {
         Place place = new HomePlace("");
         clientFactory.getPlaceController().goTo(place);

     }

public void cambioDePestaa(final Place place){
   if (place != null)
      clientFactory.getPlaceController().goTo(place);
 
}

     @Override
     public void inicializarActivity() {
         System.out.println("Tiempo de validacin de permisos y usuario [ms]: " + (new Date().getTime() - tiempo));
         //fechaParteDiario=new Date();
         tiempo = new Date().getTime();
         inicializarControles();
         view.anchorCelosServicios.getElement().getStyle().setBackgroundColor("#006AA4");
     }

     @Override
     public void irCelosServicios() {
         // TODO Auto-generated method stub

     }

     @Override
     public void irPartos() {
         String fechaParam = String.valueOf(fechaParteDiario.getTime());
         Place place = new PdPartoPlace(fechaParam);
         clientFactory.getPlaceController().goTo(place);

     }

     @Override
     public void irIngresosSecadas() {
         // TODO Auto-generated method stub

     }

     @Override
     public void irSuplementacion() {
         // TODO Auto-generated method stub

     }

     @Override
     public void irSanidad() {
         // TODO Auto-generated method stub

     }

     @Override
     public void irBajas() {
         // TODO Auto-generated method stub

     }

     @Override
     public void onGuardar() {
         // TODO Auto-generated method stub

     }

     private void inicializarCombos() {
         InicializarCombos.inicializarComboVacas(null, view.cmbVaca);
         InicializarCombos.inicializarComboToros(null, view.cmbToro);
         InicializarCombos.InicializarComboTipoCeloServicio(view.cmbTipo);
         InicializarCombos.inicializarComboInseminadores(null, view.cmbInseminador);
         InicializarCombos.inicializarComboTiposServicio(null, view.cmbTipoServicio);
     }

     @Override
     public void onAgregarCeloServicio() {
         List<String> errores = new ArrayList<String>();
         boolean datosValidos = validarDatos(errores);
         if (datosValidos) {
             CeloServicioDTO csDTO = armarCeloServicioDTO();
             popup.mostrarMensaje("Espere", "Insertando novedad...");
             clientFactory.getVacasService().insertarCeloServicioRPC(csDTO, true,
                     new AsyncCallback<CeloServicioDTO>() {

                         @Override
                         public void onFailure(Throwable e) {
                             popup.mostrarMensaje("Ha ocurrido un error: " + e.getMessage());
                         }

                         @Override
                         public void onSuccess(CeloServicioDTO r) {
                             view.limpiarControles();
                             cargarCelosServicios(fechaParteDiario);
                         }

                     });

         } else {
             popup.mostrarMensaje("Error", errores);
         }
     }

     /**
      * Devuelve el DTO armado con los datos de la pantalla
      * @return
      */
     private CeloServicioDTO armarCeloServicioDTO() {
         CeloServicioDTO result = new CeloServicioDTO();

         result.setEliminado(false);
         result.setFecha(fechaParteDiario);
         result.setEstablecimiento(ClientContext.getInstance().getUsuarioLogueadoDTO().getEstablecimientoActual());
         result.setInseminador((view.cmbInseminador.isVisible() && view.cmbInseminador.getSelectedItem() != null)
                 ? (InseminadorDTO) view.cmbInseminador.getSelectedItem()
                 : null);
         result.setLactancia(Integer.valueOf(view.nroLactancia.getText()));
         result.setNroCeloServicio(Integer.valueOf(view.nroCeloServicio.getText()));
         result.setObservaciones("");
         result.setTipo((TipoCeloServicioEnumDTO) view.cmbTipo.getSelectedItem());
         result.setTipoServicio(
                 view.cmbTipoServicio.isVisible() ? (TipoServicioDTO) view.cmbTipoServicio.getSelectedItem() : null);
         result.setToro((view.cmbToro.isVisible() && view.cmbToro.getSelectedItem() != null)
                 ? (ToroDTO) view.cmbToro.getSelectedItem()
                 : null);
         result.setVaca((VacaDTO) view.cmbVaca.getSelectedItem());

         if ((view.cmbToro.isVisible() && view.cmbToro.getSelectedItem() != null)) {
             ToroDTO t = (ToroDTO) view.cmbToro.getSelectedItem();
             if (t.getProducto() != null)
                 result.setPrecio(t.getProducto().getPrecioUnitario());
         }

         return result;
     }

     private boolean validarDatos(List<String> mensajeError) {
         boolean result = true;
         try {

             mensajeError.clear();

             // valida RP
             if (view.cmbVaca.getSelectedItemText().length() == 0) {
                 result = false;
                 mensajeError.add("El RP es un campo obligatorio.");
             }

             // valida Nro
             if (view.nroCeloServicio.getText().isEmpty()) {
                 result = false;
                 mensajeError.add("El Nro es un campo obligatorio.");

             }

             // valida Lactancia
             if (view.nroLactancia.getText().isEmpty()) {
                 result = false;
                 mensajeError.add("Lactancia es un campo obligatorio.");
             }

             // valida Evento
             if (view.cmbTipo.getSelectedItemText().length() == 0) {
                 result = false;
                 mensajeError.add("El evento es un campo obligatorio.");
             }

             // Si es Servicio, valida Toro
             if (view.cmbToro.isVisible() && view.cmbToro.getSelectedItemText().length() == 0) {
                 result = false;
                 mensajeError.add("El Toro es un campo obligatorio para cargar un servicio.");
             }

         } catch (Exception e) {
             mensajeError.add("Error: " + e.getMessage());
             result = false;
         }

         return result;
     }

     private void agregarCeloServicioATabla(CeloServicioDTO c) {
         int i = view.lstCelosServicios.getRowCount() - 1;

         view.lstCelosServicios.setText(i + 1, 0, String.valueOf(c.getId()));
         view.lstCelosServicios.setText(i + 1, 1, c.getVaca().getRp());
         view.lstCelosServicios.setText(i + 1, 2, String.valueOf(c.getNroCeloServicio()));
         view.lstCelosServicios.setText(i + 1, 3, String.valueOf(c.getLactancia()));
         view.lstCelosServicios.setText(i + 1, 4, c.getTipo().getItemText());
         view.lstCelosServicios.setText(i + 1, 5, (c.getToro() != null) ? c.getToro().getNombre() : "");
         view.lstCelosServicios.setText(i + 1, 6,
                 (c.getTipoServicio() != null) ? c.getTipoServicio().getDescripcion() : "");
         view.lstCelosServicios.setText(i + 1, 7,
                 (c.getInseminador() != null) ? c.getInseminador().getItemText() : "");

         //Boton Elimimnar
         Button cmdEliminarCeloServicio = new Button("Eliminar");
         cmdEliminarCeloServicio.addClickHandler(new ClickHandler() {
             public void onClick(ClickEvent event) {
                 Cell cellSelected = view.lstCelosServicios.getCellForEvent(event);
                 int rowSelected = cellSelected.getRowIndex();
                 Long idCeloServicio = Long.valueOf(view.lstCelosServicios.getText(rowSelected, 0));
                 eliminarCeloServicio(idCeloServicio);
             }
         });
         view.lstCelosServicios.setWidget(i + 1, 8, cmdEliminarCeloServicio);

         if (i % 2 == 0) {
             view.lstCelosServicios.getRowFormatter().addStyleName(i + 1, "TableRow1Pointer");
         } else {
             view.lstCelosServicios.getRowFormatter().addStyleName(i + 1, "TableRow2Pointer");
         }

     }

     /**
      * Llama al RPC que borra el servicio y refresca la grilla 
      */

     private void eliminarCeloServicio(final Long idCeloServicio) {
         final DialogBox dialogbox = CustomSiNoDialogBox.dialogBox("Atencin",
                 "Est seguro de eliminar el evento?");
         ClickHandler listenerNo = new ClickHandler() {

             public void onClick(ClickEvent arg0) {
                 dialogbox.hide();
             }
         };

         ClickHandler listenerSi = new ClickHandler() {

             public void onClick(ClickEvent arg0) {
                 dialogbox.hide();
                 popup.mostrarMensaje("Espere", "Eliminando el evento...");
                 clientFactory.getVacasService().eliminarCeloServicioPorIdRPC(idCeloServicio, true,
                         new AsyncCallback<CeloServicioDTO>() {

                             @Override
                             public void onFailure(Throwable e) {
                                 popup.mostrarMensaje("Atencin", "Ha ocurrido un error al eliminar el evento.");
                             }

                             @Override
                             public void onSuccess(CeloServicioDTO result) {
                                 popup.ocultar();
                                 cargarCelosServicios(fechaParteDiario);
                             }
                         });
             }
         };

         CustomSiNoDialogBox.setHandlers(listenerSi, listenerNo);

     }

 }