Skip to main content

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.