Skip to content

Commit d051b98

Browse files
Merge pull request #2119 from oracle-devrel/witold-swierzy-soda-java
Witold swierzy soda java
2 parents d5f7ac3 + 9381372 commit d051b98

File tree

3 files changed

+130
-0
lines changed

3 files changed

+130
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
This repository contains simple SODA Java console application
2+
This application DOES NOT USE standard Oracle JDBC driver.
3+
Instead of this it uses SODA JDBC driver to perform SODA operations on document data structures (collections, documents) in an Oracle Database
4+
5+
# License
6+
7+
Copyright (c) 2024 Oracle and/or its affiliates.
8+
9+
Licensed under the Universal Permissive License (UPL), Version 1.0.
10+
11+
See [LICENSE](https://github.com/oracle-devrel/technology-engineering/blob/main/LICENSE) for more details.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>com.oracle</groupId>
8+
<artifactId>SODAJavaDemo</artifactId>
9+
<version>1.0-SNAPSHOT</version>
10+
11+
<properties>
12+
<maven.compiler.source>21</maven.compiler.source>
13+
<maven.compiler.target>21</maven.compiler.target>
14+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
15+
</properties>
16+
<dependencies>
17+
<!-- https://mvnrepository.com/artifact/com.oracle.database.soda/orajsoda -->
18+
<dependency>
19+
<groupId>com.oracle.database.soda</groupId>
20+
<artifactId>orajsoda</artifactId>
21+
<version>1.1.29</version>
22+
</dependency>
23+
<dependency>
24+
<groupId>com.oracle.database.security</groupId>
25+
<artifactId>oraclepki</artifactId>
26+
<version>23.9.0.25.07</version>
27+
</dependency>
28+
</dependencies>
29+
</project>
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package com.oracle;
2+
3+
import oracle.soda.*;
4+
import oracle.soda.rdbms.OracleRDBMSClient;
5+
import oracle.jdbc.datasource.impl.OracleDataSource;
6+
import java.util.List;
7+
8+
public class Main {
9+
private static OracleDatabase sodaDb;
10+
private static OracleDatabaseAdmin sodaDbAdmin;
11+
private static OracleCollection sodaSampleCollection;
12+
13+
public static void prepareSODAConnection() throws Exception {
14+
OracleDataSource ods = new OracleDataSource();
15+
ods.setURL(System.getenv("DB_URL"));
16+
ods.setUser(System.getenv("DB_USERNAME"));
17+
ods.setPassword(System.getenv("DB_PASSWORD"));
18+
OracleRDBMSClient client = new OracleRDBMSClient();
19+
sodaDb = client.getDatabase(ods.getConnection());
20+
sodaDbAdmin = sodaDb.admin();
21+
}
22+
23+
public static void listExistingCollections() throws Exception {
24+
List<String> collections = sodaDbAdmin.getCollectionNames();
25+
System.out.println("Listing existing collections : ");
26+
27+
for (String name: collections) {
28+
System.out.println("Collection : "+name);
29+
}
30+
}
31+
32+
public static void resetSampleCollection() {
33+
try {
34+
sodaSampleCollection = sodaDb.openCollection("sodaSampleCollection");
35+
sodaSampleCollection.admin().drop();
36+
System.out.println("sodaSampleCollection dropped succesfully");
37+
}
38+
catch (Exception e) {
39+
System.out.println("sodaSampleCollection has not been created yet. Dropping was unneeded.");
40+
}
41+
42+
try {
43+
sodaSampleCollection = sodaDbAdmin.createCollection("sodaSampleCollection");
44+
System.out.println("sodaSampleCollection created succesfully");
45+
}
46+
catch (Exception e) {
47+
e.printStackTrace();
48+
}
49+
}
50+
51+
public static void insertSampleData() throws Exception {
52+
String docs;
53+
OracleDocument doc;
54+
for ( int i = 0; i < 100; i++ ) {
55+
docs = "{\"name\": \"SampleDoc"+i+"\",\"value\":"+i+"}";
56+
System.out.println("Inserting document# : "+i+" : "+docs);
57+
doc = sodaDb.createDocumentFromString(docs);
58+
sodaSampleCollection.insert(doc);
59+
}
60+
}
61+
62+
public static void findSampleData() throws Exception {
63+
System.out.println("Looking for document 12");
64+
OracleCursor cursor = sodaSampleCollection.find().filter("{\"value\":12}").getCursor();
65+
System.out.println("Results : ");
66+
while (cursor.hasNext()) {
67+
OracleDocument doc = cursor.next();
68+
System.out.println("Key : "+doc.getKey());
69+
System.out.println("Media type : "+doc.getMediaType());
70+
System.out.println("Doc : "+doc.getContentAsString());
71+
}
72+
}
73+
74+
public static void closeSODAConnection() throws Exception {
75+
sodaDbAdmin.getConnection().close();
76+
System.out.println("Database connection closed succesfully.");
77+
}
78+
79+
public static void main(String[] args) {
80+
try {
81+
prepareSODAConnection();
82+
listExistingCollections();
83+
resetSampleCollection();
84+
insertSampleData();
85+
findSampleData();
86+
closeSODAConnection();
87+
}
88+
catch (Exception e) {e.printStackTrace();}
89+
}
90+
}

0 commit comments

Comments
 (0)