Copyright (C) 2019-2023 The Open Library Foundation
This software is distributed under the terms of the Apache License, Version 2.0. See the file "LICENSE" for more information.
Data Import Converter Storage.
Provides PostgreSQL based storage to complement the data import module. Written in Java, using the raml-module-builder and uses Maven as its build system.
mvn install
See that it says "BUILD SUCCESS" near the end.
Build the docker container with:
docker build -t mod-di-converter-storage .
Test that it runs with:
docker run -t -i -p 8081:8081 mod-di-converter-storage
Follow the guide of Deploying Modules sections of the Okapi Guide and Reference, which describe the process in detail.
First of all you need a running Okapi instance. (Note that specifying an explicit 'okapiurl' might be needed.)
cd .../okapi
java -jar okapi-core/target/okapi-core-fat.jar dev
We need to declare the module to Okapi:
curl -w '\n' -X POST -D - \
-H "Content-type: application/json" \
-d @target/ModuleDescriptor.json \
http://localhost:9130/_/proxy/modules
That ModuleDescriptor tells Okapi what the module is called, what services it provides, and how to deploy it.
Next we need to deploy the module. There is a deployment descriptor in
target/DeploymentDescriptor.json
. It tells Okapi to start the module on 'localhost'.
Deploy it via Okapi discovery:
curl -w '\n' -D - -s \
-X POST \
-H "Content-type: application/json" \
-d @target/DeploymentDescriptor.json \
http://localhost:9130/_/discovery/modules
Then we need to enable the module for the tenant:
curl -w '\n' -X POST -D - \
-H "Content-type: application/json" \
-d @target/TenantModuleDescriptor.json \
http://localhost:9130/_/proxy/tenants/<tenant_name>/modules
Provides RMB generated Client to call the module's endpoints. The Client is packaged into the lightweight jar.
<dependency>
<groupId>org.folio</groupId>
<artifactId>mod-di-converter-storage-client</artifactId>
<version>x.y.z</version>
<type>jar</type>
</dependency>
Where x.y.z - version of mod-di-converter-storage.
ConverterStorageClient is generated by RMB and provides methods for all endpoints described in the RAML file
// create client object with okapi url, tenant id and token
ConverterStorageClient client = new ConverterStorageClient("localhost", "diku", "token");
Clients methods work with RMB generated data classes based on json schemas. mod-di-converter-storage-client jar contains only generated by RMB DTOs and clients.
Example of sending a request to the mod-di-converter-storage
// send request to mod-di-converter-storage
client.getConverterStorage(response->{
// processing response
if (response.statusCode() == 200){
System.out.println("Call is successful");
}
});
The module contains sample data for job, action, match and mapping profiles.
To create sample data for particular tenant you should enable the module for a tenant
using /_/proxy/tenants/id/install?tenantParameters=loadSample=true
endpoint with specified tenant parameter loadSample=true
. \
See project MODDICONV at the FOLIO issue tracker.