/*
* OpenClinica is distributed under the
* GNU Lesser General Public License (GNU LGPL).
* For details see: http://www.openclinica.org/license
* copyright 2003-2011 Akaza Research
*/
package org.akaza.openclinica.control.form.spreadsheet;
import java.util.Arrays;
/**
* <p>One spreadsheet cell to be validated for instant-calculation func: onChange.<br/>
* For func: onChange(oriName, optionValue), arguments[0] is origin item name;
* arguments[1] is optionValue.</p>
*
*/
//ywang (Aug., 2011)
public class OnChangeSheetValidationCell {
private final OnChangeSheetValidationType type;
private final SheetValidationCell sheetValidationCell;
/**
* If true, always validate OnChangeType first.
*/
private Boolean onChangeTypeFirst;
/**
* final OnChangeSheetValidationType has been set as NONE;
* onChangeTypeFirst has been set as false;
* sheetValidationType has been set as NONE.
*
* @param sheetCell
*/
public OnChangeSheetValidationCell(SheetCell sheetCell) {
this.sheetValidationCell = new SheetValidationCell(sheetCell);
this.type = OnChangeSheetValidationType.NONE;
this.onChangeTypeFirst = Boolean.FALSE;
}
/**
* onChangeTypeFirst has been set as true.
* sheetValidationType has been set as NONE.
*
* @param onValidationType
* @param sheetCell
*/
public OnChangeSheetValidationCell(OnChangeSheetValidationType onValidationType, SheetCell sheetCell) {
this.sheetValidationCell = new SheetValidationCell(sheetCell);
this.type = onValidationType;
this.onChangeTypeFirst = Boolean.TRUE;
}
/**
* onChangeTypeFirst has been set as true.
*
* @param onValidationType
* @param sheetValidationType
* @param sheetCell
*/
public OnChangeSheetValidationCell(OnChangeSheetValidationType onValidationType,
SheetValidationType sheetValidationType, SheetCell sheetCell) {
this.sheetValidationCell = new SheetValidationCell(sheetValidationType, sheetCell);
this.type = onValidationType;
this.onChangeTypeFirst = Boolean.TRUE;
}
/**
* Specially for funcOnChangeStr = func: onChange(oriName, optionValue)
* @param funcOnChangeStr
* @return
*/
public static String[] funcOnChangeArguments(String funcOnChangeStr) {
String[] al = new String[2];
al[0] = funcOnChangeStr.substring(funcOnChangeStr.indexOf("(", 0)+1, funcOnChangeStr.indexOf(",", 0)).trim();
al[1] = funcOnChangeStr.substring(funcOnChangeStr.indexOf(",", 0)+1, funcOnChangeStr.indexOf(")", 0)).trim();
return al;
}
/**
* Set arguments specially for func: onChange(oriName, optionValue)
*/
public void setOriAndOption() {
String[] al = OnChangeSheetValidationCell.funcOnChangeArguments(sheetValidationCell.getSheetArgumentCell().getSheetCell().getColValue());
sheetValidationCell.getSheetArgumentCell().setArguments(Arrays.asList(al));
}
/**
* Precodition: arguments have been valid initialized
* @return
*/
protected String getOriName() {
return sheetValidationCell.getSheetArgumentCell().getArguments().get(0).toString();
}
/**
* Precodition: arguments have been valid initialized
* @return
*/
protected String getOptionValue() {
return sheetValidationCell.getSheetArgumentCell().getArguments().get(1).toString();
}
public OnChangeSheetValidationType getType() {
return type;
}
public SheetValidationCell getSheetValidationCell() {
return sheetValidationCell;
}
public void setOnChangeTypeFirst(Boolean onChangeTypeFirst) {
this.onChangeTypeFirst = onChangeTypeFirst;
}
public Boolean getOnChangeTypeFirst() {
return onChangeTypeFirst;
}
}