/**
* Դ�������ƣ�PDMHelper.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.database.ui
* ����˵����$desc
* ����ĵ���
* ���ߣ�
*/
package com.hundsun.ares.studio.jres.database.pdm;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import com.hundsun.ares.studio.core.ARESModelException;
import com.hundsun.ares.studio.core.IARESProject;
import com.hundsun.ares.studio.core.service.DataServiceManager;
import com.hundsun.ares.studio.jres.database.pdm.bean.PDMStandardField;
import com.hundsun.ares.studio.jres.database.pdm.bean.PDMTable;
import com.hundsun.ares.studio.jres.database.pdm.bean.PDMTableColumn;
import com.hundsun.ares.studio.jres.database.pdm.bean.PDMTableField;
import com.hundsun.ares.studio.jres.database.pdm.bean.PDMTableIndex;
import com.hundsun.ares.studio.jres.database.pdm.bean.PDMTableIndexColumn;
import com.hundsun.ares.studio.jres.database.pdm.bean.PDMView;
import com.hundsun.ares.studio.jres.metadata.service.IMetadataService;
import com.hundsun.ares.studio.jres.metadata.service.IStandardDataType;
import com.hundsun.ares.studio.jres.model.database.ColumnType;
import com.hundsun.ares.studio.jres.model.database.DatabaseFactory;
import com.hundsun.ares.studio.jres.model.database.TableColumn;
import com.hundsun.ares.studio.jres.model.database.TableIndex;
import com.hundsun.ares.studio.jres.model.database.TableIndexColumn;
import com.hundsun.ares.studio.jres.model.database.TableKey;
import com.hundsun.ares.studio.jres.model.database.TableResourceData;
import com.hundsun.ares.studio.jres.model.database.ViewResourceData;
import com.hundsun.ares.studio.jres.model.database.key_type;
import com.hundsun.ares.studio.jres.model.metadata.BusinessDataType;
import com.hundsun.ares.studio.jres.model.metadata.MetadataFactory;
import com.hundsun.ares.studio.jres.model.metadata.StandardField;
/**
* @author liaogc
* pdm��һ�ε��������
*/
public class PDMImportHelper {
public static final String NUMBER_TYPE="NUMBER";
public static final String NUMERIC_Type = "NUMERIC";
/**
* �ϲ���ͬ���ֶβ�Ϊÿһ���ֶβ���һ���µ�Ψһ�ı��ֶ���
* @param tablefieldMap
* @return
*/
public List<PDMTableField> mergeTableField(Map<String,List<PDMTableField>> tablefieldMap){
List<PDMTableField> mergeList = new ArrayList<PDMTableField>();//ȫ�����ֶ��б�
List<String> exclusionNames = new ArrayList<String>();//�ֶ�����ͻ�б�
List<String> fieleNames = new ArrayList<String>(tablefieldMap.keySet());//�ֶ����б�
Collections.sort(fieleNames,new NameSorter());//�������ֶ��б�
for(String fieldName:fieleNames){
List<PDMTableField> fields = tablefieldMap.get(fieldName);
if(fields.size()==1){//���û����ͬ����
if(!exclusionNames.contains(fieldName)){//�����������ͻ
mergeList.add(fields.get(0));
exclusionNames.add(fieldName);
fields.get(0).setChanged(true);
}else{//��ͻȡ�л�ȡһ��Ψһ������
String newName = PDMHelper.getUniqueName(fieldName,exclusionNames);
fields.get(0).setNewName(newName);
mergeList.add(fields.get(0));
exclusionNames.add(newName);
fields.get(0).setChanged(true);
}
}else if(fields.size()>1){//�ϲ���ͬ���ֶ�
List<PDMTableField> subUniqueFeilds = new ArrayList<PDMTableField>();//�ֶ�����ͬ,��������������ԭʼ���Ͳ�ͬ���ֶ��б�
for(int i = 0;i < fields.size();i++){
PDMTableField field1 = fields.get(i);
if(!subUniqueFeilds.contains(field1)){
boolean found = false;
for(int j=0;j<subUniqueFeilds.size();j++){
PDMTableField field2 = subUniqueFeilds.get(j);
if(isTheSameTableField(field1,field2)){
found = true;
if(!StringUtils.equalsIgnoreCase(field1.getTable(), field2.getTable())){
if(!field2.getBeLongTable().contains(field1.getTable())){
field2.getBeLongTable().add(field1.getTable());//���������
}
}
break;
}
}
if(!found){
subUniqueFeilds.add(field1);
}
}
}
//�Ϻ���ͬ�ֶ����������ͻ�������������ͬ���ֶ��б�����ֶ�������
for(PDMTableField field:subUniqueFeilds){
String name = field.getName();
if(!exclusionNames.contains(name)){//�����������ͻ
mergeList.add(field);
exclusionNames.add(name);
field.setChanged(true);
}else{
String newName = PDMHelper.getUniqueName(name,exclusionNames);//���������ͻ,���ȡһ��Ψһ������
field.setNewName(newName);
mergeList.add(field);
exclusionNames.add(newName);
field.setChanged(true);
for(String tableName:field.getBeLongTable()){//�������ͻ��ͬ�ı����(�ؼ�)
for(PDMTableField asociateTableField:fields){
if(StringUtils.equals(tableName, asociateTableField.getTable())){
//��Ӧ���ٱȽ������ֶ��Ƿ�һ���,�������ڲ�������һ��pdm���ֶ�����ͬ�������ֶ�ͬʱ��һ�ű���,����Ϊ�˼�ֻ�Ƚϱ���������
if(!asociateTableField.isChanged()){//���û�иı��
asociateTableField.setNewName(newName);
asociateTableField.setChanged(true);
}
}
}
}
}
}
}
}
return mergeList;
}
/**
* ��һ�κϲ�����ֶ�����ԭ�����ֶν��кϲ�
* @param mergeList ��һ�κϲ���ı��ֶ��б�
* @param standardFields ԭ�б��ֶ��б�
* @return
*/
public List<PDMTableField> mergeTableField(List<PDMTableField> mergeList ,List<StandardField> standardFields,IARESProject project){
List<PDMTableField> newMergeList = new ArrayList<PDMTableField>();
String databaseType = "oracle";
try {
databaseType = project.getProjectProperty().getString("tabledir");
int _index = -1 ;
int dotIndex = -1;
if((_index=StringUtils.lastIndexOf(databaseType,"_" ))>-1 && (dotIndex=StringUtils.lastIndexOf(databaseType,"."))>-1 ){
databaseType = StringUtils.substring(databaseType,_index+1, dotIndex).toLowerCase();
}else{
databaseType = "oracle";
}
} catch (ARESModelException e) {
e.printStackTrace();
}
List<String> exclusionNames = new ArrayList<String>();
for(StandardField standardField:standardFields){
exclusionNames.add(standardField.getName());
}
for(PDMTableField pdmTableField:mergeList){
String name = StringUtils.isNotBlank(pdmTableField.getNewName())?pdmTableField.getNewName():pdmTableField.getName();
for(StandardField standardField:standardFields){
if(isTheSameStandardField(pdmTableField,standardField,project,databaseType)){//��ͬ
break;
}else if(StringUtils.equals(name, standardField.getName())){//�г�ͻ��
String newName = PDMHelper.getUniqueName(name,exclusionNames);
pdmTableField.setNewName(newName);//�����µ��ֶ���
exclusionNames.add(newName);
break;
}
}
newMergeList.add(pdmTableField);
}
return newMergeList;
}
/**
* ����TableField,ȡ�ø�TableField��Ӧ�ı��ֶ���Ϣ��ҵ���ֶ���Ϣ
* @param tableField
* @param project
* @return
*/
public Map<String,String> analyseTableFeild(PDMTableField tableField,IARESProject project,String databaseType){
Map<String,String> fieldInfo = new HashMap<String,String>();
IMetadataService metadataService = DataServiceManager.getInstance().getService(project,IMetadataService.class);
String type ="";//ҵ������
String length ="";//����
String precision = "";//����
String stdName = "";//��������
boolean find = false;
//���Ų��ұ�����(��һ����)
IStandardDataType standardDataType = findStandardDataTypeByRealType(tableField.getType(),metadataService.getStandardDataTypeList(),databaseType);
if(standardDataType!=null){
find = true;
type = tableField.getType();
stdName = standardDataType.getName();
}
//�����һ��û���ҵ�,������Ӧ�Ŀմ����NUMBER(X)ת����NUMBER(X,0)����NUMERIC(X)ת����NUMERIC(X,0)
if(StringUtils.isBlank(type)){
if(StringUtils.indexOf(StringUtils.defaultIfBlank(tableField.getType(), "").toLowerCase(), NUMBER_TYPE.toLowerCase())>-1
||StringUtils.indexOf(StringUtils.defaultIfBlank(tableField.getType(), "").toLowerCase(), NUMERIC_Type.toLowerCase())>-1){
String lp = StringUtils.substringBetween(StringUtils.defaultIfBlank(tableField.getType(), ""), "(", ")");
if(lp!=null){
if(StringUtils.indexOf(lp,",")== -1){
int index1 = tableField.getType().indexOf("(");
String prefix = tableField.getType().substring(0,index1);
//��NUMBER(X)ת����NUMBER(X,0)����NUMERIC(X)ת����NUMERIC(X,0)
String fullType = prefix+"("+lp+",0)";
standardDataType = findStandardDataTypeByRealType(fullType,metadataService.getStandardDataTypeList(),databaseType);
if(standardDataType!=null){
type = fullType;
find = true;
//tableField.setType(fullType);
stdName = standardDataType.getName();
}
}
}
}
}
//ֻ�г��ȵ����
String lp = StringUtils.substringBetween(StringUtils.defaultIfBlank(tableField.getType(), ""), "(", ")");
String lp2 = StringUtils.substringBetween(StringUtils.defaultIfBlank(tableField.getType(), ""), "��", "��");
if(StringUtils.isNotBlank(lp)||StringUtils.isNotBlank(lp2)){
if(StringUtils.isNotBlank(lp) && StringUtils.split(lp, ",").length == 1 || StringUtils.isNotBlank(lp2) && StringUtils.split(lp2, "��").length == 1){//��()��ֻ��һ������ʱ
length = lp ;
if(!find){//���ŵ�һ�α����Ͳ���
int index1 = tableField.getType().indexOf("(");
if(index1==-1){
index1 = tableField.getType().indexOf("��");
}
String prefix = tableField.getType().substring(0,index1);
String fullType = prefix+"($L)";
standardDataType = findStandardDataTypeByRealType(fullType,metadataService.getStandardDataTypeList(),databaseType);
if(standardDataType!=null){
type = fullType;
find = true;
stdName = standardDataType.getName();
}
if(!find){//���Ͼ������ŵڶ��α����Ͳ���
fullType = prefix+"($L,$P)";
standardDataType = findStandardDataTypeByRealType(fullType,metadataService.getStandardDataTypeList(),databaseType);
if(standardDataType!=null){
type = fullType;
find = true;
stdName = standardDataType.getName();
}
}
}
}else if(StringUtils.isNotBlank(lp) && StringUtils.split(lp, ",").length == 2 || StringUtils.isNotBlank(lp2) && StringUtils.split(lp2, "��").length == 2){//��()������������ʱ���Ų�ѯ����������
String []lplitArray ={""};
if(StringUtils.isNotBlank(lp)){
lplitArray = StringUtils.split(lp, ",");
}
if(lplitArray.length==0 || lplitArray.length==1){
lplitArray = StringUtils.split(lp, "��");
}
length = lplitArray[0] ;
precision = lplitArray[1];
if(!find){
int index1 = tableField.getType().indexOf("(");
if(index1==-1){
index1 = tableField.getType().indexOf("��");
}
String prefix = tableField.getType().substring(0,index1);
String fullType = prefix+"($L,$P)";
standardDataType = findStandardDataTypeByRealType(fullType,metadataService.getStandardDataTypeList(),databaseType);
if(standardDataType!=null){
type = fullType;
find = true;
stdName = standardDataType.getName();
}
}
}
}
//ҵ������������Ϣ
fieldInfo.put("BusinessDataType_name", "Hs"+tableField.getNewName());
fieldInfo.put("BusinessDataType_chinesName", tableField.getChineseName());
fieldInfo.put("BusinessDataType_stdType", stdName);
fieldInfo.put("BusinessDataType_length", length);
fieldInfo.put("BusinessDataType_precision", precision);
fieldInfo.put("BusinessDataType_comment", tableField.getChineseName());
fieldInfo.put("BusinessDataType_no_std_name", convertOriginalTypeToBusinessTypeOfNoStd(tableField.getType()));//�DZ��ֶ�ʱҵ���������͵�����
//���ֶ���Ϣ
fieldInfo.put("StandardFeild_name", tableField.getNewName());
fieldInfo.put("StandardFeild_chinesName", tableField.getChineseName());
fieldInfo.put("StandardFeild_type","Hs"+tableField.getNewName());
fieldInfo.put("StandardFeilde_comment", tableField.getChineseName());
return fieldInfo;
}
/**
* ��PDM�еı���Ϣ��Ƶ�ares�ж�Ӧ�����ݿ��ģ����ȥ
* @param pdmTable
* @return
*/
public TableResourceData createTableResourceData(PDMTable pdmTable,Map<String,List<PDMTableField>> allTableFieldMap,boolean importMode ){
TableResourceData table = DatabaseFactory.eINSTANCE.createTableResourceData();//�½�����Դ
//���ݽ����ı���Ϣ���ñ���Դ�и�����Ϣ
table.setName(pdmTable.getName());//����
table.setChineseName(pdmTable.getChineseName());//��������
table.setDescription(pdmTable.getDesc());//��˵����Ϣ
//��Լ�����Ӻ�����
TableKey tableKey = null;
for( PDMTableColumn pdmColumn: pdmTable.getColumns()){//�������Ϣ
TableColumn column = DatabaseFactory.eINSTANCE.createTableColumn();//�½�����
List<PDMTableField> pdmTableFieldList = allTableFieldMap.get(pdmColumn.getFieldName());//��ȡ��ͬ���ĸ���������е���
int index =indexTableFieldByColumnName(pdmTableFieldList,pdmTable.getName(),pdmColumn.getFieldName());//���ݱ���,�ֶ���(ԭʼ��)��������������ֶ��б��е�λ��
if(index>-1){
PDMTableField pdmTableField = pdmTableFieldList.get(index);//�µı��ֶ���Ϣ
String fieldName = StringUtils.isNotBlank(pdmTableField.getNewName())?pdmTableField.getNewName():pdmTableField.getName();//�ֶ���
column.setFieldName(fieldName);
if(!importMode){
column.setColumnType(ColumnType.STD_FIELD);
}else{
column.setDataType(pdmTableField.getBusType());
column.setColumnType(ColumnType.NON_STD_FIELD);
column.setDefaultValue(pdmColumn.getDefaultValue());
column.setChineseName(pdmTableField.getChineseName());
}
StringBuffer modifyStr = new StringBuffer();//��������ֶ��������һ���ֶ��ļ�¼
if(StringUtils.isNotBlank(pdmTableField.getNewName())&& !StringUtils.equals(pdmTableField.getNewName(), pdmTableField.getName())){
modifyStr.append("PDM����--").append("�ֶ���:").append("\""+pdmTableField.getName()+"\"").append("��Ϊ:").append("\""+pdmTableField.getNewName()+"\"");
}
if(StringUtils.isNotBlank(modifyStr.toString())){
StringBuffer newComments = new StringBuffer();
newComments.append(modifyStr.toString());//�µı�ע����ǰ
if(StringUtils.isNotBlank(pdmColumn.getComment())){//���ԭ���б�ע
newComments.append("\r\n");//�¾�������
newComments.append(pdmColumn.getComment());//�ɵ��ں�
}
column.setComments(newComments.toString());
}else{
column.setComments(pdmColumn.getComment());
}
}else{
column.setFieldName(pdmColumn.getFieldName());
}
//����������Ϣ
//column.setPrimaryKey(pdmColumn.isPrimaryKey());//����
column.setNullable(pdmColumn.isNullable());//������NULL
column.setDefaultValue(pdmColumn.getDefaultValue());//Ĭ��ֵ
if(pdmColumn.isPrimaryKey()){
if(tableKey == null){
tableKey = DatabaseFactory.eINSTANCE.createTableKey();
tableKey.setName(pdmTable.getName() + "_pk");
tableKey.setType(key_type.PRIMARY);
}
tableKey.getColumns().add(column);
}
table.getColumns().add(column);
}
if(tableKey != null){
table.getKeys().add(tableKey);
}
for(PDMTableIndex pdmTableIndex :pdmTable.getIndexes()){//���ñ�������Ϣ
TableIndex index = DatabaseFactory.eINSTANCE.createTableIndex();
index.setName(pdmTableIndex.getName());
index.setUnique(pdmTableIndex.isUnique());
index.setCluster(pdmTableIndex.isCluster());
for(PDMTableIndexColumn pdmTableIndexColumn :pdmTableIndex.getColumns()){//������������Ϣ
TableIndexColumn indexCol = DatabaseFactory.eINSTANCE.createTableIndexColumn();
indexCol.setColumnName(pdmTableIndexColumn.getColumnName());
index.getColumns().add(indexCol);
}
table.getIndexes().add(index);
}
return table;
}
/**
* ����pdmTableField����PDMStandardField
* @param pdmTableField
* @param parameters
* @return PDMStandardField
*/
public PDMStandardField createPDMStandardField(PDMTableField pdmTableField,Map<String,String> parameters){
PDMStandardField pdmStandardField = new PDMStandardField();
pdmStandardField.setOldName(pdmTableField.getName());
pdmStandardField.setOldChineseName(pdmTableField.getChineseName());
pdmStandardField.setOldBusType(pdmTableField.getType());
pdmStandardField.getBolongSubSystemList().add((pdmTableField.getSubSystem()));
pdmStandardField.setGenName(pdmTableField.getNewName());
pdmStandardField.setGenBusType(pdmTableField.getBusType());
pdmStandardField.setDictId("");
pdmStandardField.setOldComment(pdmTableField.getDesc());
pdmStandardField.setModefyDesc("");
pdmStandardField.setImportPath(StringUtils.defaultIfBlank(parameters.get("subSystem"), ""));//����·��
pdmStandardField.getBelongTableList().addAll(pdmTableField.getBeLongTable());//�ֶ�������
return pdmStandardField;
}
/**
* ��PDM�е���ͼ��Ϣ��Ƶ�ares�ж�Ӧ�����ݿ���ͼģ����
* @param pdmView
* @return
*/
public ViewResourceData createVrewResourceData(PDMView pdmView){
ViewResourceData view = DatabaseFactory.eINSTANCE.createViewResourceData();
view.setName(pdmView.getName());
view.setChineseName(pdmView.getChineseName());
view.setSql(pdmView.getSql());
return view;
}
/**
* ������ʵ�������Ͷ�Ӧ�ı�����
* @param realType
* @param standardDataTypeList
* @return
*/
private IStandardDataType findStandardDataTypeByRealType(String realType,List<IStandardDataType> standardDataTypeList,String databaseType){
if(StringUtils.isBlank(databaseType)){
databaseType = "oracle";
}
for(IStandardDataType sdt:standardDataTypeList){
if(StringUtils.equalsIgnoreCase(realType, sdt.getValue(databaseType))){
return sdt;
}
}
return null;
}
/**
* �ж������ֶ��Ƿ���ͬ:�ֶ���,������,����(ԭʼ����)��ͬ����ͬ
* @param field1
* @param field2
* @return
*/
private boolean isTheSameTableField(PDMTableField field1,PDMTableField field2){
String name = StringUtils.isNotBlank(field1.getNewName())?field1.getNewName():field1.getName();
return StringUtils.equalsIgnoreCase(name, field2.getName()) && StringUtils.equalsIgnoreCase(field1.getType(), field2.getType()) &&StringUtils.equalsIgnoreCase(field1.getChineseName(), field2.getChineseName()) ;
}
/**
* �жϱ������ֶ��Ƿ���ͬ:���ڱ��ֶ�����Hs+ԭʼ����,���ԱȽ�ʱҪע��
* @param field1
* @param field2
* @return
*/
private boolean isTheSameStandardField(PDMTableField field1,StandardField field2,IARESProject project,String databaseType){
String name = StringUtils.isNotBlank(field1.getNewName())?field1.getNewName():field1.getName();
boolean nameSame = StringUtils.equalsIgnoreCase(field1.getName(), field2.getName())&& StringUtils.equalsIgnoreCase(field1.getChineseName(), field2.getChineseName());
boolean stdTypeSame = StringUtils.equalsIgnoreCase("Hs"+name, field2.getDataType()) ;
if(!stdTypeSame){//���Hs+name����ͬ˵���϶�����
return nameSame && stdTypeSame;
}else if(nameSame && stdTypeSame ){
String realDataType = PDMHelper.getRealDataType(project, field2.getName(),databaseType);
if(StringUtils.isNotBlank(realDataType) && StringUtils.isNotBlank(field1.getType())){
stdTypeSame = compareRealDataType(field1.getType(),realDataType);//�Ƚ���ʵ����
}
}
return nameSame && stdTypeSame;
}
/**
* �Ƚ�����ԭʼ�����Ƿ���ͬ
* @param realDataType1
* @param realDataType2
* @return
*/
private boolean compareRealDataType(String realDataType1, String realDataType2){
boolean isSame = StringUtils.equalsIgnoreCase(realDataType1, realDataType2);
if(isSame){
return true;
}
if(StringUtils.indexOf(StringUtils.defaultIfBlank(realDataType1, "").toLowerCase(), NUMBER_TYPE.toLowerCase())>-1
||StringUtils.indexOf(StringUtils.defaultIfBlank(realDataType1, "").toLowerCase(), NUMERIC_Type.toLowerCase())>-1){
String lp = StringUtils.substringBetween(StringUtils.defaultIfBlank(realDataType1, ""), "(", ")");
if(lp!=null){
if(StringUtils.indexOf(lp,",")== -1){
int index1 = realDataType1.indexOf("(");
String prefix = realDataType1.substring(0,index1);
//��NUMBER(X)ת����NUMBER(X,0)����NUMERIC(X)ת����NUMERIC(X,0)
String fullType = prefix+"("+lp+",0)";
isSame = StringUtils.equalsIgnoreCase(fullType, realDataType2);
}
}
}
return isSame;
}
/**
* ����ͬ���ֶ��б����ҵ���Ӧ���Ӧ����Ӧ��,�����������Ӧ����
* ��-1,���ظñ����������ͬ���ֶ��б��е�λ��
* @param pdmTableFieldList
* @param columnName
* @return
*/
private int indexTableFieldByColumnName(List<PDMTableField> pdmTableFieldList,String tableName,String columnName){
if(pdmTableFieldList==null || pdmTableFieldList.size()==0){
return -1;
}
int i=0;
for(PDMTableField pdmTableField:pdmTableFieldList){
//�ֶ�����ͬ,����ͬ���ҵ�
if(StringUtils.equals(pdmTableField.getName(), columnName) && StringUtils.equals(pdmTableField.getTable(), tableName)){
return i;
}
i++;
}
return -1;
}
/**
* ����ҵ�����ݻ�����Ϣ����һ��ҵ����������
* @param fieldInfo
* @return
*/
public BusinessDataType createBusinessDataType(Map<String,String> fieldInfo,boolean importMode){
BusinessDataType businessDataType = MetadataFactory.eINSTANCE.createBusinessDataType();
//ҵ����������
if(!importMode){
businessDataType.setChineseName(fieldInfo.get("BusinessDataType_chinesName"));//�DZ��ֶβ���Ҫ��������
businessDataType.setName(fieldInfo.get("BusinessDataType_name"));
}else{
businessDataType.setName(fieldInfo.get("BusinessDataType_no_std_name"));
}
businessDataType.setStdType(fieldInfo.get("BusinessDataType_stdType"));
if(StringUtils.isNotBlank(fieldInfo.get("BusinessDataType_length"))){
businessDataType.setLength(fieldInfo.get("BusinessDataType_length"));
}
if(StringUtils.isNotBlank(fieldInfo.get("BusinessDataType_precision"))){
businessDataType.setPrecision(fieldInfo.get("BusinessDataType_precision"));
}
businessDataType.setDescription(fieldInfo.get("BusinessDataType_comment"));
return businessDataType;
}
/**
* ���ݱ��ֶλ����������ֶ�
* @param fieldInfo
* @return
*/
public StandardField createcreateStandardField(Map<String,String> fieldInfo){
StandardField standardField = MetadataFactory.eINSTANCE.createStandardField();
//���ֶ���Ϣ
standardField.setName(fieldInfo.get("StandardFeild_name"));
standardField.setChineseName(fieldInfo.get("StandardFeild_chinesName"));
standardField.setDataType(fieldInfo.get("StandardFeild_type"));
standardField.setDescription(fieldInfo.get("StandardFeilde_comment"));
return standardField;
}
/**
* ����ԭʼ����������
* @param originalType
* @return
*/
private String convertOriginalTypeToBusinessTypeOfNoStd(String originalType){
String businessType = StringUtils.defaultIfBlank(originalType, "").trim();
if(StringUtils.indexOf(businessType, "(")>-1){//��(ת����_
businessType = StringUtils.replace(businessType,"(","_");
}else if(StringUtils.indexOf(businessType, "��")>-1){//����(
businessType = StringUtils.replace(businessType,"��","_");
}
if(StringUtils.indexOf(businessType, ",")>-1){//��,ת����_
businessType = StringUtils.replace(businessType,",", "_");
}else if(StringUtils.indexOf(businessType, "��")>-1){//���ģ�
businessType = StringUtils.replace(businessType,"��","_");
}
if(StringUtils.indexOf(businessType, ")")>-1){//��)ת����""��
businessType = StringUtils.replace(businessType,")", "");
}else if(StringUtils.indexOf(businessType, "��")>-1){//���ģ�
businessType = StringUtils.replace(businessType,"��","_");
}
return businessType;
}
public static void main(String[] args){
/*System.out.println(convertOriginalTypeToBusinessTypeOfNoStd("number(10,0)"));
System.out.println(convertOriginalTypeToBusinessTypeOfNoStd("number(10)"));
System.out.println(convertOriginalTypeToBusinessTypeOfNoStd("varchar2(10)"));*/
}
}