package edu.harvard.i2b2.crc.dao.pdo;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class MetaDataTypeMapper {
/** log **/
protected final Log log = LogFactory.getLog(getClass());
String stringDataType[] = {"varchar","varchar2","char","nchar"};
String dateDataType[] = {"date","datetime"};
String intDataType[] = {"int","number","bigint"};
String decimalDataType[] = {"number","decimal","float"};
List<String> stringDataList,dateDataList,intDataList,decimalDataList;
public MetaDataTypeMapper() {
stringDataList = Arrays.asList(stringDataType);
dateDataList = Arrays.asList(dateDataType);
intDataList = Arrays.asList(intDataType);
decimalDataList = Arrays.asList(decimalDataType);
}
public void fillXmlDataType(MetadataDao.TableMetaData[] tableMetaDataList, boolean tablePDOFlag) {
for (int i=0;i<tableMetaDataList.length;i++) {
tableMetaDataList[i].column_xml_type = getXmlDataType(tableMetaDataList[i].column_type, tablePDOFlag);
log.debug("PDO mapping " + tableMetaDataList[i].column_type + " " + tableMetaDataList[i].column_xml_type + " " + tableMetaDataList[i].column_name);
}
}
public String getXmlDataType(String dbDataType, boolean tablePDOFlag ) {
String xmlDataType = "";
if (stringDataList.contains(dbDataType)) {
xmlDataType = "string";
} else if (dateDataList.contains(dbDataType)) {
System.out.println("dateTime");
xmlDataType = "dateTime";
} else if (intDataList.contains(dbDataType) ) {
xmlDataType = "int";
} else if (decimalDataList.contains(dbDataType)) {
xmlDataType = "decimal";
} else {
log.debug("Data type not matching [" + dbDataType + "] default to string " );
if (tablePDOFlag) {
xmlDataType = "defaulted:string";
} else {
xmlDataType = "string";
}
}
return xmlDataType;
}
}