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

📄 mmqueryhelper.java

📁 数字图书馆的互操作接口
💻 JAVA
字号:
package dli2fe.helpers;/** * 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 java.util.*;import dli2fe.DLI2FEException;import java.net.*;import java.io.*;import dli2fe.sample.MultimediaMeta;// 一次多媒体查询的接口类public class MMQueryHelper {  // 缓存每个服务对应的DID与素材对应表。  static Hashtable serviceSampleURL = new Hashtable();  String baseURL;  //String prefixForID;  Vector results;         // n_m(String类型) format result list  Vector listDID;         // document id(Integer类型) list for result  public MMQueryHelper(String queryURL) throws DLI2FEException {    if (serviceSampleURL.get(queryURL)==null) {      String url = queryURL + "ServiceType=" + MultimediaMeta.serviceTypeDID+ "&OID=001";      try {        URLConnection con = new URL(url).openConnection();        con.setDefaultUseCaches(false);        con.setUseCaches(false);        con.setDoInput(true);        con.connect();        DataInputStream in = new DataInputStream(con.getInputStream());        int num = in.readInt();        // should not be zero for document 1        if (num == 0)          throw new DLI2FEException(DLI2FEException.NOT_IMPLEMENTED_EXC, "Multimediasearch service error: zero results");        Hashtable ht = new Hashtable();        Vector v = new Vector();        for (int i = 0; i<num; i++) {          String rURL = in.readUTF();          v.add(rURL.substring(Math.max(rURL.lastIndexOf('/'), rURL.lastIndexOf('\\')) + 1, rURL.lastIndexOf('.')));        }        in.close();        ht.put(new Integer(1), v);        serviceSampleURL.put(queryURL, ht);      } catch (IOException ex) {        throw new DLI2FEException(DLI2FEException.NOT_IMPLEMENTED_EXC, "Multimediasearch service error: "+ ex.toString());      }    }    baseURL = queryURL;    results = new Vector();    listDID = new Vector();  }  // 查询多媒体  public void searchMultimedia(String sample, String pfeedback, String nfeedback) throws DLI2FEException {    try {      URLConnection con = new URL(baseURL + "ServiceType=" + MultimediaMeta.serviceType +        "&SampleURL=" + noNull(sample) + "&PFeedback=" + noNull(pfeedback) + "&NFeedback=" + noNull(nfeedback)).openConnection();      System.out.println("GET " + baseURL + "ServiceType=" + MultimediaMeta.serviceType +        "&SampleURL=" + noNull(sample) + "&PFeedback=" + noNull(pfeedback) + "&NFeedback=" + noNull(nfeedback));      con.setDefaultUseCaches(false);      con.setUseCaches(false);      con.setDoInput(true);      con.connect();      DataInputStream in = new DataInputStream(con.getInputStream());      int num = in.readInt();      results = new Vector();      for (int i=0; i<num; i++) {        String rURL = in.readUTF();        results.add(rURL.substring(Math.max(rURL.lastIndexOf('/'), rURL.lastIndexOf('\\')) + 1, rURL.lastIndexOf('.')));      }    } catch (IOException ex) {      throw new DLI2FEException(DLI2FEException.SERVER_ERROR_EXC, "Multimedia Search service error: " + ex.toString());    }    generateListDID();  }  // 根据文档标志符查询素材标志符  public void getIdmms(int did) throws DLI2FEException {    // 首先从缓存中去取    Vector v = (Vector)((Hashtable)serviceSampleURL.get(baseURL)).get(new Integer(did));    if (v != null) {      results = v;      generateListDID();      return;    }    String strDID = String.valueOf(did);    int len = strDID.length();    for (int i=0; i<3-len; i++)      strDID = "0"+strDID;    try {      URLConnection con = new URL(baseURL + "ServiceType=" + MultimediaMeta.serviceTypeDID + "&OID=" + strDID).openConnection();      //System.out.println("GET " + baseURL + "ServiceType=" + MultimediaMeta.serviceTypeDID + "&OID=" + strDID);      con.setDefaultUseCaches(false);      con.setUseCaches(false);      con.setDoInput(true);      con.connect();      DataInputStream in = new DataInputStream(con.getInputStream());      int num = in.readInt();      results = new Vector();      for (int i=0; i<num; i++) {        String rURL = in.readUTF();        results.add(rURL.substring(Math.max(rURL.lastIndexOf('/'), rURL.lastIndexOf('\\')) + 1, rURL.lastIndexOf('.')));      }    } catch (IOException ex) {      throw new DLI2FEException(DLI2FEException.SERVER_ERROR_EXC, "Multimedia SearchByDID service error: " + ex.toString());    }    ((Hashtable)serviceSampleURL.get(baseURL)).put(new Integer(did), results);    generateListDID();  }  public Vector getResults() {    return results;  }  public Vector getListDID() {    return listDID;  }  String noNull(String inStr) {    if (inStr == null)      return "";    return inStr;  }  void generateListDID() {    listDID = new Vector();    Hashtable ht = new Hashtable();    for (int i=0; i<results.size(); i++) {      String result = (String)results.elementAt(i);      Integer did = new Integer(Integer.parseInt(result.substring(0, result.indexOf('_'))));      if (ht.get(did) == null) {        ht.put(did, result);        listDID.add(did);     // only add the first time to form the order of documents      }    }  }  public static void main(String[] args) {    try {      MMQueryHelper mmqh = new MMQueryHelper("http://localhost:8080/multimediasearch/MultimediaSearch?");      //mmqh.searchMultimedia("http://localhost:8080/multimediasearch/tempsample/first.jpg", "", "");      mmqh.getIdmms(23);      Vector results = mmqh.getResults();      for (int i=0; i<results.size(); i++) {        System.out.println((String)results.elementAt(i));      }    } catch (Exception ex) {      ex.printStackTrace();    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -