package com.jaspersoft.jasperserver.jaxrs.client.apiadapters.inputControls;
import com.jaspersoft.jasperserver.dto.reports.inputcontrols.ReportInputControl;
import com.jaspersoft.jasperserver.dto.reports.inputcontrols.ReportInputControlsListWrapper;
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.AbstractAdapter;
import com.jaspersoft.jasperserver.jaxrs.client.core.JerseyRequest;
import com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage;
import com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.MandatoryParameterNotFoundException;
import com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.handling.DefaultErrorHandler;
import com.jaspersoft.jasperserver.jaxrs.client.core.operationresult.OperationResult;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author Tetiana Iefimenko
*/
public class InputControlsAdapter extends AbstractAdapter{
public static final String REPORTS_URI = "reports";
public static final String INPUT_CONTROLS_URI = "inputControls";
public ArrayList<String> path = new ArrayList<String>();
private String containerUri;
private Boolean excludeState = false;
public InputControlsAdapter container(String uri) {
if (uri == null) {
throw new MandatoryParameterNotFoundException("Uri of container should be specified");
}
this.containerUri = uri;
return this;
}
public InputControlsAdapter excludeState(Boolean value) {
this.excludeState = value;
return this;
}
public InputControlsAdapter(SessionStorage sessionStorage) {
super(sessionStorage);
}
public InputControlsValuesAdapter values() {
return new InputControlsValuesAdapter(sessionStorage, containerUri);
}
public OperationResult<ReportInputControlsListWrapper> get(){
return buildRequest().get();
}
public OperationResult<ReportInputControlsListWrapper> reorder(List<ReportInputControl> inputControls){
ReportInputControlsListWrapper wrapper = new ReportInputControlsListWrapper(inputControls);
return buildRequest().put(wrapper);
}
private JerseyRequest<ReportInputControlsListWrapper> buildRequest(){
path.add(REPORTS_URI);
path.addAll(Arrays.asList(containerUri.split("/")));
path.add(INPUT_CONTROLS_URI);
JerseyRequest<ReportInputControlsListWrapper> request = JerseyRequest.buildRequest(sessionStorage,
ReportInputControlsListWrapper.class,
path.toArray(new String[path.size()]),
new DefaultErrorHandler());
if (excludeState) {
request.addParam("exclude", "state");
}
return request;
}
}