package com.hundsun.ares.studio.jres.basicdata.database.factory;
import java.util.LinkedHashMap;
import java.util.Map;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
import com.hundsun.ares.studio.core.IARESProject;
import com.hundsun.ares.studio.jres.basicdata.constant.IBasicDataEpacakgeConstant;
import com.hundsun.ares.studio.jres.basicdata.core.basicdata.BasicDataField;
import com.hundsun.ares.studio.jres.basicdata.core.basicdata.BasicdataFactory;
import com.hundsun.ares.studio.jres.basicdata.core.basicdata.PackageDefine;
import com.hundsun.ares.studio.jres.basicdata.core.basicdata.SingleTable;
import com.hundsun.ares.studio.jres.basicdata.logic.epackage.BaseEPackageFactory;
import com.hundsun.ares.studio.jres.basicdata.logic.util.BasicDataEpackageUtil;
import com.hundsun.ares.studio.jres.basicdata.logic.util.JRESResProviderUtil;
import com.hundsun.ares.studio.jres.database.constant.IDatabaseRefType;
import com.hundsun.ares.studio.jres.model.database.TableColumn;
import com.hundsun.ares.studio.jres.model.database.TableResourceData;
public class SingleEPackageFactory extends BaseEPackageFactory{
public static SingleEPackageFactory eInstance = new SingleEPackageFactory();
public EPackage create(IARESProject project,PackageDefine define)throws Exception{
if(define instanceof SingleTable){
TableResourceData table = JRESResProviderUtil.getResourceModel(project,
((SingleTable)define).getMaster(),
IDatabaseRefType.Table,
TableResourceData.class);
Map<String,BasicDataField> basicDataFields = new LinkedHashMap<String,BasicDataField>();
if(table==null){
throw new Exception(String.format("��[%s]�Ѿ������ڡ�", ((SingleTable)define).getMaster()));
}
for(TableColumn item:table.getColumns()){
BasicDataField basicDataField = BasicdataFactory.eINSTANCE.createBasicDataField();
basicDataField.setName(item.getFieldName());
basicDataField.setDataType(item.getDataType());
basicDataField.setColumnType(item.getColumnType().getValue());
basicDataField.setChineseName(item.getChineseName());
basicDataField.setDefaultValue(item.getDefaultValue());
basicDataFields.put(item.getFieldName(),basicDataField);
}
if(0 == basicDataFields.size()){
throw new Exception(String.format("����[%s]û���ֶΡ�", ((SingleTable)define).getMaster()));
}
EPackage ePackage = theCoreFactory.createEPackage();
ePackage.setName("SingleTablePackage");
ePackage.setNsPrefix("singleTable");
ePackage.setNsURI("http://www.hundsun.com/singletable");
EClass rootClass = addResourceRoot(ePackage);
EClass masterClass = addMasterItem(ePackage,
IBasicDataEpacakgeConstant.MasterItem,
basicDataFields);
BasicDataEpackageUtil.addMasterKeyAnnotation(masterClass, DataBaseEPackageUtil.getMasterKeys(table).toArray(new String[]{}));
return ePackage;
}
return null;
}
}