import java.util.List;

import com.ebay.services.client.ClientConfig;
import com.ebay.services.client.FindingServiceClientFactory;
import com.ebay.services.finding.FindItemsByKeywordsRequest;
import com.ebay.services.finding.FindItemsByKeywordsResponse;
import com.ebay.services.finding.FindingServicePortType;
import com.ebay.services.finding.PaginationInput;
import com.ebay.services.finding.PaginationOutput;
import com.ebay.services.finding.SearchItem;

public class SearchEbay {

  public static final int ENTRIES_PER_PAGE = 10;

  public static  void main(String[] args) {
    try {

      // setup environment -------------------------

      ClientConfig config = new ClientConfig();
      config.setApplicationId(args[0]);
      config.setGlobalId("EBAY-DE");

      FindingServicePortType serviceClient =
        FindingServiceClientFactory.getServiceClient(config);

      // setup request ------------------------------

      FindItemsByKeywordsRequest request =
        new FindItemsByKeywordsRequest();
      request.setKeywords(args[1]);

      PaginationInput pi = new PaginationInput();
      pi.setEntriesPerPage(ENTRIES_PER_PAGE);
      request.setPaginationInput(pi);

      // execute request ----------------------------

      FindItemsByKeywordsResponse result =
        serviceClient.findItemsByKeywords(request);

      // handle result ------------------------------

      System.out.println("\nStatus = "+result.getAck());
      PaginationOutput po = result.getPaginationOutput();
      System.out.println("Anzahl Treffer gesamt: " +
        po.getTotalEntries());
      System.out.println("Notwendige Requests: " +
        po.getTotalPages());

      System.out.println("Anzahl Treffer in diesem Request: " +
        result.getSearchResult().getCount() + "\n");

      System.out.println("------ Trefferliste ---------\n");

      List<SearchItem> items = result.getSearchResult().getItem();
      for(SearchItem item : items) {
        System.out.println(item.getTitle());
      }

    } catch (Exception ex) {
      // handle exception if any
      ex.printStackTrace();
    }
  }
} 
