/*******************************************************************************
* ATE, Automation Test Engine
*
* Copyright 2015, Montreal PROT, or individual contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors. All third-party contributions are
* distributed under license by Montreal PROT.
*
* 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://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License 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 org.bigtester.ate.model.data;
import org.apache.commons.lang3.StringUtils;
import org.bigtester.ate.GlobalUtils;
import org.bigtester.ate.constant.EnumRunTimeDataType;
import org.bigtester.ate.constant.ExceptionErrorCode;
import org.bigtester.ate.constant.ExceptionMessage;
import org.bigtester.ate.model.data.exception.RuntimeDataException;
import org.bigtester.ate.model.page.page.IPageObject;
import org.eclipse.jdt.annotation.Nullable;
/**
* This class is the abstract class of any input data created in script (Non
* File db generated input data).
*
* @author Peidong Hu
*
*/
public abstract class AbstractRunTimeInputDataHolder extends BaseInputDataValue{
/** The page that has been used to parse the data. */
final private String springBeanID;
/** The page. */
@Nullable
private IPageObject page;
/** The data type. */
final private EnumRunTimeDataType dataType;
/** The page html left boundry. */
@Nullable
private String pageHtmlLeftBoundry;
/** The oage html right boundry. */
@Nullable
private String pageHtmlRightBoundry;
/**
* @return the dataType
*/
public EnumRunTimeDataType getDataType() {
return dataType;
}
/**
* Instantiates a new run time data holder.
*
* @param dataType
* the data type
* @param pageHtmlRightBoundry
*/
public AbstractRunTimeInputDataHolder(EnumRunTimeDataType dataType,
String pageHtmlLeftBoundry, String pageHtmlRightBoundry,
IPageObject page, String springBeanID) {
super("");
this.dataType = dataType;
this.pageHtmlLeftBoundry = pageHtmlLeftBoundry;
this.pageHtmlRightBoundry = pageHtmlRightBoundry;
this.page = page;
this.springBeanID = springBeanID;
}
/**
* Instantiates a new run time data holder.
*
* @param dataType
* the data type
* @param strDataValue
* the str data value
* @param springBeanID
*/
public AbstractRunTimeInputDataHolder(EnumRunTimeDataType dataType, String strDataValue, String springBeanID) {
super(strDataValue);
this.dataType = dataType;
this.springBeanID = springBeanID;
}
/**
* Instantiates a new run time data holder.
*
* @param dataType
* the data type
* @param strDataValue
* the str data value
* @param springBeanID
*/
public AbstractRunTimeInputDataHolder(EnumRunTimeDataType dataType, String springBeanID) {
super("");
this.dataType = dataType;
this.springBeanID = springBeanID;
}
/**
* @return the pageHtmlLeftBoundry
*/
public String getPageHtmlLeftBoundry() {
final String pageHtmlLeftBoundry2 = pageHtmlLeftBoundry;
if (null == pageHtmlLeftBoundry2 ) {
throw GlobalUtils.createNotInitializedException("pageHtmlLeftBoundry");
} else {
return pageHtmlLeftBoundry2;
}
}
/**
* @return the oageHtmlRightBoundry
*/
public String getPageHtmlRightBoundry() {
final String pageHtmlLeftBoundry2 = pageHtmlRightBoundry;
if (null == pageHtmlLeftBoundry2 ) {
throw GlobalUtils.createNotInitializedException("pageHtmlRightBoundry");
} else {
return pageHtmlLeftBoundry2;
}
}
/**
* @return the page
*/
public IPageObject getPage() {
final IPageObject page2 = page;
if (null == page2 ) {
throw GlobalUtils.createNotInitializedException("page object");
} else {
return page2;
}
}
/**
* @param page the page to set
*/
public void setPage(IPageObject page) {
this.page = page;
}
/**
* @param pageHtmlLeftBoundry the pageHtmlLeftBoundry to set
*/
public void setPageHtmlLeftBoundry(String pageHtmlLeftBoundry) {
this.pageHtmlLeftBoundry = pageHtmlLeftBoundry;
}
/**
* @param pageHtmlRightBoundry the pageHtmlRightBoundry to set
*/
public void setPageHtmlRightBoundry(String pageHtmlRightBoundry) {
this.pageHtmlRightBoundry = pageHtmlRightBoundry;
}
/**
* Parses the left right boundry data.
*
* @throws RuntimeDataException the runtime data exception
*/
protected void parseLeftRightBoundryData(int index) throws RuntimeDataException {
String str = getPage().getPageHtmlSource();
String[] values = StringUtils.substringsBetween(str, getPageHtmlLeftBoundry(), getPageHtmlRightBoundry());
if (null == values ) {
throw new RuntimeDataException(ExceptionMessage.MSG_RUNTIMEDATA_NOTFOUND, ExceptionErrorCode.RUNTIMEDATA_NOTFOUND);
}
if (values.length < index+1 || -1 == index) {
index = values.length -1;
}
String setVal = values[index];
if (null == setVal) {
throw GlobalUtils.createInternalError("parseLeftRightBoundryData");
} else {
setStrDataValue( setVal );
}
}
/**
* @return the springBeanID
*/
public String getSpringBeanID() {
return springBeanID;
}
}