📄 client.java
字号:
package dli2fe.sample;
/**
* Title: Digial Library Interoperable Interface Fudan Edition
* Description: This project contains all the classes required for DLI2FE interface. Developers use these classes to implement the wrapper and client side codes. The basic functions of DLI2FE is as follows:
* Search: Search a digital library source site.
* Metadata: Fetch metadata for a site.
* ResultAccess: Get results for a given query.
* DLI2FE uses Dublin Core as the basic attribute model, DAV/DASL as the general XML-based query language and CORBA as distributed object transportation mechanism.
* Copyright: Copyright (c) 2001
* Company: Fudan University
* @author Carl Tao
* @version 1.0
*/
import dli2fe.DLI2FEException;
import dli2fe.xml.*;
import dli2fe.helpers.*;
import org.omg.CORBA.IntHolder;
public class Client {
public static void usage() {
System.err.println("Usage: java dli2fe.sample.Client ServerURI method parameters...\n" +
"Supported methods:\n" +
"\tgetsitemetadata\n" +
"\tgetattributeinfo <category_name>\n" +
"\tsearch <clientSID> <query> <numDocs>\n" +
"\tgetsessioninfo <serverSID>\n" +
"\tgetdocs <serverSID> <reqID> <docsToGet>\n" +
"\textendstatetimeout <serverSID> <secondsToExtend>\n" +
"\tcancelrequest <serverSID> <reqID>");
System.exit(1);
}
static String expectedTotalString(int total) {
if(total == dli2fe.Searcher.UNKNOWABLE)
return "unknowable";
else if(total == dli2fe.Searcher.NOT_YET_KNOWN)
return "not yet known";
else
return String.valueOf(total);
}
public static void main(String[] args) {
try {
String serverURI = args[0];
String method = args[1];
ClientTransportModule tm = ClientTransportModule.create(serverURI);
if ("getsitemetadata".equalsIgnoreCase(method)) {
XMLObject result = new XMLObject();
tm.getSiteMetadata(result);
System.out.println(result.getString());
} else if ("getattributeinfo".equalsIgnoreCase(method)) {
String ctgrName = args[2];
XMLObject result = new XMLObject();
tm.getAttributeInfo(ctgrName, result);
System.out.println(result.getString());
} else if ("search".equalsIgnoreCase(method)) {
int clientSID = Integer.parseInt(args[2]);
int numDocs = Integer.parseInt(args[4]);
XMLObject query = new XMLObject();
if (!args[3].startsWith("<"))
query.setString("<basicsearch xmlns='DAV:'>" +
" <where><contains>" + args[3] + "</contains></where>" +
"</basicsearch>");
else
query.setString(args[3]);
IntHolder expectedTotal = new IntHolder();
IntHolder serverSID = new IntHolder();
XMLObject result = new XMLObject();
tm.search(clientSID, null, query, numDocs, null,
null, expectedTotal, serverSID, result);
System.out.println("Result: \n" + result.getString());
System.out.println("Expected total: " + expectedTotalString(expectedTotal.value));
System.out.println("Server SID: " + serverSID.value);
} else if ("getsessioninfo".equalsIgnoreCase(method)) {
int serverSID = Integer.parseInt(args[2]);
IntHolder expectedTotal = new IntHolder();
IntHolder stateTimeout = new IntHolder();
tm.getSessionInfo(serverSID, expectedTotal, stateTimeout);
System.out.println("Expected total: " + expectedTotalString(expectedTotal.value));
System.out.println("Time out: " + stateTimeout.value);
} else if ("getdocs".equalsIgnoreCase(method)) {
int serverSID = Integer.parseInt(args[2]);
int reqID = Integer.parseInt(args[3]);
String docsToGet = args[4];
XMLObject result = new XMLObject();
tm.getDocs(serverSID, reqID, null, docsToGet, result);
System.out.println("Result: " + result.getString());
} else if ("extendstatetimeout".equalsIgnoreCase(method)) {
int serverSID = Integer.parseInt(args[2]);
int secondsToExtend = Integer.parseInt(args[3]);
tm.extendStateTimeout(serverSID, secondsToExtend);
} else if ("cancelrequest".equalsIgnoreCase(method)) {
int serverSID = Integer.parseInt(args[2]);
int reqID = Integer.parseInt(args[3]);
tm.cancelRequest(serverSID, reqID);
} else
usage();
} catch (ArrayIndexOutOfBoundsException arr) {
usage();
} catch (DLI2FEException ex) {
System.err.println("DLI2FE exception(" + ex.getCode() + "): " + ex.getReason());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -