private DocumentoProyecto getDocumentoProyecto(
      Long proy_proy,
      Map<String, Object> mapRequestParameters,
      Usuario usuario,
      String observacionCreacion) {
    DocumentoProyecto documento = null;
    try {

      DocumentoProyectoServicio docServicio = DocumentoProyectoServicio.getInstance();
      Long idDocumento = docServicio.getSiguienteID();
      Long version = docServicio.getSiguienteVersion(proy_proy);

      FileItem fileItem = (FileItem) mapRequestParameters.get("DocumentoProyecto");

      String rutabase = DocumentoProyectoServicio.getInstance().getRutaBaseDeArchivos();

      if (fileItem != null) {

        String nombreReal = FilenameUtils.getBaseName(fileItem.getName());
        String extension = FilenameUtils.getExtension(fileItem.getName());
        String nombreEnServidor =
            DocumentoProyectoServicio.getInstance()
                .construirNombreDeArchivo(proy_proy, idDocumento, version);

        String ruta = ServletUtils.copyFileItem(rutabase, fileItem, "/" + nombreEnServidor);

        Long longBytes = fileItem.getSize();
        File file = new File(ruta);
        System.out.println(file.exists());
        Long checkSum = FileUtils.checksumCRC32(file);

        DocumentoProyecto documentoProyecto = new DocumentoProyecto();
        documentoProyecto.setDproy_extension(extension);
        documentoProyecto.setDproy_falm(ServerServicio.getInstance().getSysdate());
        documentoProyecto.setDproy_dproy(idDocumento);
        documentoProyecto.setDproy_proy(proy_proy);
        documentoProyecto.setDproy_bytes(longBytes.toString());
        documentoProyecto.setDproy_nombre(nombreReal);
        documentoProyecto.setDproy_hash(checkSum.toString());
        documentoProyecto.setDproy_url(ruta);
        documentoProyecto.setDproy_vers(version);
        documentoProyecto.setDproy_usua(usuario.getUsua_usua());
        documentoProyecto.setDproy_observ(observacionCreacion);

        documento = documentoProyecto;
      }

      return documento;

    } catch (Throwable e) {
      SimpleLogger.error("Error obteniendo la informacion del documento de proyecto", e);
      return null;
    }
  }
  public StringBuffer executeAction(HttpServletRequest request) {

    StringBuffer xmlPage = new StringBuffer();
    ObjectToXML objectToXML = ObjectToXML.getInstance();

    // Session de aplicacion
    SessionAppUsuario sessionAppUsuario =
        AutenticadorServicio.getInstance().getSessionAppUsuario(request);

    if (sessionAppUsuario != null) {

      // Solicitante
      Estudiante solicitante =
          EstudianteServicio.getInstance().getEstudiantePorUsuario(sessionAppUsuario.getUsuario());

      if (solicitante != null) {

        Map<String, Object> parameters = getParameters(request, true);
        Proyecto proyecto =
            (Proyecto) getParameterToObject("Proyecto", Proyecto.class, null, parameters);
        String observacion =
            (String) getParameterToObject("Observacion", String.class, null, parameters);

        if (proyecto != null) {

          DocumentoProyecto documento =
              getDocumentoProyecto(
                  proyecto.getProy_proy(), parameters, sessionAppUsuario.getUsuario(), observacion);

          if (documento != null) {

            StringBuffer mensajeError = new StringBuffer();
            Boolean sinErrores =
                DocumentoProyectoServicio.getInstance()
                    .crearNuevaVersionDocumentoTransaccional(
                        documento, sessionAppUsuario.getUsuario(), mensajeError);

            if (!sinErrores) {
              this.nextPage = this.nextPage + "?error=1";
              sessionAppUsuario.getHttpSession().removeAttribute("var.error");
              sessionAppUsuario.getHttpSession().setAttribute("var.error", mensajeError.toString());

              sessionAppUsuario.notificarEvento(
                  "Error creando version de proyecto: " + mensajeError.toString());
            } else {

              // TODO Si se crea la preproyecto se debe notiticar a los participantes

              sessionAppUsuario.getHttpSession().setAttribute("var.crearVersionDocProyecto", true);

              // Se crea un nuevo mensaje de session
              sessionAppUsuario.notificarEvento(
                  "Se ha creado correctamente la versión No. "
                      + documento.getDproy_vers()
                      + " de la proyecto No."
                      + documento.getDproy_proy());
            }
          }
        }

      } else {
        this.nextPage = this.nextPage + "?error=1";
        sessionAppUsuario.getHttpSession().removeAttribute("var.error");
        sessionAppUsuario
            .getHttpSession()
            .setAttribute(
                "var.error",
                "No se puede crear la version de la proyecto ya que el usuario registrado no es un estudiante");
      }

    } else {
      xmlPage.append("<error>1</error>");
      xmlPage.append(
          objectToXML.getXML(
              new String("Usuario invalido. Por favor inicie session correctamente")));
    }

    return xmlPage;
  }