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());

}

}

}


要查看或添加评论,请登录

Devin B. Royal的更多文章

社区洞察

其他会员也浏览了