/*
* Copyright 2007-2008 Amazon Technologies, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://aws.amazon.com/apache2.0
*
* This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
* OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and
* limitations under the License.
*/
package com.amazonaws.mturk.service.axis;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.amazonaws.mturk.filter.ErrorProcessingFilter;
import com.amazonaws.mturk.filter.RetryFilter;
import com.amazonaws.mturk.requester.AWSMechanicalTurkRequester;
import com.amazonaws.mturk.requester.AWSMechanicalTurkRequesterLocator;
import com.amazonaws.mturk.requester.ApproveAssignmentRequest;
import com.amazonaws.mturk.requester.AssignQualificationRequest;
import com.amazonaws.mturk.requester.Assignment;
import com.amazonaws.mturk.requester.AssignmentStatus;
import com.amazonaws.mturk.requester.BlockWorkerRequest;
import com.amazonaws.mturk.requester.ChangeHITTypeOfHITRequest;
import com.amazonaws.mturk.requester.CreateHITRequest;
import com.amazonaws.mturk.requester.CreateQualificationTypeRequest;
import com.amazonaws.mturk.requester.DataPoint;
import com.amazonaws.mturk.requester.DisableHITRequest;
import com.amazonaws.mturk.requester.DisposeHITRequest;
import com.amazonaws.mturk.requester.EventType;
import com.amazonaws.mturk.requester.ExtendHITRequest;
import com.amazonaws.mturk.requester.ForceExpireHITRequest;
import com.amazonaws.mturk.requester.GetAccountBalanceRequest;
import com.amazonaws.mturk.requester.GetAccountBalanceResult;
import com.amazonaws.mturk.requester.GetAssignmentsForHITRequest;
import com.amazonaws.mturk.requester.GetAssignmentsForHITResult;
import com.amazonaws.mturk.requester.GetAssignmentsForHITSortProperty;
import com.amazonaws.mturk.requester.GetBonusPaymentsRequest;
import com.amazonaws.mturk.requester.GetBonusPaymentsResult;
import com.amazonaws.mturk.requester.GetFileUploadURLRequest;
import com.amazonaws.mturk.requester.GetFileUploadURLResult;
import com.amazonaws.mturk.requester.GetHITRequest;
import com.amazonaws.mturk.requester.GetHITsForQualificationTypeRequest;
import com.amazonaws.mturk.requester.GetHITsForQualificationTypeResult;
import com.amazonaws.mturk.requester.GetQualificationRequestsRequest;
import com.amazonaws.mturk.requester.GetQualificationRequestsResult;
import com.amazonaws.mturk.requester.GetQualificationRequestsSortProperty;
import com.amazonaws.mturk.requester.GetQualificationScoreRequest;
import com.amazonaws.mturk.requester.GetQualificationTypeRequest;
import com.amazonaws.mturk.requester.GetQualificationsForQualificationTypeRequest;
import com.amazonaws.mturk.requester.GetQualificationsForQualificationTypeResult;
import com.amazonaws.mturk.requester.GetRequesterStatisticRequest;
import com.amazonaws.mturk.requester.GetReviewableHITsRequest;
import com.amazonaws.mturk.requester.GetReviewableHITsResult;
import com.amazonaws.mturk.requester.GetReviewableHITsSortProperty;
import com.amazonaws.mturk.requester.GetStatisticResult;
import com.amazonaws.mturk.requester.GetWorkerAcceptLimitRequest;
import com.amazonaws.mturk.requester.GetWorkerAcceptLimitResult;
import com.amazonaws.mturk.requester.GrantBonusRequest;
import com.amazonaws.mturk.requester.GrantQualificationRequest;
import com.amazonaws.mturk.requester.HIT;
import com.amazonaws.mturk.requester.HelpRequest;
import com.amazonaws.mturk.requester.HelpRequestHelpType;
import com.amazonaws.mturk.requester.Information;
import com.amazonaws.mturk.requester.LimitGroupType;
import com.amazonaws.mturk.requester.NotificationSpecification;
import com.amazonaws.mturk.requester.NotifyWorkersRequest;
import com.amazonaws.mturk.requester.Price;
import com.amazonaws.mturk.requester.Qualification;
import com.amazonaws.mturk.requester.QualificationRequirement;
import com.amazonaws.mturk.requester.QualificationStatus;
import com.amazonaws.mturk.requester.QualificationType;
import com.amazonaws.mturk.requester.QualificationTypeStatus;
import com.amazonaws.mturk.requester.RegisterHITTypeRequest;
import com.amazonaws.mturk.requester.RegisterHITTypeResult;
import com.amazonaws.mturk.requester.RejectAssignmentRequest;
import com.amazonaws.mturk.requester.RejectQualificationRequestRequest;
import com.amazonaws.mturk.requester.RequesterStatistic;
import com.amazonaws.mturk.requester.ReviewableHITStatus;
import com.amazonaws.mturk.requester.RevokeQualificationRequest;
import com.amazonaws.mturk.requester.SearchHITsRequest;
import com.amazonaws.mturk.requester.SearchHITsResult;
import com.amazonaws.mturk.requester.SearchHITsSortProperty;
import com.amazonaws.mturk.requester.SearchQualificationTypesRequest;
import com.amazonaws.mturk.requester.SearchQualificationTypesResult;
import com.amazonaws.mturk.requester.SearchQualificationTypesSortProperty;
import com.amazonaws.mturk.requester.SendTestEventNotificationRequest;
import com.amazonaws.mturk.requester.SetHITAsReviewingRequest;
import com.amazonaws.mturk.requester.SetHITTypeNotificationRequest;
import com.amazonaws.mturk.requester.SetWorkerAcceptLimitRequest;
import com.amazonaws.mturk.requester.SortDirection;
import com.amazonaws.mturk.requester.TimePeriod;
import com.amazonaws.mturk.requester.UnblockWorkerRequest;
import com.amazonaws.mturk.requester.UpdateQualificationScoreRequest;
import com.amazonaws.mturk.requester.UpdateQualificationTypeRequest;
import com.amazonaws.mturk.service.exception.ObjectDoesNotExistException;
import com.amazonaws.mturk.service.exception.ServiceException;
import com.amazonaws.mturk.util.ClientConfig;
import com.amazonaws.mturk.util.PropertiesClientConfig;
/**
* The RequesterServiceRaw class provides a set of APIs, which maps to the Mechanical Turk
* Requester WSDL. Its contructor is protected, so the client cannot instantiate this class
* directly. The client should instead use a child instance that inherits these raw APIs.
*
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReferenceArticle.html
*/
public class RequesterServiceRaw extends FilteredAWSService
{
//-------------------------------------------------------------
// Constants - Private
//-------------------------------------------------------------
private static final String PORT_NAME = "AWSMechanicalTurkRequesterPort";
private static final String SERVICE_NAME = "AWSMechanicalTurkRequester";
private static final String PACKAGE_PREFIX = "com.amazonaws.mturk.requester.";
// This enum type associates the request method name with the result type name.
private enum ResultMatch {
CreateHIT("HIT"),
ChangeHITTypeOfHIT("ChangeHITTypeOfHITResult"),
RegisterHITType("RegisterHITTypeResult"),
SetHITTypeNotification("SetHITTypeNotificationResult"),
SendTestNotification("SendTestNotificationResult"),
GetReviewableHITs("GetReviewableHITsResult"),
GetHIT("HIT"),
GetHITsForQualificationType("GetHITsForQualificationTypeResult"),
GetQualificationsForQualificationType("GetQualificationsForQualificationTypeResult"),
SetHITAsReviewing("SetHITAsReviewingResult"),
ApproveAssignment("ApproveAssignmentResult"),
RejectAssignment("RejectAssignmentResult"),
DisposeHIT("DisposeHITResult"),
GetAssignmentsForHIT("GetAssignmentsForHITResult"),
ExtendHIT("ExtendHITResult"),
ForceExpireHIT("ForceExpireHITResult"),
GetFileUploadURL("GetFileUploadURLResult"),
SearchHITs("SearchHITsResult"),
GrantBonus("GrantBonusResult"),
GetBonusPayments("GetBonusPaymentsResult"),
CreateQualificationType("QualificationType"),
GetQualificationRequests("GetQualificationRequestsResult"),
RejectQualificationRequest("RejectQualificationRequestResult"),
GrantQualification("GrantQualificationResult"),
AssignQualification("AssignQualificationResult"),
RevokeQualification("RevokeQualificationResult"),
GetQualificationType("QualificationType"),
GetQualificationScore("Qualification"),
UpdateQualificationScore("UpdateQualificationScoreResult"),
SearchQualificationTypes("SearchQualificationTypesResult"),
UpdateQualificationType("QualificationType"),
GetAccountBalance("GetAccountBalanceResult"),
GetRequesterStatistic("GetStatisticResult"),
NotifyWorkers("NotifyWorkersResult"),
DisableHIT("DisableHITResult"),
SetWorkerAcceptLimit("SetWorkerAcceptLimitResult"),
GetWorkerAcceptLimit("GetWorkerAcceptLimitResult"),
BlockWorker("BlockWorkerResult"),
UnblockWorker("UnblockWorkerResult"),
Help("Information");
private String resultTypeName;
private ResultMatch(String resultTypeName) {
this.resultTypeName = resultTypeName;
}
public String getResultTypeName() {
return this.resultTypeName;
}
}
//-------------------------------------------------------------
// Variables - Protected
//-------------------------------------------------------------
protected AWSMechanicalTurkRequester service;
/**
* Port stubs are not thread safe, so let's cache it per thread in a thread local
*/
protected ThreadLocal<Object> stubCache = new ThreadLocal<Object>();
//-------------------------------------------------------------
// Variables - Public
//-------------------------------------------------------------
public final static String NOTIFICATION_VERSION = "2006-05-05";
//-------------------------------------------------------------
// Constructor - Protected
//-------------------------------------------------------------
@Deprecated
protected RequesterServiceRaw() {
this(new PropertiesClientConfig());
}
protected RequesterServiceRaw( ClientConfig config ) {
super(config);
try {
// instantiate port for main thread to fail-fast in case it is misconfigured
AWSMechanicalTurkRequesterLocator locator = new AWSMechanicalTurkRequesterLocator();
locator.setEndpointAddress(PORT_NAME, this.config.getServiceURL());
getPort();
// Read the access keys from config
this.setAccessKeyId(this.config.getAccessKeyId());
this.setSigner(this.config.getSecretAccessKey());
//add default Retry Filter to list of filters
this.addFilter(new ErrorProcessingFilter());
this.addFilter(new RetryFilter(config.getRetriableErrors(), config.getRetryAttempts(), config.getRetryDelayMillis()));
} catch (Exception e) {
throw new RuntimeException("Invalid configuration for port", e);
}
}
//-------------------------------------------------------------
// Methods - Protected
//-------------------------------------------------------------
@Override
protected synchronized Object getPort() {
// The following is a workaround for two Axis threading issues
// https://issues.apache.org/jira/browse/AXIS-2284
// Implemented in 1.4 and suggests to use the locator as a factory
// for stubs which can then be cached in a thread local
// http://issues.apache.org/jira/browse/AXIS-2498
// Not implemented in 1.4 - the only workaround is to create a
// new locator before the stub for the thread is created.
// (although this only occurs on multi-CPU machines)
Object stub = stubCache.get();
if (stub == null) {
try {
AWSMechanicalTurkRequesterLocator loc = new AWSMechanicalTurkRequesterLocator();
loc.setEndpointAddress(PORT_NAME, this.config.getServiceURL());
stub = loc.getAWSMechanicalTurkRequesterPort();
appendApplicationSignature(null, stub);
stubCache.set(stub);
}
catch (javax.xml.rpc.ServiceException e) {
throw new IllegalStateException("Invalid configuration for locator", e);
}
}
return stub;
}
@Override
protected String getServiceName() {
return SERVICE_NAME;
}
@Override
protected String getPackagePrefix() {
return PACKAGE_PREFIX;
}
protected static void appendApplicationSignature(String signature, Object port) {
if (signature != null) {
String headerValue = AWSService.httpHeaders.get(AWSService.HTTP_HEADER_AMAZON_SOFTWARE);
AWSService.httpHeaders.put(AWSService.HTTP_HEADER_AMAZON_SOFTWARE,
headerValue + "," + signature);
}
if (port instanceof org.apache.axis.client.Stub) {
((org.apache.axis.client.Stub) port)._setProperty(
org.apache.axis.transport.http.HTTPConstants.REQUEST_HEADERS,
AWSService.httpHeaders);
}
}
private CreateHITRequest wrapHITParams(String hitTypeId, String title, String description, String keywords,
String question, Double reward, Long assignmentDurationInSeconds, Long autoApprovalDelayInSeconds,
Long lifetimeInSeconds, Integer maxAssignments, String requesterAnnotation,
QualificationRequirement[] qualificationRequirements, String[] responseGroup) {
CreateHITRequest request = new CreateHITRequest();
if (question != null) request.setQuestion(question);
if (lifetimeInSeconds != null)request.setLifetimeInSeconds(lifetimeInSeconds);
if (hitTypeId != null) request.setHITTypeId(hitTypeId);
if (title != null) request.setTitle(title);
if (description != null) request.setDescription(description);
if (keywords != null) request.setKeywords(keywords);
if (maxAssignments != null) request.setMaxAssignments(maxAssignments);
if (responseGroup != null) request.setResponseGroup(responseGroup);
if (requesterAnnotation != null) request.setRequesterAnnotation(requesterAnnotation);
if (assignmentDurationInSeconds != null)request.setAssignmentDurationInSeconds(assignmentDurationInSeconds);
if (autoApprovalDelayInSeconds != null) request.setAutoApprovalDelayInSeconds(autoApprovalDelayInSeconds);
if (qualificationRequirements != null) request.setQualificationRequirement(qualificationRequirements);
if (reward != null) {
Price p = new Price();
p.setAmount(new BigDecimal(reward));
p.setCurrencyCode("USD");
request.setReward(p);
}
return request;
}
//-------------------------------------------------------------
// Methods - Public
//-------------------------------------------------------------
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_CreateHITOperation.html
*/
public HIT createHIT(String hitTypeId, String title, String description, String keywords,
String question, Double reward, Long assignmentDurationInSeconds, Long autoApprovalDelayInSeconds,
Long lifetimeInSeconds, Integer maxAssignments, String requesterAnnotation,
QualificationRequirement[] qualificationRequirements, String[] responseGroup)
throws ServiceException {
CreateHITRequest request = wrapHITParams(hitTypeId, title, description, keywords,
question, reward, assignmentDurationInSeconds, autoApprovalDelayInSeconds,
lifetimeInSeconds, maxAssignments, requesterAnnotation,
qualificationRequirements, responseGroup);
HIT result = null;
result = (HIT) executeRequest(request,
ResultMatch.CreateHIT.name(),
ResultMatch.CreateHIT.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result;
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_RegisterHITTypeOperation.html
*/
public String registerHITType(Long autoApprovalDelayInSeconds, Long assignmentDurationInSeconds,
Double reward, String title, String keywords, String description,
QualificationRequirement[] qualRequirements)
throws ServiceException {
RegisterHITTypeRequest request = new RegisterHITTypeRequest();
if (title != null) request.setTitle(title);
if (description != null) request.setDescription(description);
if (keywords != null) request.setKeywords(keywords);
if (qualRequirements != null) request.setQualificationRequirement(qualRequirements);
if (assignmentDurationInSeconds != null)request.setAssignmentDurationInSeconds(assignmentDurationInSeconds);
if (autoApprovalDelayInSeconds != null) request.setAutoApprovalDelayInSeconds(autoApprovalDelayInSeconds);
if (reward != null) {
Price p = new Price();
p.setAmount(new BigDecimal(reward));
p.setCurrencyCode("USD");
request.setReward(p);
}
RegisterHITTypeResult result = null;
result = (RegisterHITTypeResult) executeRequest(request,
ResultMatch.RegisterHITType.name(),
ResultMatch.RegisterHITType.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result.getHITTypeId();
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-06-21/ApiReference_ChangeHITTypeOfHIT.html
*/
public void changeHITTypeOfHIT(String hitId, String newHitTypeId)
throws ServiceException {
ChangeHITTypeOfHITRequest request = new ChangeHITTypeOfHITRequest();
request.setHITId(hitId);
request.setHITTypeId(newHitTypeId);
executeRequest(request,
ResultMatch.ChangeHITTypeOfHIT.name(),
ResultMatch.ChangeHITTypeOfHIT.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_SetHITTypeNotificationOperation.html
*/
public void setHITTypeNotification(String hitTypeId, NotificationSpecification notification, Boolean active)
throws ServiceException {
SetHITTypeNotificationRequest request = new SetHITTypeNotificationRequest();
if (hitTypeId != null) request.setHITTypeId(hitTypeId);
if (notification != null) request.setNotification(notification);
if (active != null) request.setActive(active);
executeRequest(request, ResultMatch.SetHITTypeNotification.name(),
ResultMatch.SetHITTypeNotification.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_SendTestEventNotificationOperation.html
*/
public void sendTestEventNotification(NotificationSpecification notification, EventType testEventType)
throws ServiceException {
SendTestEventNotificationRequest request = new SendTestEventNotificationRequest();
if (notification != null) request.setNotification(notification);
if (testEventType != null) request.setTestEventType(testEventType);
executeRequest(request, ResultMatch.SendTestNotification.name(),
ResultMatch.SendTestNotification.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_DisposeHITOperation.html
*/
public void disposeHIT(String hitId) throws ServiceException {
DisposeHITRequest request = new DisposeHITRequest();
if (hitId != null) request.setHITId(hitId);
executeRequest(request, ResultMatch.DisposeHIT.name(),
ResultMatch.DisposeHIT.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_DisableHITOperation.html
*/
public void disableHIT(String hitId) throws ServiceException {
DisableHITRequest request = new DisableHITRequest();
if (hitId != null) request.setHITId(hitId);
executeRequest(request, ResultMatch.DisableHIT.name(),
ResultMatch.DisableHIT.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_GetHITOperation.html
*/
public HIT getHIT(String hitId, String[] responseGroup) throws ServiceException {
GetHITRequest request = new GetHITRequest();
if (hitId != null) request.setHITId(hitId);
if (responseGroup != null) request.setResponseGroup(responseGroup);
HIT result = null;
result = (HIT) executeRequest(request, ResultMatch.GetHIT.name(),
ResultMatch.GetHIT.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result;
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_GetReviewableHITsOperation.html
*/
public GetReviewableHITsResult getReviewableHITs(String hitTypeId, ReviewableHITStatus status,
SortDirection sortDirection, GetReviewableHITsSortProperty sortProperty,
Integer pageNumber, Integer pageSize)
throws ServiceException {
GetReviewableHITsRequest request = new GetReviewableHITsRequest();
if (hitTypeId != null) request.setHITTypeId(hitTypeId);
if (status != null) request.setStatus(status);
if (pageNumber != null) request.setPageNumber(pageNumber);
if (pageSize != null) request.setPageSize(pageSize);
if (sortDirection != null) request.setSortDirection(sortDirection);
if (sortProperty != null) request.setSortProperty(sortProperty);
GetReviewableHITsResult result = null;
result = (GetReviewableHITsResult) executeRequest(request,
ResultMatch.GetReviewableHITs.name(),
ResultMatch.GetReviewableHITs.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result;
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_GetHITsForQualificationTypeOperation.html
*/
public GetHITsForQualificationTypeResult getHITsForQualificationType(String qualificationTypeId,
Integer pageNumber, Integer pageSize)
throws ServiceException {
GetHITsForQualificationTypeRequest request = new GetHITsForQualificationTypeRequest();
if (qualificationTypeId != null) request.setQualificationTypeId(qualificationTypeId);
if (pageNumber != null) request.setPageNumber(pageNumber);
if (pageSize != null) request.setPageSize(pageSize);
GetHITsForQualificationTypeResult result = null;
result = (GetHITsForQualificationTypeResult) executeRequest(request,
ResultMatch.GetHITsForQualificationType.name(),
ResultMatch.GetHITsForQualificationType.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result;
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_GetQualificationsForQualificationTypeOperation.html
*/
public GetQualificationsForQualificationTypeResult getQualificationsForQualificationType(String qualificationTypeId,
QualificationStatus status, Integer pageNumber, Integer pageSize)
throws ServiceException {
GetQualificationsForQualificationTypeRequest request = new GetQualificationsForQualificationTypeRequest();
if (status != null) request.setStatus(status);
if (pageNumber != null) request.setPageNumber(pageNumber);
if (pageSize != null) request.setPageSize(pageSize);
if (qualificationTypeId != null) request.setQualificationTypeId(qualificationTypeId);
GetQualificationsForQualificationTypeResult result = null;
result = (GetQualificationsForQualificationTypeResult) executeRequest(request,
ResultMatch.GetQualificationsForQualificationType.name(),
ResultMatch.GetQualificationsForQualificationType.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result;
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_SetHITAsReviewingOperation.html
*/
public void setHITAsReviewing(String hitId, Boolean revert)
throws ServiceException {
SetHITAsReviewingRequest request = new SetHITAsReviewingRequest();
if (hitId != null) request.setHITId(hitId);
if (revert != null) request.setRevert(revert);
executeRequest(request, ResultMatch.SetHITAsReviewing.name(),
ResultMatch.SetHITAsReviewing.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_ExtendHITOperation.html
*/
public void extendHIT(String hitId, Integer maxAssignmentsIncrement, Long expirationIncrementInSeconds) throws ServiceException {
ExtendHITRequest request = new ExtendHITRequest();
if (hitId != null) request.setHITId(hitId);
if (maxAssignmentsIncrement != null) request.setMaxAssignmentsIncrement(maxAssignmentsIncrement);
if (expirationIncrementInSeconds != null) request.setExpirationIncrementInSeconds(expirationIncrementInSeconds);
executeRequest(request, ResultMatch.ExtendHIT.name(),
ResultMatch.ExtendHIT.getResultTypeName());
}
/**
* Extends a HIT asynchronously using the Axis worker thread pool.
* It returns an AsyncReply object, which can either be used to
* wait for the asynchronous call to complete and to get the result
* of the call. Alternatively, a callback handler can be passed
* that is notified when the call has completed.
*
* The work queue is using a pool of daemon threads to process the submitted tasks.
* To guarantee that all work submitted to the queue was processed before the JVM
* exits, this requires to wait for all future results of the submitted work items.
* This can conveniently be done using the getResult() method of the AsyncReply
* object returned by this method. A typical usage pattern would be to first submit
* all requests to the work queue, store the AsyncReply objects in an array and then
* call getResult() for each of the objects in the array.
*
*/
public AsyncReply extendHITAsync(String hitId, Integer maxAssignmentsIncrement,
Long expirationIncrementInSeconds,
AsyncCallback callback) throws ServiceException {
ExtendHITRequest request = new ExtendHITRequest();
if (hitId != null) request.setHITId(hitId);
if (maxAssignmentsIncrement != null) request.setMaxAssignmentsIncrement(maxAssignmentsIncrement);
if (expirationIncrementInSeconds != null) request.setExpirationIncrementInSeconds(expirationIncrementInSeconds);
return executeAsyncRequest(request,
ResultMatch.ExtendHIT.name(),
ResultMatch.ExtendHIT.getResultTypeName(),
callback);
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_ForceExpireHITOperation.html
*/
public void forceExpireHIT(String hitId) throws ServiceException {
ForceExpireHITRequest request = new ForceExpireHITRequest();
if (hitId != null) request.setHITId(hitId);
executeRequest(request, ResultMatch.ForceExpireHIT.name(),
ResultMatch.ForceExpireHIT.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_ApproveAssignmentOperation.html
*/
public void approveAssignment(String assignmentId, String requesterFeedback)
throws ServiceException {
ApproveAssignmentRequest request = new ApproveAssignmentRequest();
if (assignmentId != null) request.setAssignmentId(assignmentId);
if (requesterFeedback != null) {
request.setRequesterFeedback(requesterFeedback);
}
executeRequest(request, ResultMatch.ApproveAssignment.name(),
ResultMatch.ApproveAssignment.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_RejectAssignmentOperation.html
*/
public void rejectAssignment(String assignmentId, String requesterFeedback)
throws ServiceException {
RejectAssignmentRequest request = new RejectAssignmentRequest();
if (assignmentId != null) request.setAssignmentId(assignmentId);
if (requesterFeedback != null) {
request.setRequesterFeedback(requesterFeedback);
}
executeRequest(request, ResultMatch.RejectAssignment.name(),
ResultMatch.RejectAssignment.getResultTypeName());
}
private GetAssignmentsForHITRequest wrapAssignmentParams(String hitId, SortDirection sortDirection, AssignmentStatus[] status,
GetAssignmentsForHITSortProperty sortProperty, Integer pageNumber, Integer pageSize, String[] responseGroup) {
GetAssignmentsForHITRequest request = new GetAssignmentsForHITRequest();
if (hitId != null) request.setHITId(hitId);
if (status != null) request.setAssignmentStatus(status);
if (pageNumber != null) request.setPageNumber(pageNumber);
if (pageSize != null) request.setPageSize(pageSize);
if (sortDirection != null) request.setSortDirection(sortDirection);
if (sortProperty != null) request.setSortProperty(sortProperty);
if (responseGroup != null) request.setResponseGroup(responseGroup);
return request;
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_GetAssignmentsForHITOperation.html
*/
public GetAssignmentsForHITResult getAssignmentsForHIT(String hitId, SortDirection sortDirection, AssignmentStatus[] status,
GetAssignmentsForHITSortProperty sortProperty, Integer pageNumber, Integer pageSize, String[] responseGroup)
throws ServiceException {
GetAssignmentsForHITRequest request = wrapAssignmentParams(hitId, sortDirection, status,
sortProperty, pageNumber, pageSize, responseGroup);
GetAssignmentsForHITResult result = null;
result = (GetAssignmentsForHITResult) executeRequest(request,
ResultMatch.GetAssignmentsForHIT.name(),
ResultMatch.GetAssignmentsForHIT.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result;
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_GetFileUploadURLOperation.html
*/
public String getFileUploadURL(String assignmentId, String questionIdentifier)
throws ServiceException {
GetFileUploadURLRequest request = new GetFileUploadURLRequest();
if (assignmentId != null) request.setAssignmentId(assignmentId);
if (questionIdentifier != null) request.setQuestionIdentifier(questionIdentifier);
GetFileUploadURLResult result = null;
result = (GetFileUploadURLResult) executeRequest(request,
ResultMatch.GetFileUploadURL.name(),
ResultMatch.GetFileUploadURL.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result.getFileUploadURL();
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_SearchHITsOperation.html
*/
public SearchHITsResult searchHITs(SortDirection sortDirection, SearchHITsSortProperty sortProperty,
Integer pageNumber, Integer pageSize, String[] responseGroup)
throws ServiceException {
SearchHITsRequest request = new SearchHITsRequest();
if (pageNumber != null) request.setPageNumber(pageNumber);
if (pageSize != null) request.setPageSize(pageSize);
if (sortDirection != null) request.setSortDirection(sortDirection);
if (sortProperty != null) request.setSortProperty(sortProperty);
if (responseGroup != null) request.setResponseGroup(responseGroup);
SearchHITsResult result = null;
result = (SearchHITsResult) executeRequest(request,
ResultMatch.SearchHITs.name(),
ResultMatch.SearchHITs.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result;
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_GrantBonusOperation.html
*/
public void grantBonus(String workerId, Double bonusAmount, String assignmentId,
String reason) throws ServiceException {
GrantBonusRequest request = new GrantBonusRequest();
if (assignmentId != null) request.setAssignmentId(assignmentId);
if (reason != null) request.setReason(reason);
if (workerId != null) request.setWorkerId(workerId);
if (bonusAmount != null) {
Price p = new Price();
p.setAmount(new BigDecimal(bonusAmount));
p.setCurrencyCode("USD");
request.setBonusAmount(p);
}
executeRequest(request, ResultMatch.GrantBonus.name(),
ResultMatch.GrantBonus.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_GetBonusPaymentsOperation.html
*/
public GetBonusPaymentsResult getBonusPayments(String hitId, String assignmentId,
Integer pageNumber, Integer pageSize)
throws ServiceException {
GetBonusPaymentsRequest request = new GetBonusPaymentsRequest();
if (assignmentId != null) request.setAssignmentId(assignmentId);
if (hitId != null) request.setHITId(hitId);
if (pageNumber != null) request.setPageNumber(pageNumber);
if (pageSize != null) request.setPageSize(pageSize);
GetBonusPaymentsResult result = null;
result = (GetBonusPaymentsResult) executeRequest(request,
ResultMatch.GetBonusPayments.name(),
ResultMatch.GetBonusPayments.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result;
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_CreateQualificationTypeOperation.html
*/
public QualificationType createQualificationType(String name, String keywords, String description,
QualificationTypeStatus status, Long retryDelayInSeconds, String test, String answerKey,
Long testDurationInSeconds, Boolean autoGranted, Integer autoGrantedValue)
throws ServiceException {
CreateQualificationTypeRequest request = new CreateQualificationTypeRequest();
if (name != null) request.setName(name);
if (answerKey != null) request.setAnswerKey(answerKey);
if (autoGranted != null) request.setAutoGranted(autoGranted);
if (autoGrantedValue != null) request.setAutoGrantedValue(autoGrantedValue);
if (description != null) request.setDescription(description);
if (keywords != null) request.setKeywords(keywords);
if (status != null) request.setQualificationTypeStatus(status);
if (test != null) request.setTest(test);
if (retryDelayInSeconds != null) request.setRetryDelayInSeconds(retryDelayInSeconds);
if (testDurationInSeconds != null)request.setTestDurationInSeconds(testDurationInSeconds);
QualificationType result = null;
result = (QualificationType) executeRequest(request,
ResultMatch.CreateQualificationType.name(),
ResultMatch.CreateQualificationType.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result;
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_GetQualificationRequestsOperation.html
*/
public GetQualificationRequestsResult getQualificationRequests(String qualificationTypeId, SortDirection sortDirection,
GetQualificationRequestsSortProperty sortProperty, Integer pageNumber, Integer pageSize)
throws ServiceException {
GetQualificationRequestsRequest request = new GetQualificationRequestsRequest();
if (qualificationTypeId != null) request.setQualificationTypeId(qualificationTypeId);
if (pageNumber != null) request.setPageNumber(pageNumber);
if (pageSize != null) request.setPageSize(pageSize);
if (sortDirection != null) request.setSortDirection(sortDirection);
if (sortProperty != null) request.setSortProperty(sortProperty);
GetQualificationRequestsResult result = null;
result = (GetQualificationRequestsResult) executeRequest(request,
ResultMatch.GetQualificationRequests.name(),
ResultMatch.GetQualificationRequests.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result;
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_RejectQualificationRequestOperation.html
*/
public void rejectQualificationRequest(String qualificationRequestId, String reason)
throws ServiceException {
RejectQualificationRequestRequest request = new RejectQualificationRequestRequest();
if (reason != null) request.setReason(reason);
if (qualificationRequestId != null)
request.setQualificationRequestId(qualificationRequestId);
executeRequest(request, ResultMatch.RejectQualificationRequest.name(),
ResultMatch.RejectQualificationRequest.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_GrantQualificationOperation.html
*/
public void grantQualification(String qualificationRequestId, Integer integerValue) throws ServiceException {
GrantQualificationRequest request = new GrantQualificationRequest();
if (integerValue != null) request.setIntegerValue(integerValue);
if (qualificationRequestId != null)
request.setQualificationRequestId(qualificationRequestId);
try {
executeRequest(request, ResultMatch.GrantQualification.name(),
ResultMatch.GrantQualification.getResultTypeName());
} catch (ObjectDoesNotExistException e) {
throw e;
} catch (Exception e) {
throw new ServiceException("Could not execute request: " + e.getLocalizedMessage());
}
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_AssignQualificationOperation.html
*/
public void assignQualification(String qualificationTypeId, String workerId, Integer integerValue,
Boolean sendNotification) throws ServiceException {
AssignQualificationRequest request = new AssignQualificationRequest();
if (workerId != null) request.setWorkerId(workerId);
if (integerValue != null) request.setIntegerValue(integerValue);
if (qualificationTypeId != null) request.setQualificationTypeId(qualificationTypeId);
if (sendNotification != null) request.setSendNotification(sendNotification);
executeRequest(request, ResultMatch.AssignQualification.name(),
ResultMatch.AssignQualification.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_RevokeQualificationOperation.html
*/
public void revokeQualification(String qualificationTypeId, String subjectId,
String reason) throws ServiceException {
RevokeQualificationRequest request = new RevokeQualificationRequest();
if (qualificationTypeId != null) request.setQualificationTypeId(qualificationTypeId);
if (reason != null) request.setReason(reason);
if (subjectId != null) request.setSubjectId(subjectId);
executeRequest(request, ResultMatch.RevokeQualification.name(),
ResultMatch.RevokeQualification.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_UpdateQualificationScoreOperation.html
*/
public void updateQualificationScore(String qualificationTypeId, String subjectId,
Integer integerValue) throws ServiceException {
UpdateQualificationScoreRequest request = new UpdateQualificationScoreRequest();
if (qualificationTypeId != null) request.setQualificationTypeId(qualificationTypeId);
if (integerValue != null) request.setIntegerValue(integerValue);
if (subjectId != null) request.setSubjectId(subjectId);
executeRequest(request, ResultMatch.UpdateQualificationScore.name(),
ResultMatch.UpdateQualificationScore.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_GetQualificationTypeOperation.html
*/
public QualificationType getQualificationType(String qualificationTypeId) throws ServiceException {
GetQualificationTypeRequest request = new GetQualificationTypeRequest();
if (qualificationTypeId != null) request.setQualificationTypeId(qualificationTypeId);
QualificationType result = null;
result = (QualificationType) executeRequest(request,
ResultMatch.GetQualificationType.name(),
ResultMatch.GetQualificationType.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result;
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_GetQualificationScoreOperation.html
*/
public Qualification getQualificationScore(String qualificationTypeId, String subjectId)
throws ServiceException {
GetQualificationScoreRequest request = new GetQualificationScoreRequest();
if (qualificationTypeId != null) request.setQualificationTypeId(qualificationTypeId);
if (subjectId != null) request.setSubjectId(subjectId);
Qualification result = null;
result = (Qualification) executeRequest(request,
ResultMatch.GetQualificationScore.name(),
ResultMatch.GetQualificationScore.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result;
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_SearchQualificationTypesOperation.html
*/
public SearchQualificationTypesResult searchQualificationTypes(String query, Boolean mustBeRequestable,
Boolean mustBeOwnedByCaller, SortDirection sortDirection, SearchQualificationTypesSortProperty sortProperty,
Integer pageNumber, Integer pageSize)
throws ServiceException {
SearchQualificationTypesRequest request = new SearchQualificationTypesRequest();
if (query != null) request.setQuery(query);
if (pageNumber != null) request.setPageNumber(pageNumber);
if (pageSize != null) request.setPageSize(pageSize);
if (sortDirection != null) request.setSortDirection(sortDirection);
if (sortProperty != null) request.setSortProperty(sortProperty);
if (mustBeOwnedByCaller != null) request.setMustBeOwnedByCaller(mustBeOwnedByCaller);
if (mustBeRequestable != null) request.setMustBeRequestable(mustBeRequestable);
SearchQualificationTypesResult result = null;
result = (SearchQualificationTypesResult) executeRequest(request,
ResultMatch.SearchQualificationTypes.name(),
ResultMatch.SearchQualificationTypes.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result;
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_UpdateQualificationTypeOperation.html
*/
public QualificationType updateQualificationType(String qualificationTypeId, String description,
QualificationTypeStatus status, String test, String answerKey, Long testDurationInSeconds,
Long retryDelayInSeconds, Boolean autoGranted, Integer autoGrantedValue)
throws ServiceException {
UpdateQualificationTypeRequest request = new UpdateQualificationTypeRequest();
if (answerKey != null) request.setAnswerKey(answerKey);
if (autoGranted != null) request.setAutoGranted(autoGranted);
if (autoGrantedValue != null) request.setAutoGrantedValue(autoGrantedValue);
if (description != null) request.setDescription(description);
if (status != null) request.setQualificationTypeStatus(status);
if (test != null) request.setTest(test);
if (testDurationInSeconds != null) request.setTestDurationInSeconds(testDurationInSeconds);
if (retryDelayInSeconds != null) request.setRetryDelayInSeconds(retryDelayInSeconds);
if (qualificationTypeId != null) request.setQualificationTypeId(qualificationTypeId);
QualificationType result = null;
result = (QualificationType) executeRequest(request,
ResultMatch.UpdateQualificationType.name(),
ResultMatch.UpdateQualificationType.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result;
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_GetAccountBalanceOperation.html
*/
public GetAccountBalanceResult getAccountBalance(String unused) throws ServiceException {
GetAccountBalanceRequest request = new GetAccountBalanceRequest();
if (unused != null) request.setUnused(unused);
GetAccountBalanceResult result = null;
result = (GetAccountBalanceResult) executeRequest(request,
ResultMatch.GetAccountBalance.name(),
ResultMatch.GetAccountBalance.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result;
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_GetRequesterStatisticOperation.html
*/
public DataPoint[] getRequesterStatistic(RequesterStatistic statistic, TimePeriod timePeriod,
Integer count) throws ServiceException {
GetRequesterStatisticRequest request = new GetRequesterStatisticRequest();
if (count != null) request.setCount(count);
if (statistic != null) request.setStatistic(statistic);
if (timePeriod != null) request.setTimePeriod(timePeriod);
GetStatisticResult result = null;
result = (GetStatisticResult) executeRequest(request,
ResultMatch.GetRequesterStatistic.name(),
ResultMatch.GetRequesterStatistic.getResultTypeName());
if (result == null || result.getDataPoint() == null) {
throw new ServiceException("No response");
}
return result.getDataPoint();
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_NotifyWorkersOperation.html
*/
public void notifyWorkers(String subject, String messageText, String[] workerId)
throws ServiceException {
NotifyWorkersRequest request = new NotifyWorkersRequest();
if (messageText != null) request.setMessageText(messageText);
if (subject != null) request.setSubject(subject);
if (workerId != null) request.setWorkerId(workerId);
executeRequest(request, ResultMatch.NotifyWorkers.name(),
ResultMatch.NotifyWorkers.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_SetWorkerAcceptLimitOperation.html
*/
public void setWorkerAcceptLimit(Integer maxWorkerAcceptLimit, LimitGroupType type,
String limitGroupId) throws ServiceException {
SetWorkerAcceptLimitRequest request = new SetWorkerAcceptLimitRequest();
if (maxWorkerAcceptLimit != null) request.setMaxWorkerAcceptLimit(maxWorkerAcceptLimit);
if (type != null) request.setLimitGroupType(type);
if (limitGroupId != null) request.setLimitGroupId(limitGroupId);
executeRequest(request, ResultMatch.SetWorkerAcceptLimit.name(),
ResultMatch.SetWorkerAcceptLimit.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_GetWorkerAcceptLimitOperation.html
*/
public int getWorkerAcceptLimit(LimitGroupType type, String limitGroupId) throws ServiceException {
GetWorkerAcceptLimitRequest request = new GetWorkerAcceptLimitRequest();
if (type != null) request.setLimitGroupType(type);
if (limitGroupId != null) request.setLimitGroupId(limitGroupId);
GetWorkerAcceptLimitResult result = null;
result = (GetWorkerAcceptLimitResult) executeRequest(request,
ResultMatch.GetWorkerAcceptLimit.name(),
ResultMatch.GetWorkerAcceptLimit.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result.getMaxWorkerAcceptLimit();
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-06-21/ApiReference_BlockWorkerOperation.html
*/
public void blockWorker( String workerId, String reason ) {
BlockWorkerRequest request = new BlockWorkerRequest();
if (workerId != null) request.setWorkerId( workerId );
if (reason != null) request.setReason( reason );
executeRequest( request, ResultMatch.BlockWorker.name(), ResultMatch.BlockWorker.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-06-21/ApiReference_UnblockWorkerOperation.html
*/
public void unblockWorker( String workerId, String reason ) {
UnblockWorkerRequest request = new UnblockWorkerRequest();
if (workerId != null) request.setWorkerId( workerId );
if (reason != null) request.setReason( reason );
executeRequest( request, ResultMatch.UnblockWorker.name(), ResultMatch.UnblockWorker.getResultTypeName());
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_GetWorkerAcceptLimitOperation.html
*/
public Information help(String[] about, HelpRequestHelpType type) throws ServiceException {
HelpRequest request = new HelpRequest();
if (about != null) request.setAbout(about);
if (type != null) request.setHelpType(type);
Information result = null;
result = (Information) executeRequest(request,
ResultMatch.Help.name(),
ResultMatch.Help.getResultTypeName());
if (result == null) {
throw new ServiceException("No response");
}
return result;
}
/**
* Creates a HIT asynchronously using the Axis worker thread pool.
* It returns an AsyncReply object, which can either be used to
* wait for the asynchronous call to complete and to get the result
* of the call. Alternatively, a callback handler can be passed
* that is notified when the call has completed.
*
* The work queue is using a pool of daemon threads to process the submitted tasks.
* To guarantee that all work submitted to the queue was processed before the JVM
* exits, this requires to wait for all future results of the submitted work items.
* This can conveniently be done using the getResult() method of the AsyncReply
* object returned by this method. A typical usage pattern would be to first submit
* all requests to the work queue, store the AsyncReply objects in an array and then
* call getResult() for each of the objects in the array.
*
* @throws ServiceException
*/
public AsyncReply createHITAsync(String hitTypeId, String title, String description, String keywords,
String question, Double reward, Long assignmentDurationInSeconds, Long autoApprovalDelayInSeconds,
Long lifetimeInSeconds, Integer maxAssignments, String requesterAnnotation,
QualificationRequirement[] qualificationRequirements, String[] responseGroup,
AsyncCallback callback) {
CreateHITRequest request = wrapHITParams(hitTypeId, title, description, keywords,
question, reward, assignmentDurationInSeconds, autoApprovalDelayInSeconds,
lifetimeInSeconds, maxAssignments, requesterAnnotation,
qualificationRequirements, responseGroup);
return executeAsyncRequest(request,
ResultMatch.CreateHIT.name(),
ResultMatch.CreateHIT.getResultTypeName(),
callback);
}
/**
* Loads a HIT asynchronously using the Axis worker thread pool.
* It returns an AsyncReply object, which can either be used to
* wait for the asynchronous call to complete and to get the result
* of the call. Alternatively, a callback handler can be passed
* that is notified when the call has completed.
*
* The work queue is using a pool of daemon threads to process the submitted tasks.
* To guarantee that all work submitted to the queue was processed before the JVM
* exits, this requires to wait for all future results of the submitted work items.
* This can conveniently be done using the getResult() method of the AsyncReply
* object returned by this method. A typical usage pattern would be to first submit
* all requests to the work queue, store the AsyncReply objects in an array and then
* call getResult() for each of the objects in the array.
*/
public AsyncReply getHITAsync(String hitId, String[] responseGroup,
AsyncCallback callback) throws ServiceException {
GetHITRequest request = new GetHITRequest();
if (hitId != null) request.setHITId(hitId);
if (responseGroup != null) request.setResponseGroup(responseGroup);
return executeAsyncRequest(request,
ResultMatch.GetHIT.name(),
ResultMatch.GetHIT.getResultTypeName(),
callback);
}
/**
* Updates the hit type of a HIT asynchronously using the Axis worker thread pool.
* It returns an AsyncReply object, which can either be used to
* wait for the asynchronous call to complete and to get the result
* of the call. Alternatively, a callback handler can be passed
* that is notified when the call has completed.
*
* The work queue is using a pool of daemon threads to process the submitted tasks.
* To guarantee that all work submitted to the queue was processed before the JVM
* exits, this requires to wait for all future results of the submitted work items.
* This can conveniently be done using the getResult() method of the AsyncReply
* object returned by this method. A typical usage pattern would be to first submit
* all requests to the work queue, store the AsyncReply objects in an array and then
* call getResult() for each of the objects in the array.
*/
public AsyncReply changeHITTypeOfHITAsync(String hitId, String newHITTypeId,
AsyncCallback callback) {
ChangeHITTypeOfHITRequest request = new ChangeHITTypeOfHITRequest();
request.setHITId(hitId);
request.setHITTypeId(newHITTypeId);
return executeAsyncRequest(request,
ResultMatch.ChangeHITTypeOfHIT.name(),
ResultMatch.ChangeHITTypeOfHIT.getResultTypeName(),
callback);
}
/**
* @see http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2007-03-12/ApiReference_ApproveAssignmentOperation.html
*/
public AsyncReply approveAssignmentAsync(String assignmentId, String requesterFeedback,
AsyncCallback callback)
throws ServiceException {
ApproveAssignmentRequest request = new ApproveAssignmentRequest();
if (assignmentId != null) request.setAssignmentId(assignmentId);
if (requesterFeedback != null) {
request.setRequesterFeedback(requesterFeedback);
}
return executeAsyncRequest(request,
ResultMatch.ApproveAssignment.name(),
ResultMatch.ApproveAssignment.getResultTypeName(),
callback);
}
/**
* Loads an assignments page for a HIT asynchronously using the Axis worker thread pool.
* It returns an AsyncReply object, which can either be used to
* wait for the asynchronous call to complete and to get the result
* of the call. Alternatively, a callback handler can be passed
* that is notified when the call has completed.
*
* The work queue is using a pool of daemon threads to process the submitted tasks.
* To guarantee that all work submitted to the queue was processed before the JVM
* exits, this requires to wait for all future results of the submitted work items.
* This can conveniently be done using the getResult() method of the AsyncReply
* object returned by this method. A typical usage pattern would be to first submit
* all requests to the work queue, store the AsyncReply objects in an array and then
* call getResult() for each of the objects in the array.
*/
public AsyncReply getAssignmentsForHITAsync(String hitId, SortDirection sortDirection, AssignmentStatus[] status,
GetAssignmentsForHITSortProperty sortProperty, Integer pageNumber, Integer pageSize, String[] responseGroup,
AsyncCallback callback) throws ServiceException {
GetAssignmentsForHITRequest request = wrapAssignmentParams(hitId, sortDirection, status,
sortProperty, pageNumber, pageSize, responseGroup);
return executeAsyncRequest(request,
ResultMatch.GetAssignmentsForHIT.name(),
ResultMatch.GetAssignmentsForHIT.getResultTypeName(),
callback);
}
/**
* Loads all assignment pages for a HIT using the Axis worker thread pool.
*/
public Assignment[] getAssignmentsForHITAsync(String hitId, SortDirection sortDirection, AssignmentStatus[] status,
GetAssignmentsForHITSortProperty sortProperty, Integer pageSize, String[] responseGroup,
GetAssignmentsForHITResult firstPage,
AsyncCallback callback) throws ServiceException {
Assignment[] ret = new Assignment[] {};
GetAssignmentsForHITResult result=null;
if (firstPage==null) {
// get first page to find how many assignments there are
AsyncReply first = getAssignmentsForHITAsync(hitId, sortDirection, status, sortProperty,
1,
pageSize, responseGroup, callback);
result = ((GetAssignmentsForHITResult[])first.getResult())[0];
if (result.getAssignment() != null) {
ret = result.getAssignment();
}
}
else {
result = firstPage;
}
// check size and total size and create subsequent requests if necessary
if (ret.length == pageSize && result.getTotalNumResults() > pageSize) {
// there are more results
List<Assignment> results = new ArrayList<Assignment>();
Collections.addAll(results, ret);
int numPages = result.getTotalNumResults()/pageSize;
AsyncReply[] replies = new AsyncReply[numPages];
for (int i=0; i<numPages; i++) {
replies[i] = getAssignmentsForHITAsync(hitId, sortDirection, status, sortProperty,
i+1,
pageSize, responseGroup, callback);
}
// append results
for (int i=0; i<numPages; i++) {
result = ((GetAssignmentsForHITResult[])replies[i].getResult())[0];
if (result.getAssignment() != null) {
Collections.addAll(results, result.getAssignment());
}
}
ret = (Assignment[]) results.toArray(new Assignment[results.size()]);
}
return ret;
}
/**
* Disposes a HIT asynchronously
*/
public AsyncReply disposeHITAsync(String hitId, AsyncCallback callback)
throws ServiceException {
DisposeHITRequest request = new DisposeHITRequest();
if (hitId != null) request.setHITId(hitId);
return executeAsyncRequest(request,
ResultMatch.DisposeHIT.name(),
ResultMatch.DisposeHIT.getResultTypeName(),
callback);
}
}