⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.java

📁 数字图书馆的互操作接口
💻 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 + -