/*******************************************************************************
* Copyright (C) 2014 BonitaSoft S.A.
* BonitaSoft is a trademark of BonitaSoft SA.
* This software file is BONITASOFT CONFIDENTIAL. Not For Distribution.
* For commercial licensing information, contact:
* BonitaSoft, 32 rue Gustave Eiffel – 38000 Grenoble
* or BonitaSoft US, 51 Federal Street, Suite 305, San Francisco, CA 94107
*******************************************************************************/
package org.bonitasoft.web.rest.server.api.bdm;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import org.bonitasoft.engine.api.CommandAPI;
import org.bonitasoft.engine.bpm.businessdata.BusinessDataQueryMetadata;
import org.bonitasoft.engine.bpm.businessdata.BusinessDataQueryResult;
import org.bonitasoft.engine.command.CommandExecutionException;
import org.bonitasoft.engine.command.CommandNotFoundException;
import org.bonitasoft.engine.command.CommandParameterizationException;
import org.bonitasoft.web.rest.server.api.resource.CommonResource;
import org.restlet.resource.Get;
/**
* @author Laurent Leseigneur
*/
public class BusinessDataQueryResource extends CommonResource {
public static final String COMMAND_NAME = "getBusinessDataByQueryCommand";
private final CommandAPI commandAPI;
public BusinessDataQueryResource(final CommandAPI commandAPI) {
this.commandAPI = commandAPI;
}
@Get("json")
public Serializable getProcessBusinessDataQuery() throws CommandNotFoundException, CommandParameterizationException, CommandExecutionException {
final Map<String, Serializable> parameters = new HashMap<>();
final Integer searchPageNumber = getSearchPageNumber();
final Integer searchPageSize = getSearchPageSize();
parameters.put("queryName", getQueryParameter(true));
parameters.put("queryParameters", (Serializable) getSearchFilters());
parameters.put("entityClassName", getPathParam("className"));
parameters.put("startIndex", searchPageNumber * searchPageSize);
parameters.put("maxResults", searchPageSize);
parameters.put("businessDataURIPattern", BusinessDataFieldValue.URI_PATTERN);
BusinessDataQueryResult businessDataQueryResult = (BusinessDataQueryResult) commandAPI.execute(COMMAND_NAME, parameters);
final BusinessDataQueryMetadata businessDataQueryMetadata = businessDataQueryResult.getBusinessDataQueryMetadata();
if (businessDataQueryMetadata != null) {
setContentRange(searchPageNumber, searchPageSize, businessDataQueryMetadata.getCount());
}
return businessDataQueryResult.getJsonResults();
}
}