package com.intuit.tank.script;
/*
* #%L
* JSF Support Beans
* %%
* Copyright (C) 2011 - 2015 Intuit Inc.
* %%
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
* #L%
*/
import static com.intuit.tank.util.ButtonLabel.ADD_LABEL;
import static com.intuit.tank.util.ButtonLabel.EDIT_LABEL;
import java.io.Serializable;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import com.intuit.tank.common.ScriptUtil;
import com.intuit.tank.project.ScriptStep;
import com.intuit.tank.script.ScriptConstants;
@Named
@ConversationScoped
public class ScriptRequestEditor implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private ScriptEditor scriptEditor;
private ScriptStep step;
private boolean editMode;
private String gotoGroup;
private String buttonLabel = ADD_LABEL;
@Inject
private RequestHeaderEditor requestHeaderEditor;
@Inject
private ResponseHeaderEditor responseHeaderEditor;
@Inject
private RequestCookiesEditor requestCookiesEditor;
@Inject
private ResponseCookiesEditor responseCookiesEditor;
@Inject
private ResponseContentEditor responseContentEditor;
@Inject
private PostDataEditor postDataEditor;
@Inject
private QueryStringEditor queryStringEditor;
public void insertRequest() {
this.step = new ScriptStep();
step.setType(ScriptConstants.REQUEST);
requestHeaderEditor.editRequestHeaders(step.getRequestheaders());
responseHeaderEditor.editResponseHeaders(step.getResponseheaders());
requestCookiesEditor.editRequestCookies(step.getRequestCookies());
responseCookiesEditor.editResponseCookies(step.getResponseCookies());
responseContentEditor.editResponseContent(step.getResponseData());
postDataEditor.editPostData(step.getPostDatas());
queryStringEditor.editQueryStrings(step.getQueryStrings());
setupOnFail();
editMode = false;
setButtonLabel(ADD_LABEL);
}
public void editRequest(ScriptStep scriptStep) {
this.step = scriptStep;
step.setType(ScriptConstants.REQUEST);
requestHeaderEditor.editRequestHeaders(step.getRequestheaders());
responseHeaderEditor.editResponseHeaders(step.getResponseheaders());
requestCookiesEditor.editRequestCookies(step.getRequestCookies());
responseCookiesEditor.editResponseCookies(step.getResponseCookies());
responseContentEditor.editResponseContent(step.getResponseData());
postDataEditor.editPostData(step.getPostDatas());
queryStringEditor.editQueryStrings(step.getQueryStrings());
setupOnFail();
setButtonLabel(EDIT_LABEL);
editMode = true;
}
private void setupOnFail() {
scriptEditor.populateGroupList();
String onFail = step.getOnFail();
if (onFail.contains("goto")) {
String[] onfailure = onFail.split(" ");
if (onfailure.length > 1) {
gotoGroup = onfailure[1];
} else {
gotoGroup = "";
}
}
}
public String getOnFail() {
String onFail = "";
if (step.getOnFail().startsWith("goto")) {
onFail = step.getOnFail().substring(0, 4);
} else {
onFail = step.getOnFail();
}
return onFail;
}
public void setOnFail(String onFail) {
step.setOnFail(onFail);
}
/**
* @return the gotoGroup
*/
public String getGotoGroup() {
if (step.getOnFail().startsWith("goto")) {
if (step.getOnFail().length() > 4) {
gotoGroup = step.getOnFail().substring(5, step.getOnFail().length());
} else {
gotoGroup = "";
}
}
return gotoGroup;
}
/**
* @param gotoGroup
* the gotoGroup to set
*/
public void setGotoGroup(String gotoGroup) {
this.gotoGroup = gotoGroup;
}
/**
* @return the buttonLabel
*/
public String getButtonLabel() {
return buttonLabel;
}
/**
* @param buttonLabel
* the buttonLabel to set
*/
public void setButtonLabel(String buttonLabel) {
this.buttonLabel = buttonLabel;
}
/**
* @return the step
*/
public ScriptStep getStep() {
if (step == null) {
step = new ScriptStep();
}
return step;
}
/**
* @param step
* the step to set
*/
public void setStep(ScriptStep step) {
this.step = step;
}
public FailureTypes[] getFailureValues() {
FailureTypes[] failureTypes = FailureTypes.values();
return failureTypes;
// return new String[] { "Abort Script, goto Next Script", "Continue to Next Request",
// "Skip remaining Requests in Group", "Goto Group", "Terminate User" };
}
public void addToScript() {
if (editMode) {
done();
} else {
insert();
}
}
public void insert() {
done();
scriptEditor.insert(step);
}
public void done() {
step.setRequestheaders(requestHeaderEditor.getRequestDataSet());
step.setResponseheaders(responseHeaderEditor.getRequestDataSet());
step.setRequestCookies(requestCookiesEditor.getRequestDataSet());
step.setResponseCookies(responseCookiesEditor.getRequestDataSet());
step.setResponseData(responseContentEditor.getRequestDataSet());
step.setPostDatas(postDataEditor.getRequestDataSet());
step.setQueryStrings(queryStringEditor.getRequestDataSet());
if (getOnFail().equals(FailureTypes.gotoGroupRequest.getValue())) {
step.setOnFail(step.getOnFail() + " " + gotoGroup);
}
scriptEditor.populateGroupList();
ScriptUtil.updateStepLabel(step);
}
public RepresentationEntity[] getRequestFormats() {
RepresentationEntity keyValue = new RepresentationEntity("Key-Value", ScriptConstants.NVP_TYPE);
RepresentationEntity xml = new RepresentationEntity("XML", ScriptConstants.XML_TYPE);
RepresentationEntity json = new RepresentationEntity("JSON", ScriptConstants.JSON_TYPE);
RepresentationEntity multiPart = new RepresentationEntity("Multi-Part", ScriptConstants.MULTI_PART_TYPE);
RepresentationEntity plainText = new RepresentationEntity("Plain Text", ScriptConstants.PLAIN_TEXT_TYPE);
RepresentationEntity[] entities = new RepresentationEntity[] { keyValue, xml, json, plainText, multiPart };
return entities;
}
public RepresentationEntity[] getResponseFormats() {
RepresentationEntity jsonValue = new RepresentationEntity("JSON", "json");
RepresentationEntity raw = new RepresentationEntity("RAW", "raw");
RepresentationEntity xml = new RepresentationEntity("XML", "xml");
RepresentationEntity[] entities = new RepresentationEntity[] { jsonValue, raw, xml };
return entities;
}
}