Oracle SES API 2
/*
* Copyright ? 2024 Devin B. Royal. All Rights Reserved.
*/
import oracle.search.admin.api.ws.client.*;
import javax.xml.ws.BindingProvider;
import java.util.List;
import java.util.Scanner;
public class OracleSESManager {
private static final String CONFIG_ENDPOINT = "https://localhost:7777/search/api/admin";
private static final String CONFIG_USERNAME = "admin";
private static final String CONFIG_PASSWORD = "password123";
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
// Initialize Admin Service
AdminPortType adminPort = getAdminPort(CONFIG_ENDPOINT);
// Authenticate
Credentials credentials = new Credentials();
credentials.setUsername(CONFIG_USERNAME);
credentials.setPassword(CONFIG_PASSWORD);
authenticate(adminPort, credentials);
// Main Menu
while (true) {
System.out.println("\nOracle SES Manager");
System.out.println("1. Create Data Source");
System.out.println("2. Perform Document Search");
System.out.println("3. List Schedules");
System.out.println("4. Exit");
System.out.print("Enter your choice: ");
int choice = scanner.nextInt();
scanner.nextLine(); // Consume newline
switch (choice) {
case 1:
System.out.print("Enter Data Source Name: ");
String dataSourceName = scanner.nextLine();
System.out.print("Enter Data Source URL: ");
String dataSourceURL = scanner.nextLine();
createDataSource(adminPort, dataSourceName, dataSourceURL);
break;
case 2:
System.out.print("Enter Search Query: ");
String query = scanner.nextLine();
performSearch(adminPort, query);
break;
case 3:
listSchedules(adminPort);
break;
case 4:
System.out.println("Exiting Oracle SES Manager. Goodbye!");
return;
default:
System.out.println("Invalid choice. Please try again.");
}
领英推荐
}
} catch (AdminAPIRuntimeFault_Exception | CreatableAdminObjectFault_Exception | DependentObjectFault_Exception e) {
System.err.println("API Exception: " + e.getMessage());
} catch (Exception e) {
System.err.println("Unexpected Error: " + e.getMessage());
e.printStackTrace();
}
}
// Initialize AdminPort
private static AdminPortType getAdminPort(String endpointURL) throws Exception {
AdminService adminService = new AdminService();
AdminPortType adminPort = adminService.getAdminPort();
BindingProvider bindingProvider = (BindingProvider) adminPort;
bindingProvider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);
System.out.println("Connected to SES Endpoint: " + endpointURL);
return adminPort;
}
// Authenticate with SES
private static void authenticate(AdminPortType adminPort, Credentials credentials) throws AdminAPIRuntimeFault_Exception {
adminPort.authenticate(credentials);
System.out.println("Authentication Successful as user: " + credentials.getUsername());
}
// Create a new data source
private static void createDataSource(AdminPortType adminPort, String dataSourceName, String dataSourceURL)
throws CreatableAdminObjectFault_Exception, AdminAPIRuntimeFault_Exception {
System.out.println("Creating Data Source...");
DataSourceService dataSourceService = adminPort.getDataSourceService();
dataSourceService.createDataSource(dataSourceName, "web", dataSourceURL);
System.out.println("Data source created successfully: " + dataSourceName);
}
// Perform a search
private static void performSearch(AdminPortType adminPort, String query) throws AdminAPIRuntimeFault_Exception {
System.out.println("Performing Search...");
OracleSearchService searchService = adminPort.getOracleSearchService();
List<OracleSearchResult> results = searchService.performSearch(query, 10);
System.out.println("Search Results:");
for (OracleSearchResult result : results) {
System.out.printf(" - Title: %s, URL: %s%n", result.getDocumentTitle(), result.getDocumentURL());
}
}
// List schedules
private static void listSchedules(AdminPortType adminPort) throws AdminAPIRuntimeFault_Exception {
System.out.println("Listing Schedules...");
ScheduleStatus scheduleStatus = adminPort.getScheduleStatus();
List<Schedule> schedules = scheduleStatus.getSchedules();
System.out.println("Active Schedules:");
for (Schedule schedule : schedules) {
System.out.println(" - " + schedule.getName());
}
}
}