package org.ieee.odm.adapter.pwd.impl;
import static org.ieee.odm.adapter.pwd.AbstractPowerWorldAdapter.*;
import org.ieee.odm.adapter.pwd.AbstractPowerWorldAdapter.RecType;
import org.ieee.odm.common.ODMLogger;
/**
* PWDHelper is defined to hold some common method used in the data processing.
* For example, data completeness checking and get record data type
* @author
*
*/
public class PWDHelper {
/**
* Check whether the Argument Fields is completed yet, since it is
* possible that the Argument Fields are defined in multiple lines.
* @param str
* @return
*/
public static boolean isArgumentFieldsCompleted(String str){
boolean leftParenthesis=false;
boolean rightParenthesis=false;
if(str.indexOf("(")>-1)leftParenthesis=true;
rightParenthesis=endsWithRightParenthesis(str);
return leftParenthesis&&rightParenthesis;
}
private static boolean endsWithRightParenthesis(String str){
return str.trim().endsWith(")");
}
/**
* Get the record data type
* @param str input record string
* @return record data type string
*/
public static RecType getDataType(String str){
int indexOfLeftParenthesis=str.indexOf("(");
int indexOfFirstComma=str.indexOf(",");
String dataType=str.substring(indexOfLeftParenthesis+1, indexOfFirstComma).trim();
RecType recordType=null;
if(dataType.equals(Token_Bus)){
recordType=RecType.BUS;
}
else if(dataType.equals(Token_Load)){
recordType=RecType.LOAD;
}
else if(dataType.equals(Token_Gen)){
recordType=RecType.GEN;
}
else if(dataType.equals(Token_Shunt)){
recordType=RecType.SHUNT;
}
else if(dataType.equals(Token_Branch)){
recordType=RecType.BRANCH;
}
else if(dataType.equals(Token_XFormer)){
recordType=RecType.XFORMER;
}
else if(dataType.equals(Token_3WXFormer)){
recordType=RecType.TRI_W_XFORMER;
}
else if(dataType.equals(Token_Area)){
recordType=RecType.AREA;
}
else if(dataType.equals(Token_Zone)){
recordType=RecType.ZONE;
}
else if(dataType.equals(Token_CaseInfo)){
recordType=RecType.CASE_INFO;
}
else if(dataType.equals(Token_XFCORRECTION)){
recordType=RecType.XFCORRECTION;
}
else if(dataType.equals(Token_LIMITSET)){
recordType=RecType.LIMITSET;
}
else {
recordType=RecType.Undefined;
ODMLogger.getLogger().info("Undifined data type:"+dataType);
}
return recordType;
}
}