/*******************************************************************************
* Copyright 2017 Capital One Services, LLC and Bitwise, Inc.
* 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 hydrograph.engine.core.component.entity.elements;
import hydrograph.engine.core.component.utils.OperationOutputField;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Properties;
/**
* The Class Operation.
*
* @author Bitwise
*
*/
public class Operation implements Serializable{
/**
*
*/
private static final long serialVersionUID = -9115691570772361681L;
private String operationId;
private String operationClass;
private String[] operationInputFields;
private String[] operationOutputFields;
private Properties operationProperties;
private String expression;
private String accumulatorInitialValue;
private String mergeExpression;
private boolean isExpressionPresent;
private OperationOutputField[] operationFields;
public Operation() {
}
public OperationOutputField[] getOperationFields() {
return operationFields;
}
public void setOperationFields(OperationOutputField[] operationFields) {
this.operationFields = operationFields;
}
public boolean isExpressionPresent() {
return isExpressionPresent;
}
public void setExpressionPresent(boolean expressionPresent) {
isExpressionPresent = expressionPresent;
}
/**
* @return the Expression
*/
public String getExpression() {
return expression;
}
/**
* @param expression
* the Expression to set
*/
public void setExpression(String expression) {
this.expression = expression;
}
/**
* @return the mergeExpression
*/
public String getMergeExpression() {
return mergeExpression;
}
/**
* @param mergeExpression
* the mergeExpression to set
*/
public void setMergeExpression(String mergeExpression) {
this.mergeExpression = mergeExpression;
}
/**
* @return the operationClass
*/
public String getOperationClass() {
return operationClass;
}
/**
* @param operationClass
* the operationClass to set
*/
public void setOperationClass(String operationClass) {
this.operationClass = operationClass;
}
/**
* @return the operationInputFields
*/
public String[] getOperationInputFields() {
return operationInputFields != null ? operationInputFields.clone() : new String[]{};
}
/**
* @param operationInputFields
* the operationInputFields to set
*/
public void setOperationInputFields(String[] operationInputFields) {
this.operationInputFields = operationInputFields != null ? operationInputFields.clone() : null;
}
/**
* @return the operationOutputFields
*/
public String[] getOperationOutputFields() {
return operationOutputFields != null ? operationOutputFields.clone() : null;
}
/**
* @param operationOutputFields
* the operationOutputFields to set
*/
public void setOperationOutputFields(String[] operationOutputFields) {
this.operationOutputFields = operationOutputFields != null ? operationOutputFields.clone() : null;
}
/**
* @return the operationProperties
*/
public Properties getOperationProperties() {
return operationProperties;
}
/**
* @param operationProperties
* the operationProperties to set
*/
public void setOperationProperties(Properties operationProperties) {
this.operationProperties = operationProperties;
}
/**
* @return the operationId
*/
public String getOperationId() {
return operationId;
}
/**
* @param operationId
* the operationId to set
*/
public void setOperationId(String operationId) {
this.operationId = operationId;
}
/**
* @return the accumulatorInitialValue
*/
public String getAccumulatorInitialValue() {
return accumulatorInitialValue;
}
/**
* @param accumulatorInitialValue
* the accumulatorInitialValue to set
*/
public void setAccumulatorInitialValue(String accumulatorInitialValue) {
this.accumulatorInitialValue = accumulatorInitialValue;
}
@Override
public String toString() {
StringBuilder str = new StringBuilder();
str.append("\nOperationID: " + operationId + " | operation class: "
+ operationClass + " | ");
str.append("operation input fields: ");
if (operationInputFields != null) {
str.append(Arrays.toString(operationInputFields));
}
str.append(" | operation output fields: ");
if (operationOutputFields != null) {
str.append(Arrays.toString(operationOutputFields));
}
str.append(" | operation properties: " + operationProperties);
return str.toString();
}
}