2011-12-18 12 views
1

私はFedora Commons Webサービスを通じて検索しようとしています。私はfindObjectsメソッドに興味があります。 Javaで検索するには、findObjects syntax documentationに記載されている例と同じようにすることができます。Fedora Commons findObjectsメソッド(Webサービス)を呼び出す方法

私はこのタイプのリクエストで特に興味:

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; 
    } 
} 

答えて

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()); 
    } 
関連する問題