Java Getting Started
Install and build
Project coordinates (after building this repository locally):
<dependency>
<groupId>com.aidaas.sdk</groupId>
<artifactId>aidaas-data-sdk-java</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
Install locally in this repository:
mvn -pl sdk/java -am install
Then include the dependency in your own project.
Client initialization
// Environment variables (recommended)
String tokenUrl = System.getenv().getOrDefault("KC_TOKEN_URL", "http://localhost:8180/realms/07c5b6ff/protocol/openid-connect/token");
String clientId = System.getenv().getOrDefault("KC_CLIENT_ID", "ai-daas-cli");
String clientSecret = System.getenv().getOrDefault("KC_CLIENT_SECRET", "cli-secret");
String tenantId = System.getenv().getOrDefault("TENANT_ID", "07c5b6ff");
TokenProvider tp = new ClientCredentialsTokenProvider(tokenUrl, clientId, clientSecret, null);
DataServiceClient ds = new DataServiceClient("http://localhost:8080/data", tenantId, tp);
Generic CRUD example (GenericRecord)
The snippet below is adapted from sdk/java/src/test/java/com/aidaas/sdk/v2/CRUDGenericRecordExampleV2.java, demonstrating list, conditional query, create, get-by-id, update, delete, conditional update/delete, and upsert:
String entityName = System.getenv().getOrDefault("ENTITY_NAME", "customers");
String pkField = System.getenv().getOrDefault("PK_FIELD", "id");
CrudRepository<GenericRecord> repo = new CrudRepository<>(ds, GenericRecord.class, entityName, pkField);
// List
List<GenericRecord> list = repo.list(10, 0);
System.out.println("[GenericRecord] list size: " + list.size());
// Filtered list (name ilike %example%)
Predicate where = Predicate.builder().iLike("name", "%example%").and();
List<GenericRecord> filtered = repo.list(where, 10, 0);
System.out.println("[GenericRecord] filtered size: " + filtered.size());
// Create
GenericRecord r = GenericRecord.of(entityName, pkField)
.set("name", "RecordUser")
.set("email", "record.user@example.com")
.set("age", 25);
List<GenericRecord> created = repo.create(r);
GenericRecord createdOne = created.isEmpty() ? null : created.get(0);
System.out.println("[GenericRecord] created: " + createdOne);
if (createdOne != null) {
Object id = createdOne.getId();
// Get by ID
GenericRecord byId = repo.getById(id);
System.out.println("[GenericRecord] byId: " + byId);
// Update
Map<String, Object> set = Map.of("email", "record.user+updated@example.com");
List<GenericRecord> updated = repo.update(id, set);
System.out.println("[GenericRecord] updated: " + (updated.isEmpty() ? null : updated.get(0)));
// Delete
int deleted = repo.delete(id);
System.out.println("[GenericRecord] deleted rows: " + deleted);
}
// Update where
List<GenericRecord> updatedWhere = repo.updateWhere(
Predicate.builder().iLike("email", "%example.com").and(),
Map.of("age", 27)
);
System.out.println("[GenericRecord] updated where count: " + updatedWhere.size());
// Delete where
int deletedWhere = repo.deleteWhere(
Predicate.builder().like("name", "%TempUser").and()
);
System.out.println("[GenericRecord] deleted where count: " + deletedWhere);
// Upsert by unique key
GenericRecord upsertRecord = GenericRecord.of(entityName, pkField)
.set("name", "RecordUpsert")
.set("email", "record.upsert@example.com")
.set("age", 31);
List<GenericRecord> upserted = repo.upsert(List.of("email"), upsertRecord);
System.out.println("[GenericRecord] upserted: " + (upserted.isEmpty() ? null : upserted.get(0)));
You can also use typed entities (such as Customers); see CRUDExampleV2.java. The calling pattern is similar to GenericRecord.