/**
* <p>Copyright: Copyright (c) 2012</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.jres.metadata.ui.wizards;
import java.util.Collection;
import java.util.List;
import org.apache.commons.lang.ArrayUtils;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import com.hundsun.ares.studio.core.ARESModelException;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.core.model.CorePackage;
import com.hundsun.ares.studio.jres.metadata.ui.Language;
import com.hundsun.ares.studio.jres.metadata.ui.LanguageRegister;
import com.hundsun.ares.studio.jres.model.metadata.BusinessDataType;
import com.hundsun.ares.studio.jres.model.metadata.BusinessDataTypeList;
import com.hundsun.ares.studio.jres.model.metadata.ConstantItem;
import com.hundsun.ares.studio.jres.model.metadata.ConstantList;
import com.hundsun.ares.studio.jres.model.metadata.ErrorNoItem;
import com.hundsun.ares.studio.jres.model.metadata.ErrorNoList;
import com.hundsun.ares.studio.jres.model.metadata.MetadataPackage;
import com.hundsun.ares.studio.jres.model.metadata.MetadataResourceData;
import com.hundsun.ares.studio.jres.model.metadata.StandardDataType;
import com.hundsun.ares.studio.jres.model.metadata.StandardDataTypeList;
import com.hundsun.ares.studio.jres.model.metadata.StandardField;
import com.hundsun.ares.studio.jres.model.metadata.StandardFieldList;
import com.hundsun.ares.studio.jres.model.metadata.TypeDefaultValue;
import com.hundsun.ares.studio.jres.model.metadata.TypeDefaultValueList;
/**
*
* Ԫ���ݵ��������
* @author qinyuan
*
*/
public class ImportMetaDataHelper {
private static ImportMetaDataHelper instance;
/**
* @return the instance
*/
public static ImportMetaDataHelper getInstance() {
if(null == instance) {
instance = new ImportMetaDataHelper();
initMetadataLanguages();
}
return instance;
}
static Language[] languages;
static String[] languageIds;
static String[] languageTitles;
private static void initMetadataLanguages() {
languages = LanguageRegister.getInstance().getRegisteredLanguages();
languageIds = new String[languages.length];
languageTitles = new String[languages.length];
for (int i = 0; i < languageIds.length; i++) {
languageIds[i] = languages[i].getId();
languageTitles[i] = languages[i].getName();
}
}
/**
* ������ֶ�
* @param resource
* @param table
* @param monitor
* @throws ARESModelException
*/
public void importStdFld(IARESResource resource, List<List<String>> table,StandardFieldList list, IProgressMonitor monitor) throws ARESModelException {
List<EObject> items = getStdFldItems(resource, table);
list.getItems().addAll( (Collection<? extends StandardField>) items);
if(null != monitor) {
resource.save(list, true, new SubProgressMonitor(monitor, 25));
}else {
resource.save(list, true, monitor);
}
}
/**
* ���ֶ���Ŀ
* @param resource
* @param table
* @return
*/
public List<EObject> getStdFldItems(IARESResource resource,
List<List<String>> table) {
List<EObject> items = POIUtils.importExcelStringTable(table, MetadataPackage.Literals.STANDARD_FIELD,
new String[]{"�ֶ���","�ֶ�����","�ֶ�����","�ֵ���Ŀ","˵��","�ֶ�˵��"},
new EStructuralFeature[]{
MetadataPackage.Literals.NAMED_ELEMENT__NAME,
MetadataPackage.Literals.STANDARD_FIELD__DATA_TYPE,
MetadataPackage.Literals.NAMED_ELEMENT__CHINESE_NAME,
MetadataPackage.Literals.STANDARD_FIELD__DICTIONARY_TYPE,
MetadataPackage.Literals.NAMED_ELEMENT__DESCRIPTION,
MetadataPackage.Literals.NAMED_ELEMENT__DESCRIPTION},
true,
ArrayUtils.EMPTY_STRING_ARRAY, ArrayUtils.EMPTY_STRING_ARRAY, resource);
return items;
}
/**
* ҵ����������
* @param resource
* @param table
* @param monitor
* @throws ARESModelException
*/
public void importBizType(IARESResource resource, List<List<String>> table,BusinessDataTypeList list, IProgressMonitor monitor) throws ARESModelException {
List<EObject> items = getBizTypeItems(resource, table);
list.getItems().addAll((Collection<? extends BusinessDataType>) items);
if(null != monitor) {
resource.save(list, true, new SubProgressMonitor(monitor, 25));
}else {
resource.save(list, true, monitor);
}
}
/**
* �����
* @param resource
* @param table
* @param list
* @param monitor
* @throws ARESModelException
*/
public void importErrorNo(IARESResource resource, List<List<String>> table,ErrorNoList list, IProgressMonitor monitor) throws ARESModelException {
List<EObject> items = getErrorNoItems(resource, table);
list.getItems().addAll((Collection<? extends ErrorNoItem>) items);
if(null != monitor) {
resource.save(list, true, new SubProgressMonitor(monitor, 25));
}else {
resource.save(list, true, monitor);
}
}
/**
* ��ȡ�������Ŀ
* @param resource
* @param table
* @return
*/
public List<EObject> getErrorNoItems(IARESResource resource,
List<List<String>> table) {
List<EObject> items = POIUtils.importExcelStringTable(table, MetadataPackage.Literals.ERROR_NO_ITEM,
new String[] { "�����","������ʾ��Ϣ", "��������", "����","˵��" },
new EStructuralFeature[] {
MetadataPackage.Literals.ERROR_NO_ITEM__NO,
MetadataPackage.Literals.ERROR_NO_ITEM__MESSAGE,
MetadataPackage.Literals.NAMED_ELEMENT__NAME,
MetadataPackage.Literals.ERROR_NO_ITEM__LEVEL,
MetadataPackage.Literals.NAMED_ELEMENT__DESCRIPTION},
true,
ArrayUtils.EMPTY_STRING_ARRAY, ArrayUtils.EMPTY_STRING_ARRAY, resource);
return items;
}
/**
* ��ȡ�������Ŀ(����ģʽ)
* @param resource
* @param table
* @return
*/
public MetadataResourceData<ErrorNoItem> getErrorNo(MetadataResourceData ower , IARESResource resource,
List<List<String>> table) {
POIUtils.importExcelStringTableForError(table, MetadataPackage.Literals.ERROR_NO_ITEM,
new String[] { "�����","������ʾ��Ϣ", "��������", "����","˵��" },
new EStructuralFeature[] {
MetadataPackage.Literals.ERROR_NO_ITEM__NO,
MetadataPackage.Literals.ERROR_NO_ITEM__MESSAGE,
MetadataPackage.Literals.NAMED_ELEMENT__NAME,
MetadataPackage.Literals.ERROR_NO_ITEM__LEVEL,
MetadataPackage.Literals.NAMED_ELEMENT__DESCRIPTION},
true,
ArrayUtils.EMPTY_STRING_ARRAY, ArrayUtils.EMPTY_STRING_ARRAY,ower , resource);
return ower;
}
/**
* �û�����
* @param resource
* @param table
* @param monitor
* @throws ARESModelException
*/
public void importConstant(IARESResource resource, List<List<String>> table,ConstantList list, IProgressMonitor monitor) throws ARESModelException {
List<EObject> items = getConsItem(resource, table);
list.getItems().addAll((Collection<? extends ConstantItem>) items);
if(null != monitor) {
resource.save(list, true, new SubProgressMonitor(monitor, 25));
}else {
resource.save(list, true, monitor);
}
}
/**
* ��ȡ�û�������Ŀ
* @param resource
* @param table
* @return
*/
public List<EObject> getConsItem(IARESResource resource,
List<List<String>> table) {
List<EObject> items = POIUtils.importExcelStringTable(table, MetadataPackage.Literals.CONSTANT_ITEM,
new String[] {"����","����ֵ","˵��" },
new EStructuralFeature[] {
MetadataPackage.Literals.NAMED_ELEMENT__NAME,
MetadataPackage.Literals.CONSTANT_ITEM__VALUE,
MetadataPackage.Literals.NAMED_ELEMENT__DESCRIPTION},
true,
ArrayUtils.EMPTY_STRING_ARRAY, ArrayUtils.EMPTY_STRING_ARRAY, resource);
return items;
}
/**
* ��ȡҵ������������Ŀ
* @param resource
* @param table
* @return
*/
public List<EObject> getBizTypeItems(IARESResource resource,
List<List<String>> table) {
List<EObject> items = POIUtils.importExcelStringTable(table, MetadataPackage.Literals.BUSINESS_DATA_TYPE,
new String[]{"������","��������","������","����","����","Ĭ��ֵ","˵��"},
new EStructuralFeature[]{
MetadataPackage.Literals.NAMED_ELEMENT__NAME,
MetadataPackage.Literals.NAMED_ELEMENT__CHINESE_NAME,
MetadataPackage.Literals.BUSINESS_DATA_TYPE__STD_TYPE,
MetadataPackage.Literals.BUSINESS_DATA_TYPE__LENGTH,
MetadataPackage.Literals.BUSINESS_DATA_TYPE__PRECISION,
MetadataPackage.Literals.BUSINESS_DATA_TYPE__DEFAULT_VALUE,
MetadataPackage.Literals.NAMED_ELEMENT__DESCRIPTION},
true,
ArrayUtils.EMPTY_STRING_ARRAY, ArrayUtils.EMPTY_STRING_ARRAY, resource);
return items;
}
/**
* �������������
* @param resource
* @param table
* @param monitor
* @throws ARESModelException
*/
public void importStdType(IARESResource resource, List<List<String>> table,StandardDataTypeList list, IProgressMonitor monitor) throws ARESModelException {
List<EObject> items = getStdTypeItems(resource, table);
list.getItems().addAll( (Collection<? extends StandardDataType>) items);
if(null != monitor) {
resource.save(list, true, new SubProgressMonitor(monitor, 25));
}else {
resource.save(list, true, monitor);
}
}
/**
* ��ȡ������������Ŀ
* @param resource
* @param table
* @return
*/
public List<EObject> getStdTypeItems(IARESResource resource,
List<List<String>> table) {
List<EObject> items = POIUtils.importExcelStringTable(table, MetadataPackage.Literals.STANDARD_DATA_TYPE,
new String[]{"������", "����","˵��"},
new EStructuralFeature[]{MetadataPackage.Literals.NAMED_ELEMENT__NAME, MetadataPackage.Literals.NAMED_ELEMENT__CHINESE_NAME, MetadataPackage.Literals.NAMED_ELEMENT__DESCRIPTION},
true,
languageTitles, languageIds, resource);
return items;
}
/**
* ����Ĭ��ֵ
* @param resource Ĭ��ֵ
* @param table Ĭ��ֵ�б�
* @param monitor
* @throws ARESModelException
*/
public void importDefValue(IARESResource resource, List<List<String>> table,TypeDefaultValueList list, IProgressMonitor monitor) throws ARESModelException {
List<EObject> items = getDefValueItems(resource, table);
list.getItems().addAll((Collection<? extends TypeDefaultValue>) items);
if(null != monitor) {
resource.save(list, true, new SubProgressMonitor(monitor, 25));
}else {
resource.save(list, true, monitor);
}
}
/**
* ��ȡĬ��ֵ��Ŀ
* @param resource
* @param table
* @return
*/
public List<EObject> getDefValueItems(IARESResource resource,
List<List<String>> table) {
List<EObject> items = POIUtils.importExcelStringTable(table, MetadataPackage.Literals.TYPE_DEFAULT_VALUE,
new String[]{"Ĭ��ֵ��", "����", "˵��"},
new EStructuralFeature[]{MetadataPackage.Literals.NAMED_ELEMENT__NAME, MetadataPackage.Literals.NAMED_ELEMENT__CHINESE_NAME, MetadataPackage.Literals.NAMED_ELEMENT__DESCRIPTION},
true,
languageTitles, languageIds, resource);
return items;
}
/**
* ��ȡҵ�������
* @param resource
* @param table
* @return
*/
public List<EObject> getBizPropertyConfigs(IARESResource resource,
List<List<String>> table) {
List<EObject> items = POIUtils.importExcelStringTable(table, MetadataPackage.Literals.BIZ_PROPERTY_CONFIG,
new String[]{"���","����","������","˵��"},
new EStructuralFeature[]{MetadataPackage.Literals.NAMED_ELEMENT__NAME,MetadataPackage.Literals.BIZ_PROPERTY_CONFIG__ENAME, MetadataPackage.Literals.NAMED_ELEMENT__CHINESE_NAME, MetadataPackage.Literals.NAMED_ELEMENT__DESCRIPTION},
true,
languageTitles, languageIds, resource);
return items;
}
/**
* ��ȡ����ŷ�Χ
* @param resource
* @param table
* @return
*/
public List<EObject> getIdRangeItems(IARESResource resource,
List<List<String>> table) {
List<EObject> items = POIUtils.importExcelStringTable(table, MetadataPackage.Literals.ID_RANGE_ITEM,
new String[]{"ģ��·��"},
new EStructuralFeature[]{MetadataPackage.Literals.NAMED_ELEMENT__NAME},
true,
new String[]{}, new String[]{}, resource);
return items;
}
/**
* ��װ����ʷ����¼
*
* @param resource
* @param table
* @return
*/
public static List<EObject> getRevHisesInfos(IARESResource resource,
List<List<String>> table){
List<EObject> items = POIUtils.importExcelStringTable(table, CorePackage.Literals.REVISION_HISTORY,
new String[] {"�İ汾", "������","������","��ԭ��", "�ĵ�","������","������","��ע"},
new EStructuralFeature[] {
CorePackage.Literals.REVISION_HISTORY__VERSION,
CorePackage.Literals.REVISION_HISTORY__MODIFIED_DATE,
CorePackage.Literals.REVISION_HISTORY__MODIFIED,
CorePackage.Literals.REVISION_HISTORY__MODIFIED_REASON,
CorePackage.Literals.REVISION_HISTORY__ORDER_NUMBER,
CorePackage.Literals.REVISION_HISTORY__MODIFIED_BY,
CorePackage.Literals.REVISION_HISTORY__CHARGER,
CorePackage.Literals.REVISION_HISTORY__COMMENT},
false,
languageTitles, languageIds, resource);
return items;
}
}