Hola,

Si necesitan obtener los datos de un plan de uso mediante código (en este caso Java) y solo les aparece para hacerlo con CLI (interfaz de línea de comandos de AWS), pueden utilizar el siguiente código, eso sí, deben pasarle el ID del plan de uso del cual desean obtener los datos.


A nivel del build.gradle va esto:

dependencies {

implementation 'com.amazonaws:aws-lambda-java-core:1.2.0'
/**
* AWS
*/
compile group: 'com.amazonaws', name: 'aws-java-sdk-dynamodb', version: '1.11.789'

compile group: 'software.amazon.awssdk', name: 'core', version: '2.0.0-preview-9'

compile group: 'software.amazon.awssdk', name: 'api-gateway', version: '2.0.0-preview-9'

compile group: 'software.amazon.awssdk', name: 'cognitoidp', version: '2.0.0-preview-9'

compile group: 'com.amazonaws', name: 'aws-java-sdk-ec2', version: '1.11.923'


compile group: 'com.amazonaws', name: 'aws-java-sdk-api-gateway', version: '1.11.923'
compile "org.slf4j:slf4j-simple:1.6.1"

}

A nivel de la clase propia del método, va esto:
import com.amazonaws.regions.Regions;
import com.amazonaws.services.apigateway.AmazonApiGateway;
import com.amazonaws.services.apigateway.AmazonApiGatewayClientBuilder;
import software.amazon.awssdk.core.AwsRequestOverrideConfig;
import software.amazon.awssdk.services.apigateway.APIGatewayClient;
import software.amazon.awssdk.services.apigateway.model.GetApiKeysRequest;
import software.amazon.awssdk.services.apigateway.model.GetApiKeysResponse;
import java.util.logging.Level;
import java.util.logging.Logger;

private static final java.util.logging.Logger log = Logger.getLogger("NombreClaseDelCodigo");

/**
* Metodo encargado de obtener los datos de un plan de uso en especifico mediante el id del plan de uso.
*
* @param strPlanID Define el Id del plan de uso a consultar.
*/
public void obtenerDatosDelPlanDeUso(String strPlanID) {

try {

/*
* instancia del cliente de Amazon
*/
AmazonApiGateway apiGateway = AmazonApiGatewayClientBuilder.standard().withRegion(Regions.US_EAST_1).build();

/*
* obtener los datos del plan de uso
*/
com.amazonaws.services.apigateway.model.GetUsagePlanRequest getUsagePlanRequest = new com.amazonaws.services.apigateway.model.GetUsagePlanRequest();
getUsagePlanRequest.setUsagePlanId(strPlanID);

/*
* obtener el plan de uso del usuario actual
*/
com.amazonaws.services.apigateway.model.GetUsagePlanResult getUsagePlanResult = apiGateway.getUsagePlan(getUsagePlanRequest);

log.log(Level.INFO, "id[{0}] Metodo obtenerDatosDelPlanDeUso(), el nombre del plan de uso es: {1}",
new Object[]{Thread.currentThread().getId(), getUsagePlanResult.getName()});

} catch (Exception exception) {
log.log(Level.WARNING, "id[{0}] Exception en el metodo obtenerDatosDelPlanDeUso(), " +
"la advertencia es: {1} ",
new Object[]{Thread.currentThread().getId(), exception});
}

}
Hola,

La función de Oracle TO_DATE, es la función que se ejecuta en las bases de datos de Oracle para controlar, gestionar y modificar fechas.


Si al momento de insertar un registro en la base de datos con está función, utilizando el siguiente formato:

TO_DATE(SYSDATE, 'DD/MM/YYYY HH24:MI:SS')

Y aún así, Oracle solo muestra la fecha mas no la hora, se debe a que la mascara de formato predeterminada de la base de datos no muestra la hora, para alterar esta mascara predeterminada y almacenar correctamente el formato de fecha y hora, se debe utilizar el siguiente alter:

alter session set nls_date_format = 'DD/MM/YYYY hh24:mi:ss';

Con esto se almacenará la hora en formato de 24 horas y se solucionará el problema, quedando el dato insertado así: "20/06/2012 18:13:58" si se desea implementar este alter dentro de una función o procedimiento en Oracle, debe utilizarse de la siguiente forma:

EXECUTE IMMEDIATE 'alter session set nls_date_format = ''DD/MM/YYYY hh24:mi:ss''';

Dentro del begin inicial de un procedimiento.
Hola,

En Oracle el parámetro NLS_NUMERIC_CHARACTERS especifica los caracteres a utilizar como separador de grupo y carácter decimal. 


Si se necesita cambiar un delimitador en Oracle, para evitar errores de porcentajes, se debe utilizar el siguiente alter:

ALTER SESSION SET NLS_NUMERIC_CHARACTERS='.,';

Con esto se cambiara el delimitador punto (.) por el delimitador (,) si se desea implementar este alter dentro de una función o procedimiento en Oracle, debe utilizarse de la siguiente forma:

EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_NUMERIC_CHARACTERS=''.,''';

Dentro del begin inicial de un procedimiento.

Si se desea utilizar este parámetro en un select, se puede utilizar así:

SELECT TO_CHAR(1000000000,'999G999G999G999D99','NLS_NUMERIC_CHARACTERS = ''.,''') FROM DUAL;

Y el resultado final es:

1,000,000,000.00

Puesto que se reemplaza el delimitador de punto (.) por el delimitador de coma (,).
Hola,

Por si en algún momento en que estén programando con la librería OkHttpClient, para crear instancias de conexión contra microservicios, al obtener el response mediante la clase Response, les sale el error:

java.lang.IllegalStateException: closed


Se debe a que se está llamando el cuerpo de respuesta 2 veces, es decir, la línea de comando: response.body().string(); se está invocando dos veces en el código y es la segunda vez de la invocación la que genera está excepción.
Para solucionar esto, se sugiere que se cree una variable de tipo String una sola vez y que sea está variable la que se utilice en el código, de esta manera:

String strResponseBody = response.body().string();

log.info("Response obtenido es: " + strResponseBody);

Listo, eso es todo.