/*
      public void initConsultarEstrategia(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
          try {
              CommonService service = ProxyUtil.getCommonServicePort(Config.TIMEOUT);

              Resultado resultado = createSuccessResult(service.listarEstrategia());

              generalAction(resultado, response);
          } catch (Exception e) {
              //logger.error("Error al obtener plan", e);
              LoggerUtil.error(logger, "consultarEstrategia", "planificación",
                      Calendar.getInstance(), ActionUtil.obtenerNombreUsuarioLogeado(request),
                      e.getMessage(), e);
              generalAction(createErrorResult(e), response);
          }
      }

      public void initConsultarActividad(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
          try {
              CommonService service = ProxyUtil.getCommonServicePort(Config.TIMEOUT);
              String codigoEstrategia = request.getParameter("codigoEstrategia");
              logger.debug("Consultando actividades de la estrategia [{}]", codigoEstrategia);

              Resultado resultado = createSuccessResult(service.listarEstrategiaActividad(codigoEstrategia));

              generalAction(resultado, response);
          } catch (Exception e) {
              //logger.error("Error al obtener plan", e);
              LoggerUtil.error(logger, "consultarActividad", "planificación",
                      Calendar.getInstance(), ActionUtil.obtenerNombreUsuarioLogeado(request),
                      e.getMessage(), e);
              generalAction(createErrorResult(e), response);
          }
      }
  */
  public void generarProgramacionPlan(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response) {
    logger.debug("generando prgoramacion del plan ... ");
    try {
      PlanificacionService service = ProxyUtil.getPlanificacionServicePort(Config.TIMEOUT);
      String json = request.getParameter("plan");
      logger.debug("json [{}]", json);
      com.sacooliveros.gepsac.service.planificacion.Plan plan =
          jsonBuilder.fromJson(json, com.sacooliveros.gepsac.service.planificacion.Plan.class);

      logger.debug("plan [{}]", plan);
      com.sacooliveros.gepsac.service.planificacion.Plan planProgramado =
          service.generarProgramacion(plan);

      logger.info("Prgoramacion plan generado [{}]", planProgramado);
      generalAction(createSuccessResult(planProgramado), response);
    } catch (Exception e) {
      logger.error("Error al guardar la configuracion del plan", e);
      LoggerUtil.error(
          logger,
          "generarProgramacionPlan",
          "planificación",
          Calendar.getInstance(),
          ActionUtil.obtenerNombreUsuarioLogeado(request),
          e.getMessage(),
          e);
      generalAction(createErrorResult(e), response);
    }
  }
  private void generalAction(Resultado resultado, HttpServletResponse response) {
    String json;
    String mensaje;
    json = resultado.getJson();
    mensaje = resultado.getMensaje();

    if (StringUtils.isNotBlank(json)) {
      ActionUtil.enviarJson(json, response);
    }

    if (StringUtils.isNotBlank(mensaje)) {
      try {
        response.getWriter().write(mensaje);
        response.flushBuffer();
      } catch (IOException e) {
        throw new RuntimeException(e);
      }
    }
    response.setStatus(resultado.getCodigo());
  }
  public void obtenerProgramarPlan(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response) {
    logger.debug("obtenerProgramarPlan ...");
    try {
      PlanificacionService service = ProxyUtil.getPlanificacionServicePort(Config.TIMEOUT);

      Resultado resultado = createSuccessResult(service.obtenerProgramarPlan());

      generalAction(resultado, response);
    } catch (Exception e) {
      LoggerUtil.error(
          logger,
          "obtenerProgramarPlan",
          "planificación",
          Calendar.getInstance(),
          ActionUtil.obtenerNombreUsuarioLogeado(request),
          e.getMessage(),
          e);
      generalAction(createErrorResult(e), response);
    }
  }