1

Fedora Commons Web サービスで検索しようとしています。findObjectsメソッドに興味があります。findObjects syntax documentationで説明されている例と同じようにJavaで検索するにはどうすればよいですか。

私が特に興味を持っているのは、次のようなリクエストです。

http://localhost:8080/fedora/search?terms=fedora&pid=true&title=true

いくつかのコードを添付します。Fedora サービスを呼び出すことができるクラスが既にあります。

package test.fedora;

import info.fedora.definitions._1._0.types.DatastreamDef;
import info.fedora.definitions._1._0.types.MIMETypedStream;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.List;
import javax.xml.ws.BindingProvider;
import org.w3c.dom.Document;

public class FedoraAccessor {
    info.fedora.definitions._1._0.api.FedoraAPIAService service;
    info.fedora.definitions._1._0.api.FedoraAPIA port;
    final String username = "xxxx";
    final String password = "yyyy";

    public FedoraAClient() {
        service = new info.fedora.definitions._1._0.api.FedoraAPIAService();
        port = service.getFedoraAPIAServiceHTTPPort();
        ((BindingProvider) port.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, username);
        ((BindingProvider) port).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, password);
    }

    public List findObjects() {
        //how?
    }

    public List<DatastreamDef> listDatastreams(String pid, String asOfTime) {
        List<DatastreamDef> result = null;
        try { 
            result = port.listDatastreams(pid, asOfTime);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return result;
    }
}
4

1 に答える 1

1

mediashelf(http://mediashelf.github.com/fedora-client/)のクライアントを使用する方が簡単です。タイトルに文字列foobarを含むオブジェクトを検索する例を次に示します。

@Test
 public void doTest() throws FedoraClientException {
    connect();
    FindObjectsResponse response = null;

    response = findObjects().pid().title().query("title~foobar").execute(fedoraClient);
    List<String> pids = response.getPids();

    List<String> titles = new ArrayList<String>();
    for (String pid : pids) {
        titles.add(response.getObjectField(pid, "title").get(0));
    }
    assertEquals(7, titles.size());
  }
于 2012-02-10T14:52:00.363 に答える