public static void updateEstadosSolicitudUsuario() {
    java.util.List<TableKeyValue> rows =
        TableKeyValue.find("select tableKeyValue from TableKeyValue tableKeyValue").fetch();

    Secure secure = InjectorConfig.getInjector().getInstance(Secure.class);

    Map<String, Long> ids = new HashMap<String, Long>();

    List<TableKeyValue> rowsFiltered = new ArrayList<TableKeyValue>();
    for (TableKeyValue tableKeyValue : rows) {
      Map<String, Object> vars = new HashMap<String, Object>();
      vars.put("tableKeyValue", tableKeyValue);
      if (secure.check("tableKeyOnlyEstadosSolicitud", "read", ids, vars)) {
        rowsFiltered.add(tableKeyValue);
      }
    }

    // Ahora en "rowsFiltered" tenemos los estados de la solicitud original
    // Si no existe alguno de los estados originales en la lista de los usuarios, lo creamos
    for (TableKeyValue tableKeyValue : rowsFiltered) {
      if (!TableKeyValue.contains(USER_TABLE_NAME, tableKeyValue.key)) {
        play.Logger.info(
            "Creamos el estado \""
                + tableKeyValue.key
                + "\" para la visibilidad del estado del usuario");
        TableKeyValue.setValue(USER_TABLE_NAME, tableKeyValue.key, tableKeyValue.key);
      }
    }
  }
  @Util
  public static void prepararParaFirmarFormPreparar(Long idSolicitud) {
    // Sobreescribir este método para asignar una acción
    Solicitud dbSolicitud = PaginaFirmaController.getSolicitud(idSolicitud);

    play.Logger.info("Preparamos para firmar");
    FirmaService firmaService = InjectorConfig.getInjector().getInstance(FirmaService.class);

    FirmaUtils.generarOficial(dbSolicitud);

    if (!Messages.hasErrors()) {
      dbSolicitud.registro.fasesRegistro.borrador = true;
      dbSolicitud.solicitante.autorizaFuncionario = false;
      dbSolicitud.registro.fasesRegistro.setFase(FaseRegistroEnum.preparada);
      dbSolicitud.save();

      // Borra firmantes anteriores
      List<Firmante> firmantesBack = new ArrayList<Firmante>(dbSolicitud.registro.firmantes);
      dbSolicitud.registro.firmantes.clear();
      dbSolicitud.registro.save();
      FirmaUtils.borrarFirmantes(firmantesBack);

      // Calcula quién puede firmar la solicitud
      dbSolicitud.registro.firmantes = dbSolicitud.solicitante.calcularFirmantes();

      // dbSolicitud.solicitante.autorizaFuncionario = true;
      dbSolicitud.registro.save();

      play.Logger.info("FIRMANTES");
      for (Firmante f : dbSolicitud.registro.firmantes) {
        play.Logger.info(f.toString());
      }
    }

    if (!Messages.hasErrors()) Messages.ok("Solicitud preparada para firmar");
  }