/** * */ package com.hundsun.ares.studio.jres.database.utils; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.BooleanUtils; import org.apache.commons.lang.StringUtils; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.util.CellRangeAddress; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IAdapterManager; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Platform; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.util.EcoreUtil; import com.hundsun.ares.studio.core.ARESModelException; import com.hundsun.ares.studio.core.IARESElement; import com.hundsun.ares.studio.core.IARESModule; import com.hundsun.ares.studio.core.IARESModuleRoot; import com.hundsun.ares.studio.core.IARESProject; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.core.model.ICommonModel; import com.hundsun.ares.studio.core.model.ModuleExtensibleModel; import com.hundsun.ares.studio.core.model.ModuleProperty; import com.hundsun.ares.studio.core.model.RevisionHistory; import com.hundsun.ares.studio.core.model.util.RevisionHistoryUtil; import com.hundsun.ares.studio.core.util.ARESElementUtil; import com.hundsun.ares.studio.jres.database.constant.IDatabaseResType; import com.hundsun.ares.studio.jres.database.oracle.constant.IOracleConstant; import com.hundsun.ares.studio.jres.database.ui.DatabaseUI; import com.hundsun.ares.studio.jres.metadata.constant.IMetadataRefType; import com.hundsun.ares.studio.jres.metadata.constant.IMetadataResType; import com.hundsun.ares.studio.jres.metadata.ui.Language; import com.hundsun.ares.studio.jres.metadata.ui.LanguageRegister; import com.hundsun.ares.studio.jres.metadata.ui.wizards.POIUtils; import com.hundsun.ares.studio.jres.metadata.ui.wizards.POIUtils.ExtensibleData2AttributeHelper; import com.hundsun.ares.studio.jres.metadata.ui.wizards.POIUtils.ExtensibleData2MapAttributeHelper; import com.hundsun.ares.studio.jres.metadata.ui.wizards.POIUtils.ExtensibleDataAttributeHelper; import com.hundsun.ares.studio.jres.metadata.ui.wizards.POIUtils.IAttributeHelper; import com.hundsun.ares.studio.jres.metadata.ui.wizards.POIUtils.IHeaderSorter; import com.hundsun.ares.studio.jres.metadata.ui.wizards.POIUtils.NormalAttributeHelper; import com.hundsun.ares.studio.jres.model.chouse.ChousePackage; import com.hundsun.ares.studio.jres.model.chouse.TableBaseProperty; import com.hundsun.ares.studio.jres.model.database.ColumnType; import com.hundsun.ares.studio.jres.model.database.DatabasePackage; import com.hundsun.ares.studio.jres.model.database.DatabaseResourceData; import com.hundsun.ares.studio.jres.model.database.ForeignKey; 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.TableResourceData; import com.hundsun.ares.studio.jres.model.database.ViewResourceData; import com.hundsun.ares.studio.jres.model.database.oracle.OraclePackage; import com.hundsun.ares.studio.jres.model.database.oracle.OracleTableProperty; import com.hundsun.ares.studio.jres.model.database.oracle.table_type; import com.hundsun.ares.studio.jres.model.database.oracle.impl.SequenceResourceDataImpl; import com.hundsun.ares.studio.jres.model.metadata.BusinessDataTypeList; import com.hundsun.ares.studio.jres.model.metadata.DictionaryItem; import com.hundsun.ares.studio.jres.model.metadata.DictionaryType; import com.hundsun.ares.studio.jres.model.metadata.MetadataPackage; import com.hundsun.ares.studio.jres.model.metadata.StandardDataTypeList; import com.hundsun.ares.studio.jres.model.metadata.StandardField; import com.hundsun.ares.studio.jres.script.util.IScriptStringUtil; import com.hundsun.ares.studio.model.reference.ReferenceInfo; import com.hundsun.ares.studio.reference.ReferenceManager; import com.hundsun.ares.studio.ui.editor.extend.ExtensibleModelUtils; import com.hundsun.ares.studio.ui.editor.extend.IExtensibleModelEditingSupport; import com.hundsun.ares.studio.ui.editor.extend.IExtensibleModelPropertyDescriptor; import com.hundsun.ares.studio.ui.editor.extend.IMapExtensibleModelPropertyDescriptor; /** * @author yanwj06282 * */ public class GenDbExportServiceUtils { private static final String MARK = "���"; private static final String PRIMARYKEY = "�Ƿ�����"; private final static String[] titile = new String[] { "ģ��Ӣ����","ģ��������", "�����", "���ݱ���", "��������", "����", "˵��"}; private final static String[] moduleTitle = new String[]{"ģ����","��ռ�" ,"������","�����ֶ�","��������","������ʼ����"}; private static List<String> tableExtendsTitle = new ArrayList<String>(); private static List<String> sequenceExtendsTitle = new ArrayList<String>(); private static Map<String , String> tableType = new HashMap<String, String>(); private static Map<String, Integer> bizTypeHy = new HashMap<String, Integer>(); private static Map<String, Integer> stdTypeHy = new HashMap<String, Integer>(); static { //FIXME �����±�д���ˣ��������Ҫ���ӣ���д������� tableExtendsTitle.add("�Ƿ��Զ�������"); tableExtendsTitle.add("������ֶ�"); tableExtendsTitle.add("��������"); tableExtendsTitle.add("������ʼ����"); tableExtendsTitle.add("������ʷ��"); tableExtendsTitle.add("���������"); tableExtendsTitle.add("���������"); tableExtendsTitle.add("�����"); tableExtendsTitle.add("�汾��"); tableExtendsTitle.add("�������ݿ�"); tableExtendsTitle.add("������"); sequenceExtendsTitle.add("�����"); sequenceExtendsTitle.add("�汾��"); tableType.put("COMMON", "U"); tableType.put("TEMP_NO_VALUE", "T"); tableType.put("TEMP_WITH_VALUE", "M"); } public static final String EXPORT_TARGET_DB_DIR = "export_target_db_dir"; private static Map<String,String> packageMap = null; private static HSSFCellStyle style; private static HSSFFont linkFont; private static HSSFFont titleFont; private static HSSFCellStyle labelStyle; private static HSSFCellStyle titleStyle; private static HSSFCellStyle textStyle; private static HSSFCellStyle multTextStyle; /** * ���������Ҫ���ڼ�¼�����ӵĶ�λ */ private static Map<String, String> posMap = new HashMap<String, String>(); private final static String MENU_SHEET = "���ݱ�Ŀ¼"; private final static String MODULE_SHEET = "ģ����Ϣ"; private static String BIZ_TYPE = "ҵ����������"; private static String STD_TYPE = "��׼��������"; private final static String BIZ_TYPE_NAME = "��׼����"; /** * ��ʼ�� */ private final static int startRowNum = 1; /** * ��ʼ�� */ private final static int startCellNum = 1; // �������Ķ���ת��Ϊ private static ICommonModel getCommonModel(Object info) { ICommonModel commonModel = null; if (info == null) { commonModel = null; } else if (info instanceof ICommonModel) { commonModel = (ICommonModel)info; } else if (info instanceof IAdaptable) { IAdaptable adapter = (IAdaptable)info; commonModel = (ICommonModel) adapter.getAdapter(ICommonModel.class); } else { IAdapterManager manager = Platform.getAdapterManager(); commonModel = (ICommonModel)manager.getAdapter(info, ICommonModel.class); } return commonModel; } /** * �������ݿ��ĵ� * * @param dbMap * ����Ҫ��������Դ * @param fileName * Ŀ���ļ��������ܴ�.xls��׺ * @param split * �Ƿ�ģ���з��ĵ���������ÿ���ĵ�����������ΪfileName_<ģ����>.xls * @return ����excel�ļ����б� */ public static List<String> export(Map<String, List<IARESResource>> dbMap, String fileName,boolean defvCol , boolean split,IProgressMonitor monitor) { List<String> files = new ArrayList<String>(); int total = 0; for(List<IARESResource> reses : dbMap.values()){ total += reses.size(); } monitor.beginTask("�������ݿ��ĵ�", total); FileOutputStream fos = null; packageMap = new HashMap<String, String>(); Map<String,Map<String, List<IARESResource>>> outputList = new HashMap<String,Map<String, List<IARESResource>>>(); if (split) { Map<String,Map<String, List<IARESResource>>> seqPackMap = new HashMap<String, Map<String,List<IARESResource>>>(); for (Entry<String, List<IARESResource>> entry : dbMap.entrySet()){ String key = entry.getKey(); String sk = StringUtils.substringBefore(key, "/"); if (seqPackMap.get(sk) == null) { Map<String, List<IARESResource>> tempMap = new HashMap<String, List<IARESResource>>(); tempMap.put(key, entry.getValue()); seqPackMap.put(sk, tempMap); }else { seqPackMap.get(sk).put(key, entry.getValue()); } } outputList.putAll(seqPackMap); } else { outputList.put("",dbMap); } for (Map.Entry<String,Map<String,List<IARESResource>>> tempMap : outputList.entrySet()) { init(); try { String realFileName = fileName; if (StringUtils.endsWith(realFileName, ".xls")) { realFileName = StringUtils.replace(realFileName, ".xls", ""); } if (split) { String mn = tempMap.getKey(); realFileName += "_" + mn+"("+getFileName(tempMap.getValue(), mn)+")"; } if (!StringUtils.endsWith(realFileName, ".xls")) { realFileName += ".xls"; } files.add(realFileName); fos = new FileOutputStream(realFileName); HSSFWorkbook wb = new HSSFWorkbook(); /** * * �ȴ����������ͣ�����ҵ���������ͣ���׼�������� */ createColumnTypeAres(wb, tempMap.getValue()); createDetailSheet(wb, tempMap.getValue() ,defvCol ,monitor ); createMenuSheet(wb, tempMap.getValue()); createModuleSheet(wb, tempMap.getValue()); // ��ΪҪ֪�������ӵĵ�ַ������Ŀ¼ҳ����󴴽��ģ������Ŀ¼ҳ���·ŵ���һ�� wb.setSheetOrder(MENU_SHEET, 0); wb.setSheetOrder(BIZ_TYPE, wb.getSheetIndex(MODULE_SHEET)); wb.setSheetOrder(STD_TYPE, wb.getSheetIndex(MODULE_SHEET)); wb.write(fos); fos.flush(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e.getMessage(),e); } finally { try { if (fos != null) fos.close(); } catch (Exception e) { e.printStackTrace(); } } } monitor.done(); return files; } private static String getFileName (Map<String, List<IARESResource>> tempMap ,String moduleName){ String cName = ""; IARESModuleRoot module = null; IARESModule mm = null; // �ֿ��ÿ��Map��ֻ��һ������ for (Map.Entry<String, List<IARESResource>> map : tempMap.entrySet()){ module = map.getValue().get(0).getRoot(); break; } try { IARESModule[] aresModule = module.getModules(); for (IARESModule am : aresModule){ if (StringUtils.equals(am.getElementName(), StringUtils.replace(moduleName, "/", "."))) { mm = am; break; } } } catch (ARESModelException e) { e.printStackTrace(); } IARESResource property = mm.getARESResource(IARESModule.MODULE_PROPERTY_FILE); if (property != null && property.exists()) { try { Object info = property.getInfo(); if (info != null) { ICommonModel model = getCommonModel(info); if (model != null) { Object obj = model.getValue(ICommonModel.CNAME); if (obj != null) { cName = obj.toString(); } } } } catch (ARESModelException e) { e.printStackTrace(); } } return cName; } private static IARESModule getModule(Map<String, List<IARESResource>> tempMap ,String moduleName){ IARESModuleRoot moduleRoot = null; IARESModule module = null; // �ֿ��ÿ��Map��ֻ��һ������ for (Map.Entry<String, List<IARESResource>> map : tempMap.entrySet()){ moduleRoot = map.getValue().get(0).getRoot(); break; } try { IARESModule[] aresModule = moduleRoot.getModules(); for (IARESModule am : aresModule){ if (StringUtils.equals(am.getElementName(), StringUtils.replace(moduleName, "/", "."))) { module = am; break; } } } catch (ARESModelException e) { e.printStackTrace(); } return module; } public static String getChineseFileName (String separator ,IARESModule module){ StringBuffer sb = new StringBuffer(); getModuleChineseName(module, sb ,separator); String[] ps = StringUtils.split(sb.toString(), separator); StringBuffer sbf = new StringBuffer(); for (int i = ps.length-1; i > -1 && ps.length > 0; i--) { if (StringUtils.isNotBlank(sbf.toString())) { sbf.append(separator); } sbf.append(ps[i]); } return sbf.toString(); } public static void getModuleChineseName (IARESModule module , StringBuffer sb , String separator){ if (module != null) { IARESResource property = module.getARESResource(IARESModule.MODULE_PROPERTY_FILE); if (property != null && property.exists()) { try { ModuleProperty info = property.getInfo(ModuleProperty.class); if (info != null) { Object obj = info.getValue(ICommonModel.CNAME); if (obj != null) { if (StringUtils.isNotBlank(sb.toString())) { sb.append(separator); } sb.append(obj.toString()); } } } catch (ARESModelException e) { e.printStackTrace(); } } getModuleChineseName(module.getParentModule(), sb ,separator); } } /** * ��ʼ����ʽ������ʼ�����������Ⱦ�쳣 */ private static void init() { style = null; linkFont = null; titleFont = null; labelStyle = null; titleStyle = null; textStyle = null; multTextStyle = null; } /** * ���������ӵ�Key * * @return */ private static String getPosKey(IARESResource res) { return res.getFullyQualifiedName() + "." + res.getType(); } /** * ���������ݵ���ϸҳ * * @param wb * @param dbMap * @throws Exception */ private static int rowNum = 1; private static void createDetailSheet(HSSFWorkbook wb, Map<String, List<IARESResource>> dbMap,boolean defvCol , IProgressMonitor monitor) throws Exception { List<String> packageNames = sortPackages(dbMap.keySet()); for (String packageName : packageNames) { IARESModule module = getModule(dbMap, packageName); String sheetName = getChineseFileName( "-" ,module); if (StringUtils.isBlank(sheetName)) { continue; } HSSFSheet sheet = null; sheetName = createSheetName(wb, sheetName); packageMap.put(packageName, sheetName); if (wb.getSheet(sheetName) != null) { String dupIndex = StringUtils.substringAfterLast(sheetName, "_"); if (StringUtils.isNotBlank(dupIndex)) { try { int ind = Integer.parseInt(dupIndex); ind++; sheetName = sheetName+"_"+ind; } catch (Exception e) { } }else { sheetName = sheetName+"_"+1; } } if (sheetName.length() > 31) { sheetName = StringUtils.substring(sheetName, 0, 31); } sheetName = createSheetName(wb, sheetName); sheet = wb.createSheet(sheetName); setDefaultCellStyle(wb, sheet); List<IARESResource> reses = dbMap.get(packageName); rowNum = 1; for (int i = 0; reses != null && i < reses.size(); i++) { IARESResource res = reses.get(i); monitor.worked(1); monitor.subTask(res.getElementName()); posMap.put(getPosKey(res), "#'" + sheetName + "'!A" + rowNum); if (StringUtils.equals(IDatabaseResType.Table, res.getType())) { createTableSheet(wb, sheet, res , defvCol); } else if (StringUtils.equals(IDatabaseResType.View, res.getType())) { createViewSheet(wb, sheet, res); }else if (StringUtils.equals(IDatabaseResType.Sequence, res.getType())) { createSeuence(wb, sheet, res); } } sheet.setColumnWidth( 0, 500); sheet.setColumnWidth( 1, 3000); sheet.setColumnWidth( 2, 6000); sheet.setColumnWidth( 3, 6000); sheet.setColumnWidth( 4, 6000); sheet.setColumnWidth( 5, 4000); sheet.setColumnWidth( 6, 8000); } } private static String createSheetName (HSSFWorkbook wb , String sheetName ){ HSSFSheet sheet = null; boolean dul = true; int i = 1; while (dul) { sheet = wb.getSheet(sheetName); if (sheet != null) { if (StringUtils.endsWith(sheetName, "_"+i)) { i = Integer.parseInt(StringUtils.substringAfter(sheetName, "_"))+1; int indLeg = ("_" + i).length(); if (sheetName.length() + indLeg > 31) { sheetName = StringUtils.substring(sheetName, 0, 31 - indLeg); }else { sheetName = StringUtils.substringBeforeLast(sheetName, "_"); } }else{ int indLeg = ("_" + i).length(); if (sheetName.length() + indLeg > 31) { sheetName = StringUtils.substring(sheetName, 0, 31 - indLeg); } } sheetName += "_" + i; }else { return sheetName; } } return StringUtils.EMPTY; } private static void createTableSheet(HSSFWorkbook wb, HSSFSheet sheet, IARESResource res ,boolean defvCol) throws Exception { if (res == null) { return; } TableResourceData table = res.getInfo(TableResourceData.class); if (table == null) { return; } String space = getExtendsData(table, OraclePackage.Literals.ORACLE_TABLE_PROPERTY, OraclePackage.Literals.ORACLE_TABLE_PROPERTY__SPACE); Map<String, Object> helperMap = new HashMap<String, Object>(); IExtensibleModelEditingSupport[] supports = ExtensibleModelUtils.getEndabledEditingSupports(res, DatabasePackage.Literals.TABLE_RESOURCE_DATA); for (IExtensibleModelEditingSupport support : supports) { for (IExtensibleModelPropertyDescriptor desc : support.getPropertyDescriptors(res, DatabasePackage.Literals.TABLE_RESOURCE_DATA)) { if (!desc.isDerived()) { if (desc instanceof IMapExtensibleModelPropertyDescriptor) { helperMap.put(desc.getDisplayName(), new ExtensibleData2MapAttributeHelper(support.getKey(), desc.getStructuralFeature(), ((IMapExtensibleModelPropertyDescriptor) desc).getKey())); } else { helperMap.put(desc.getDisplayName(), new ExtensibleData2AttributeHelper(support.getKey(), desc.getStructuralFeature())); } } else { helperMap.put(desc.getDisplayName(), desc.getLabelProvider().getText(space)); } } } Map<String, String> result = new HashMap<String,String>(); for (Entry<String, Object> entry : helperMap.entrySet()) { if (entry.getValue() instanceof IAttributeHelper) { result.put(entry.getKey(), ((IAttributeHelper)entry.getValue()).getValue(table)); }else { result.put(entry.getKey(), entry.getValue().toString()); } } HSSFRow row = sheet.createRow(rowNum); createCell(row, 1, "�����", getLabelStyle(wb)); sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum ,2, 4)); createCell(row, (short) 2, table.getObjectId(), getTextStyle(wb)); createCell(row, (short) 3, "", getTextStyle(wb)); createCell(row, (short) 4, "", getTextStyle(wb)); createCell(row, (short) 5, "�汾��", getLabelStyle(wb)); String version = ""; { //�ҳ����µİ汾�� version = getCurrHis(res, table)[0]; } createCell(row, (short) 6, version, getTextStyle(wb)); row = createRow(sheet); createCell(row, (short) 1, "����", getLabelStyle(wb)); createCell(row, (short) 2, table.getName(), getTextStyle(wb)); createCell(row, (short) 3, "������", getLabelStyle(wb)); createCell(row, (short) 4, getTableType(result.get("������")), getTextStyle(wb)); createCell(row, (short) 5, "�������ݿ�", getLabelStyle(wb)); createCell(row, (short) 6, space.toString(), getTextStyle(wb)); row = createRow(sheet); createCell(row, (short) 1, "������", getLabelStyle(wb)); createCell(row, (short) 2, table.getChineseName(), getTextStyle(wb)); createCell(row, (short) 3, tableExtendsTitle.get(0), getLabelStyle(wb)); String obj = getExtendsData(table, ChousePackage.Literals.TABLE_BASE_PROPERTY, ChousePackage.Literals.TABLE_BASE_PROPERTY__USER_SPLIT); createCell(row, (short) 4, BooleanUtils.toBoolean(obj)?"Y":"N", getTextStyle(wb)); createCell(row, (short) 5, "", getLabelStyle(wb)); createCell(row, (short) 6, "", getTextStyle(wb)); row = createRow(sheet); createCell(row, (short) 1, tableExtendsTitle.get(1), getLabelStyle(wb)); obj = getExtendsData(table, ChousePackage.Literals.TABLE_BASE_PROPERTY, ChousePackage.Literals.TABLE_BASE_PROPERTY__SPLIT_FIELD); createCell(row, (short) 2, obj.toString(), getTextStyle(wb)); createCell(row, (short) 3, tableExtendsTitle.get(2), getLabelStyle(wb)); obj = getExtendsData(table, ChousePackage.Literals.TABLE_BASE_PROPERTY, ChousePackage.Literals.TABLE_BASE_PROPERTY__SPLIT_NUM); createCell(row, (short) 4, obj.toString(), getTextStyle(wb)); createCell(row, (short) 5, tableExtendsTitle.get(3), getLabelStyle(wb)); obj = getExtendsData(table, ChousePackage.Literals.TABLE_BASE_PROPERTY, ChousePackage.Literals.TABLE_BASE_PROPERTY__START_DATA); createCell(row, (short) 6, obj.toString(), getTextStyle(wb)); row = createRow(sheet); createCell(row, (short) 1, tableExtendsTitle.get(4), getLabelStyle(wb)); obj = getExtendsData(table, ChousePackage.Literals.TABLE_BASE_PROPERTY, ChousePackage.Literals.TABLE_BASE_PROPERTY__HISTORY); createCell(row, (short) 2, BooleanUtils.toBoolean(obj)?"Y":"N",getTextStyle(wb)); createCell(row, (short) 3, tableExtendsTitle.get(5), getLabelStyle(wb)); obj = getExtendsData(table, ChousePackage.Literals.TABLE_BASE_PROPERTY, ChousePackage.Literals.TABLE_BASE_PROPERTY__IS_REDU); createCell(row, (short) 4, BooleanUtils.toBoolean(obj)?"Y":"N", getTextStyle(wb)); createCell(row, (short) 5, tableExtendsTitle.get(6), getLabelStyle(wb)); obj = getExtendsData(table, ChousePackage.Literals.TABLE_BASE_PROPERTY, ChousePackage.Literals.TABLE_BASE_PROPERTY__IS_CLEAR); createCell(row, (short) 6, BooleanUtils.toBoolean(obj)?"Y":"N", getTextStyle(wb)); int cellIndex = 0; for (Entry<String, String> entry : result.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); if (!tableExtendsTitle.contains(key)) { if (cellIndex % 6 == 0) { cellIndex = 0; row = createRow(sheet); } cellIndex++; createCell(row, (short) cellIndex, key, getLabelStyle(wb)); cellIndex++; createCell(row, (short) cellIndex, value, getTextStyle(wb)); } } if (cellIndex % 6 != 0) { int lastCell = (6 - cellIndex )/2; for (int i = 0; i < lastCell; i++) { cellIndex++; createCell(row, (short) cellIndex, "", getLabelStyle(wb)); cellIndex++; createCell(row, (short) cellIndex, "", getTextStyle(wb)); } } row = createRow(sheet); sheet.addMergedRegion(new CellRangeAddress(rowNum, ++rowNum ,2, 6)); sheet.addMergedRegion(new CellRangeAddress(rowNum-1, rowNum, 1, 1)); createCell(row, (short) 1, "˵��", getLabelStyle(wb)); createCell(row, (short) 2, table.getDescription(), getTextStyle(wb)); createCell(row, (short) 3, "", getTextStyle(wb)); createCell(row, (short) 4, "", getTextStyle(wb)); createCell(row, (short) 5, "", getTextStyle(wb)); createCell(row, (short) 6, "", getTextStyle(wb)); rowNum--; row = createRow(sheet); createCell(row, (short) 1, "", getLabelStyle(wb)); createCell(row, (short) 2, "", getTextStyle(wb)); createCell(row, (short) 3, "", getTextStyle(wb)); createCell(row, (short) 4, "", getTextStyle(wb)); createCell(row, (short) 5, "", getTextStyle(wb)); createCell(row, (short) 6, "", getTextStyle(wb)); String[] titles = new String[]{"�ֶ�", "�ֶ���","������","�ֶ�����","��ֵ","��ע"}; EStructuralFeature[] features = new EStructuralFeature[]{ DatabasePackage.Literals.TABLE_COLUMN__MARK, DatabasePackage.Literals.TABLE_COLUMN__FIELD_NAME, DatabasePackage.Literals.TABLE_COLUMN__CHINESE_NAME, DatabasePackage.Literals.TABLE_COLUMN__DATA_TYPE, DatabasePackage.Literals.TABLE_COLUMN__NULLABLE, DatabasePackage.Literals.TABLE_COLUMN__COMMENTS}; if (defvCol) { titles = new String[]{"�ֶ�", "�ֶ���","������","�ֶ�����","��ֵ","��ע" ,"Ĭ��ֵ"}; features = new EStructuralFeature[]{ DatabasePackage.Literals.TABLE_COLUMN__MARK, DatabasePackage.Literals.TABLE_COLUMN__FIELD_NAME, DatabasePackage.Literals.TABLE_COLUMN__CHINESE_NAME, DatabasePackage.Literals.TABLE_COLUMN__DATA_TYPE, DatabasePackage.Literals.TABLE_COLUMN__NULLABLE, DatabasePackage.Literals.TABLE_COLUMN__COMMENTS, DatabasePackage.Literals.TABLE_COLUMN__DEFAULT_VALUE}; } int titleLength = titles.length; List< List<String> > table1 = POIUtils.exportExcelStringTable(table, DatabasePackage.Literals.TABLE_RESOURCE_DATA__COLUMNS,DatabasePackage.Literals.TABLE_COLUMN, titles, features, true, new String[]{}, new String[]{}, res, null ); for (int i = 0; i < table1.size(); i++) { List<String> datas = table1.get(i); row = createRow(sheet); String fieldName = datas.get(1); String chineseName = datas.get(2); String type = datas.get(3); String desc = datas.get(5); TableColumn tableColmn = null; for (TableColumn tc : table.getColumns()) { if (StringUtils.equals(tc.getFieldName(), fieldName)) { tableColmn = tc; break; } } if (tableColmn != null) { if (tableColmn.getColumnType() == ColumnType.STD_FIELD) { StandardField stdField = getStdField(res.getARESProject(),fieldName); if (stdField != null) { if(StringUtils.isBlank(chineseName)) chineseName = stdField.getChineseName(); if(StringUtils.isBlank(type)) type = stdField.getDataType(); StringBuffer text = new StringBuffer(); String dt = stdField.getDictionaryType(); ReferenceInfo dictInfo = ReferenceManager.getInstance().getFirstReferenceInfo(res.getARESProject(), IMetadataRefType.Dict, dt, false); if (dictInfo != null) { if (dictInfo.getObject() instanceof DictionaryType) { DictionaryType dictType = (DictionaryType) dictInfo.getObject(); for(DictionaryItem item : ((DictionaryType) dictType).getItems()){ String value = StringUtils.defaultString(item.getValue()); String cn = StringUtils.defaultString(item.getChineseName()); text.append(value); text.append(":"); text.append(cn); text.append(" "); } } } if (StringUtils.isBlank(desc)) { desc = StringUtils.defaultIfBlank(text.toString(), stdField.getDescription()); } } }else if (tableColmn.getColumnType() == ColumnType.NON_STD_FIELD) { if (StringUtils.isBlank(desc)) { desc = tableColmn.getDescription(); } } } String nullAble = datas.get(4); for (int j = 0; j < datas.size(); j++) { if (i == 0) { if (j < titleLength) { createCell(row, j+1, datas.get(j), getLabelStyle(wb)); } if (j >= titleLength) { createCell(row, j+1, datas.get(j), getLabelStyle(wb)); } }else { if (j == 0) { createCell(row, (short) 1, datas.get(j), getLabelStyle(wb)); }else if (j == 1){ createCell(row, (short) 2, fieldName, getTextStyle(wb)); }else if (j == 2){ createCell(row, (short) 3, chineseName, getTextStyle(wb)); }else if (j == 3){ HSSFCell cell = row.createCell(4); Integer index = bizTypeHy.get(type); if (index != null) { String cv = "HYPERLINK(\"#'" + BIZ_TYPE + "'!A" + (index + startRowNum + 1) + "\",\"" + type + "\")"; cell.setCellFormula(cv); cell.setCellStyle(getLinkStyle(wb)); }else { cell.setCellValue(type); cell.setCellStyle(getTextStyle(wb)); } }else if (j == 4){ createCell(row, (short) 5, BooleanUtils.toBoolean(nullAble)?"Y":"N", getTextStyle(wb)); }else if (j == 5){ createCell(row, (short) 6, desc, getMultTextStyle(wb)); }else if (j == 6 && defvCol) { createCell(row, (short) 7, datas.size()>6?datas.get(j):StringUtils.EMPTY, getTextStyle(wb)); }else { createCell(row, j+1, datas.get(j), getTextStyle(wb)); } } } } List< List<String> > tableIndex = exportExcelStringTable(table, DatabasePackage.Literals.TABLE_RESOURCE_DATA__INDEXES,DatabasePackage.Literals.TABLE_INDEX, new String[]{"����", "��������","Ψһ","�۴�","�����ֶ�"}, new EStructuralFeature[]{DatabasePackage.Literals.TABLE_INDEX__MARK,DatabasePackage.Literals.TABLE_INDEX__NAME, DatabasePackage.Literals.TABLE_INDEX__UNIQUE,DatabasePackage.Literals.TABLE_INDEX__CLUSTER,DatabasePackage.Literals.TABLE_INDEX__COLUMNS}, true, new String[]{}, new String[]{}, res, null ); for (int i = 0; i < tableIndex.size(); i++) { List<String> datas = tableIndex.get(i); row = createRow(sheet); for (int j = 0; j < datas.size(); j++) { if (i == 0) { if (j < 6) { createCell(row, j+1, datas.get(j), getLabelStyle(wb)); } if (j >= 6) { createCell(row, j+1, datas.get(j), getLabelStyle(wb)); } }else { if (j == 0) { createCell(row, j+1, datas.get(j), getLabelStyle(wb)); }else { String v = datas.get(j); if (StringUtils.equals("true", v)) { v = "Y"; }else if (StringUtils.equals("false", v)) { v = "N"; } if (j < 6) { createCell(row, j+1, v, getTextStyle(wb)); } if (j >= 6 ) { createCell(row, j+1, v, getTextStyle(wb)); } } } } } List< List<String> > tableKey = exportExcelStringTable(table, DatabasePackage.Literals.TABLE_RESOURCE_DATA__KEYS,DatabasePackage.Literals.TABLE_KEY, new String[]{"��Լ��","����","����","�ֶ��б�","������ձ�","���������"}, new EStructuralFeature[]{DatabasePackage.Literals.TABLE_KEY__MARK,DatabasePackage.Literals.TABLE_KEY__NAME, DatabasePackage.Literals.TABLE_KEY__TYPE,DatabasePackage.Literals.TABLE_KEY__COLUMNS,DatabasePackage.Literals.FOREIGN_KEY__TABLE_NAME,DatabasePackage.Literals.FOREIGN_KEY__FIELD_NAME}, true, new String[]{}, new String[]{}, res, null ); for (int i = 0; i < tableKey.size(); i++) { List<String> datas = tableKey.get(i); row = createRow(sheet); for (int j = 0; j < datas.size(); j++) { if (i == 0) { if (j < 6) { createCell(row, j+1, datas.get(j), getLabelStyle(wb)); } if (j >= 6) { createCell(row, j+1, datas.get(j), getLabelStyle(wb)); } }else { String v = datas.get(j); if(j==0){ createCell(row, j+1, v, getLabelStyle(wb)); continue; } if (j < 6) { createCell(row, j+1, v, getTextStyle(wb)); continue; } if (j >= 6) { createCell(row, j+1, v, getTextStyle(wb)); } } } } row = createRow(sheet); if (table.getHistories().size() > 0) { row.setHeight((short) (300+300*table.getHistories().size())); } createCell(row, (short) 1, "�޸ļ�¼", getLabelStyle(wb)); sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum ,2, 6)); createCell(row, (short) 2, StringUtils.trim(buildReviceHistory(table.getHistories())), getMultTextStyle(wb)); createCell(row, (short) 3, "", getMultTextStyle(wb)); createCell(row, (short) 4, "", getMultTextStyle(wb)); createCell(row, (short) 5, "", getMultTextStyle(wb)); createCell(row, (short) 6, "", getMultTextStyle(wb)); // ������ rowNum += 3; } private static String[] getCurrHis(IARESResource aresResource ,DatabaseResourceData obj){ String[] strs = new String[]{"",""}; List<RevisionHistory> hises = obj.getHistories(); List<RevisionHistory> tempHis = (List<RevisionHistory>) EcoreUtil.copyAll(hises); Collections.sort(tempHis, new IRevHistoryVersionCompartor()); if (hises.size() > 0) { strs[0] = tempHis.get(0).getVersion(); strs[1] = tempHis.get(0).getModifiedDate(); }else { //2013��5��24��14:43:41 ���û���޸ļ�¼��Ϣ����ȡ������ϵͳ��ǰ�汾��+1 IARESModule topModule = null; if (aresResource == null) { topModule = null; } else { String rootType = aresResource.getRoot().getType(); if (ARESElementUtil.isDatabaseRoot(rootType)) { topModule = ARESElementUtil.getTopModule(aresResource); } else if (ARESElementUtil.isMetadataRoot(rootType)) { // topModuleΪnull��Ч�����Dz�����ģ�� topModule = null; } else { topModule = aresResource.getModule(); } } // ��ǰ�Ѿ��������Դ�е����汾 RevisionHistory his = RevisionHistoryUtil.getMaxVersionHisInfo(topModule); if (his != null) { String currentVersion = his.getVersion(); // ��Ŀ���� String projectVersion = RevisionHistoryUtil.getProjectPropertyVersion(aresResource.getARESProject()); // ������3�����ֵ String versionStr = RevisionHistoryUtil.max(Arrays.asList(currentVersion, projectVersion)); // ��һ���Ҳ����κμ�¼��ʱ�� if (StringUtils.equals(currentVersion, versionStr)) { strs[1] = his.getModifiedDate(); } if (StringUtils.isEmpty(versionStr)) { versionStr = "1.0.0.0"; } strs[0] = versionStr; } } return strs; } private static void createViewSheet(HSSFWorkbook wb, HSSFSheet sheet, IARESResource res) throws Exception { if (res == null) { return; } ViewResourceData view = res.getInfo(ViewResourceData.class); if (view == null) { return; } Map<String, Object> helperMap = new HashMap<String, Object>(); IExtensibleModelEditingSupport[] supports = ExtensibleModelUtils.getEndabledEditingSupports(res, DatabasePackage.Literals.VIEW_RESOURCE_DATA); for (IExtensibleModelEditingSupport support : supports) { for (IExtensibleModelPropertyDescriptor desc : support.getPropertyDescriptors(res, DatabasePackage.Literals.VIEW_RESOURCE_DATA)) { if (desc instanceof IMapExtensibleModelPropertyDescriptor) { helperMap.put(desc.getDisplayName(), new ExtensibleData2MapAttributeHelper(support.getKey(), desc.getStructuralFeature(), ((IMapExtensibleModelPropertyDescriptor) desc).getKey())); } else { helperMap.put(desc.getDisplayName(), new ExtensibleData2AttributeHelper(support.getKey(), desc.getStructuralFeature())); } } } Map<String, String> result = new HashMap<String,String>(); for (Entry<String, Object> entry : helperMap.entrySet()) { if (entry.getValue() instanceof IAttributeHelper) { result.put(entry.getKey(), ((IAttributeHelper)entry.getValue()).getValue(view)); }else { result.put(entry.getKey(), entry.getValue().toString()); } } HSSFRow row = sheet.createRow(rowNum); createCell(row, 1, "�����", getLabelStyle(wb)); sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum ,2, 4)); createCell(row, (short) 2, view.getObjectId(), getTextStyle(wb)); createCell(row, (short) 3, "", getTextStyle(wb)); createCell(row, (short) 4, "", getTextStyle(wb)); createCell(row, (short) 5, "�汾��", getLabelStyle(wb)); String version = StringUtils.EMPTY; { version = getCurrHis(res, view)[0]; } createCell(row, (short) 6, version, getTextStyle(wb)); row = createRow(sheet); createCell(row, (short) 1, "����", getLabelStyle(wb)); createCell(row, (short) 2, view.getName(), getTextStyle(wb)); createCell(row, (short) 3, "������", getLabelStyle(wb)); createCell(row, (short) 4, "V", getTextStyle(wb)); createCell(row, (short) 5, "�������ݿ�", getLabelStyle(wb)); createCell(row, (short) 6, result.get("��ռ�"), getTextStyle(wb)); row = createRow(sheet); createCell(row, (short) 1, "������", getLabelStyle(wb)); createCell(row, (short) 2, view.getChineseName(), getTextStyle(wb)); createCell(row, (short) 3, "��ʼ����ձ�", getLabelStyle(wb)); createCell(row, (short) 4, "", getTextStyle(wb)); createCell(row, (short) 5, "�����ô�", getLabelStyle(wb)); createCell(row, (short) 6, "", getTextStyle(wb)); row = createRow(sheet); createCell(row, (short) 1, "�Ƿ񻺴�", getLabelStyle(wb)); createCell(row, (short) 2, "", getTextStyle(wb)); createCell(row, (short) 3, "�Ƿ����ڲ�ѯ", getLabelStyle(wb)); createCell(row, (short) 4, "", getTextStyle(wb)); createCell(row, (short) 5, "������ʷ��", getLabelStyle(wb)); createCell(row, (short) 6, BooleanUtils.toBoolean(view.isIsHistory())?"Y":"N", getTextStyle(wb)); int cellIndex = 0; for (Entry<String, String> entry : result.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); if (!sequenceExtendsTitle.contains(key)) { if (cellIndex % 6 == 0) { cellIndex = 0; row = createRow(sheet); } cellIndex++; createCell(row, (short) cellIndex, key, getLabelStyle(wb)); cellIndex++; createCell(row, (short) cellIndex, value, getTextStyle(wb)); } } if (cellIndex % 6 != 0) { int lastCell = (6 - cellIndex )/2; for (int i = 0; i < lastCell; i++) { cellIndex++; createCell(row, (short) cellIndex, "", getLabelStyle(wb)); cellIndex++; createCell(row, (short) cellIndex, "", getTextStyle(wb)); } } row = createRow(sheet); sheet.addMergedRegion(new CellRangeAddress(rowNum, ++rowNum ,2, 6)); sheet.addMergedRegion(new CellRangeAddress(rowNum-1, rowNum, 1, 1)); createCell(row, (short) 1, "˵��", getLabelStyle(wb)); createCell(row, (short) 2, view.getDescription(), getTextStyle(wb)); createCell(row, (short) 3, "", getTextStyle(wb)); createCell(row, (short) 4, "", getTextStyle(wb)); createCell(row, (short) 5, "", getTextStyle(wb)); createCell(row, (short) 6, "", getTextStyle(wb)); rowNum--; row = createRow(sheet); createCell(row, (short) 1, "", getLabelStyle(wb)); createCell(row, (short) 2, "", getTextStyle(wb)); createCell(row, (short) 3, "", getTextStyle(wb)); createCell(row, (short) 4, "", getTextStyle(wb)); createCell(row, (short) 5, "", getTextStyle(wb)); createCell(row, (short) 6, "", getTextStyle(wb)); row = createRow(sheet); sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum + 2,2, 6)); sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum + 2, 1, 1)); createCell(row, (short) 1, "��ͼ����", getLabelStyle(wb)); createCell(row, (short) 2, view.getSql(), getTextStyle(wb)); createCell(row, (short) 3, "", getTextStyle(wb)); createCell(row, (short) 4, "", getTextStyle(wb)); createCell(row, (short) 5, "", getTextStyle(wb)); createCell(row, (short) 6, "", getTextStyle(wb)); row = createRow(sheet); createCell(row, (short) 1, "", getLabelStyle(wb)); createCell(row, (short) 2, "", getTextStyle(wb)); createCell(row, (short) 3, "", getTextStyle(wb)); createCell(row, (short) 4, "", getTextStyle(wb)); createCell(row, (short) 5, "", getTextStyle(wb)); createCell(row, (short) 6, "", getTextStyle(wb)); row = createRow(sheet); createCell(row, (short) 1, "", getLabelStyle(wb)); createCell(row, (short) 2, "", getTextStyle(wb)); createCell(row, (short) 3, "", getTextStyle(wb)); createCell(row, (short) 4, "", getTextStyle(wb)); createCell(row, (short) 5, "", getTextStyle(wb)); createCell(row, (short) 6, "", getTextStyle(wb)); row = createRow(sheet); if (view.getHistories().size() > 0) { row.setHeight((short) (300+300*view.getHistories().size())); } createCell(row, (short) 1, "�޸ļ�¼", getLabelStyle(wb)); sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum ,2, 6)); createCell(row, (short) 2, StringUtils.trim(buildReviceHistory(view.getHistories())), getMultTextStyle(wb)); createCell(row, (short) 3, "", getMultTextStyle(wb)); createCell(row, (short) 4, "", getMultTextStyle(wb)); createCell(row, (short) 5, "", getMultTextStyle(wb)); createCell(row, (short) 6, "", getMultTextStyle(wb)); // ������ rowNum += 3; } /** * �������� * * @param wb * @param sheet * @param res * @throws Exception */ private static void createSeuence (HSSFWorkbook wb, HSSFSheet sheet, IARESResource res) throws Exception{ if (res == null) { return; } SequenceResourceDataImpl sequence = res.getInfo(SequenceResourceDataImpl.class); if (sequence == null) { return; } Map<String, Object> helperMap = new HashMap<String, Object>(); IExtensibleModelEditingSupport[] supports = ExtensibleModelUtils.getEndabledEditingSupports(res, OraclePackage.Literals.SEQUENCE_RESOURCE_DATA); for (IExtensibleModelEditingSupport support : supports) { for (IExtensibleModelPropertyDescriptor desc : support.getPropertyDescriptors(res, OraclePackage.Literals.SEQUENCE_RESOURCE_DATA)) { if (desc instanceof IMapExtensibleModelPropertyDescriptor) { helperMap.put(desc.getDisplayName(), new ExtensibleData2MapAttributeHelper(support.getKey(), desc.getStructuralFeature(), ((IMapExtensibleModelPropertyDescriptor) desc).getKey())); } else { helperMap.put(desc.getDisplayName(), new ExtensibleData2AttributeHelper(support.getKey(), desc.getStructuralFeature())); } } } Map<String, String> result = new HashMap<String,String>(); for (Entry<String, Object> entry : helperMap.entrySet()) { if (entry.getValue() instanceof IAttributeHelper) { result.put(entry.getKey(), ((IAttributeHelper)entry.getValue()).getValue(sequence)); }else { result.put(entry.getKey(), entry.getValue().toString()); } } HSSFRow row = sheet.createRow(rowNum); createCell(row, 1, "�����", getLabelStyle(wb)); sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum ,2, 4)); createCell(row, (short) 2, sequence.getObjectId(), getTextStyle(wb)); createCell(row, (short) 3, "", getTextStyle(wb)); createCell(row, (short) 4, "", getTextStyle(wb)); createCell(row, (short) 5, "�汾��", getLabelStyle(wb)); String version = StringUtils.EMPTY; { version = getCurrHis(res, sequence)[0]; } createCell(row, (short) 6, version, getTextStyle(wb)); row = createRow(sheet); createCell(row, (short) 1, "����", getLabelStyle(wb)); createCell(row, (short) 2, sequence.getName(), getTextStyle(wb)); createCell(row, (short) 3, "������", getLabelStyle(wb)); createCell(row, (short) 4, "S", getTextStyle(wb)); createCell(row, (short) 5, "����", getLabelStyle(wb)); createCell(row, (short) 6, sequence.getIncrement(), getTextStyle(wb)); row = createRow(sheet); createCell(row, (short) 1, "������", getLabelStyle(wb)); createCell(row, (short) 2, sequence.getChineseName(), getTextStyle(wb)); createCell(row, (short) 3, "��Сֵ", getLabelStyle(wb)); createCell(row, (short) 4, sequence.getMinValue(), getTextStyle(wb)); createCell(row, (short) 5, "���ֵ", getLabelStyle(wb)); createCell(row, (short) 6, sequence.getMaxValue(), getTextStyle(wb)); row = createRow(sheet); createCell(row, (short) 1, "��ʼֵ", getLabelStyle(wb)); createCell(row, (short) 2, sequence.getStart(), getTextStyle(wb)); createCell(row, (short) 3, "�Ƿ�ѭ��", getLabelStyle(wb)); createCell(row, (short) 4, sequence.isCycle() ? "Y" :"N", getTextStyle(wb)); createCell(row, (short) 5, "�Ƿ񻺴�", getLabelStyle(wb)); createCell(row, (short) 6, sequence.isUseCache() ? "Y" :"N", getTextStyle(wb)); row = createRow(sheet); createCell(row, (short) 1, "���ݿ��", getLabelStyle(wb)); createCell(row, (short) 2, sequence.getTableName(), getTextStyle(wb)); createCell(row, (short) 3, "�����С", getLabelStyle(wb)); createCell(row, (short) 4, sequence.getCache(), getTextStyle(wb)); createCell(row, (short) 5, "������ʷ��", getLabelStyle(wb)); createCell(row, (short) 6, BooleanUtils.toBoolean(sequence.isIsHistory())?"Y":"N", getTextStyle(wb)); int cellIndex = 0; for (Entry<String, String> entry : result.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); if (!sequenceExtendsTitle.contains(key)) { if (cellIndex % 6 == 0) { cellIndex = 0; row = createRow(sheet); } cellIndex++; createCell(row, (short) cellIndex, key, getLabelStyle(wb)); cellIndex++; createCell(row, (short) cellIndex, value, getTextStyle(wb)); } } if (cellIndex % 6 != 0) { int lastCell = (6 - cellIndex )/2; for (int i = 0; i < lastCell; i++) { cellIndex++; createCell(row, (short) cellIndex, "", getLabelStyle(wb)); cellIndex++; createCell(row, (short) cellIndex, "", getTextStyle(wb)); } } row = createRow(sheet); sheet.addMergedRegion(new CellRangeAddress(rowNum, ++rowNum ,2, 6)); sheet.addMergedRegion(new CellRangeAddress(rowNum-1, rowNum, 1, 1)); createCell(row, (short) 1, "˵��", getLabelStyle(wb)); createCell(row, (short) 2, sequence.getDescription(), getTextStyle(wb)); createCell(row, (short) 3, "", getTextStyle(wb)); createCell(row, (short) 4, "", getTextStyle(wb)); createCell(row, (short) 5, "", getTextStyle(wb)); createCell(row, (short) 6, "", getTextStyle(wb)); rowNum--; row = createRow(sheet); createCell(row, (short) 1, "", getLabelStyle(wb)); createCell(row, (short) 2, "", getTextStyle(wb)); createCell(row, (short) 3, "", getTextStyle(wb)); createCell(row, (short) 4, "", getTextStyle(wb)); createCell(row, (short) 5, "", getTextStyle(wb)); createCell(row, (short) 6, "", getTextStyle(wb)); row = createRow(sheet); if (sequence.getHistories().size() > 0) { row.setHeight((short) (300+300*sequence.getHistories().size())); } createCell(row, (short) 1, "�޸ļ�¼", getLabelStyle(wb)); sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum ,2, 6)); createCell(row, (short) 2, StringUtils.trim(buildReviceHistory(sequence.getHistories())), getMultTextStyle(wb)); createCell(row, (short) 3, "", getMultTextStyle(wb)); createCell(row, (short) 4, "", getMultTextStyle(wb)); createCell(row, (short) 5, "", getMultTextStyle(wb)); createCell(row, (short) 6, "", getMultTextStyle(wb)); rowNum += 3; } private static void setDefaultCellStyle(HSSFWorkbook wb, HSSFSheet sheet) { HSSFCellStyle style = wb.createCellStyle(); style.setFillForegroundColor(HSSFColor.LIGHT_TURQUOISE.index); style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); for (int i = 0; i < 15; i++) { sheet.setDefaultColumnStyle((short) i, style); } } /** * ��ȡ���ݿ����޶���¼ * * @param table * @return */ private static String buildReviceHistory(List<RevisionHistory> histories) { List<List<String>> list = new ArrayList<List<String>>(); { if (histories.size() > 0) { List<String> content = new ArrayList<String>(); content.add("�޸İ汾"+" "); content.add("�޸�����"+" "); content.add("�޸ĵ�"+" "); content.add("������"+" "); content.add("������"+" "); content.add("�޸�����"+" "); content.add("�޸�ԭ��"+" "); content.add("��ע"+" "); list.add(content); } } for (RevisionHistory his : histories) { String version = his.getVersion(); List<String> content = new ArrayList<String>(); content.add("V" + version+" "); String modifyDate = his.getModifiedDate(); String newDate = StringUtils.substring(modifyDate, 0, 10).replaceAll("-", ""); content.add(newDate+" "); content.add(his.getOrderNumber()+" "); content.add(his.getModifiedBy()+" "); content.add(his.getCharger()+" "); content.add(his.getModified()+" "); content.add(his.getModifiedReason()+" "); content.add(StringUtils.defaultString(his.getComment())+" "); list.add(content); } return IScriptStringUtil.instance.genStringTable(list); } /** * ��ȡ�����ֶ� * * @param element * @return */ private static String getIndexColumnText(TableIndex index) { EList<TableIndexColumn> columns = index.getColumns(); StringBuffer buffer = new StringBuffer(); for (int i = 0, length = columns.size(); i < length; i++) { buffer.append(columns.get(i).getColumnName()); if (i < length - 1) buffer.append(","); } return buffer.toString(); } /** * ��ȡ��׼�ֶ� * * @param res * @param stdFieldName * @return */ private static StandardField getStdField(IARESProject project, String stdFieldName) { if (project != null) { ReferenceManager rm = ReferenceManager.getInstance(); ReferenceInfo info = rm.getFirstReferenceInfo(project, IMetadataRefType.StdField, stdFieldName, false); if (info != null) { Object obj = info.getObject(); if (obj instanceof StandardField) { return (StandardField)obj; } } } return null; } private static HSSFRow createRow(HSSFSheet sheet) { rowNum++; return sheet.createRow(rowNum); } private static void createCell(HSSFRow row, int index, String value, HSSFCellStyle style) { HSSFCell cell = row.createCell(index); cell.setCellValue(new HSSFRichTextString(value)); if (style != null) { cell.setCellStyle(style); } } /** * �����˵�ҳ * * @param wb * @param dbMap * @return * @throws Exception */ private static HSSFSheet createMenuSheet(HSSFWorkbook wb, Map<String, List<IARESResource>> dbMap) throws Exception { HSSFSheet sheet = wb.createSheet("���ݱ�Ŀ¼"); HSSFRow row = sheet.createRow((short) 1); // ������ for (int i = 0; i < titile.length; i++) { HSSFCell cell = row.createCell(i+1); cell.setCellValue(new HSSFRichTextString(titile[i])); cell.setCellStyle(getTitleStyle(wb)); } // ������� int rowNum = 2; int startPackage = 2; List<String> packageNames = sortPackages(dbMap.keySet()); for (String packageName : packageNames) { List<IARESResource> dbs = dbMap.get(packageName); Set<IARESResource> resDupSet = new HashSet<IARESResource>(); for (int i = 0; dbs != null && i < dbs.size(); i++) { IARESResource resource = dbs.get(i); if (resDupSet.contains(resource)) { continue; } DatabaseResourceData table = resource .getInfo(DatabaseResourceData.class); if (table == null) { continue; } resDupSet.add(resource); row = sheet.createRow((short) rowNum); String obj = table.getObjectId(); createCell(row, 3, obj, null); HSSFCell cell = row.createCell(4); String value = posMap.get(getPosKey(resource)); cell.setCellFormula("HYPERLINK(\"" + value + "\",\"" + resource.getName() + "\")"); cell.setCellStyle(getLinkStyle(wb)); createCell(row, (short) 5, table.getChineseName(), null); createCell(row, (short) 6, resource.getType(), null); createCell(row, (short) 7, table.getDescription(), null); rowNum++; } createCell(sheet.getRow(startPackage), (short) 1, packageName, null); sheet.addMergedRegion(new CellRangeAddress(startPackage, rowNum - 1, 1, 1)); createCell(sheet.getRow(startPackage), (short) 2, packageMap.get(packageName), null); sheet.addMergedRegion(new CellRangeAddress(startPackage, rowNum - 1, 2, 2)); startPackage = rowNum; } sheet.setColumnWidth( 0, 500); sheet.setColumnWidth( 1, 6000); sheet.setColumnWidth( 2, 8000); sheet.setColumnWidth( 3, 6000); sheet.setColumnWidth( 4, 6000); sheet.setColumnWidth( 5, 8000); sheet.setColumnWidth( 6, 3000); sheet.setColumnWidth( 7, 10000); return sheet; } private static void createModuleSheet(HSSFWorkbook wb, Map<String, List<IARESResource>> dbMap) throws Exception{ List<String> packageNames = sortPackages(dbMap.keySet()); rowNum = -1; HSSFSheet sheet = wb.createSheet(MODULE_SHEET); setDefaultCellStyle(wb, sheet); HSSFRow row = createRow(sheet); for(int i =0 ;i< moduleTitle.length ;i++){ createCell(row, (short) i, moduleTitle[i], getTitleStyle(wb)); } for (String moduleName : packageNames) { IARESModule module = getModule(dbMap, moduleName); String packageChineseName = "/���ݿ�/" + getChineseFileName("/" , module); String moduleSpace = ""; String tableType = "һ���"; String splitField = ""; String splitNum = ""; String splitData = ""; if (module != null) { IARESResource moduleRes = module.getARESResource("module.xml"); try { ModuleProperty modulePro = moduleRes.getInfo(ModuleProperty.class); // ModuleExtensibleModel mem = (ModuleExtensibleModel) modulePro.getMap().get("ModuleExtensibleModel"); Object obj = modulePro.getMap().get("ModuleExtensibleModel"); if (obj != null) { if(obj instanceof ModuleExtensibleModel){ ModuleExtensibleModel mem = (ModuleExtensibleModel)obj; OracleTableProperty moduleOP = (OracleTableProperty) mem.getData2().get(IOracleConstant.TABLE_DATA2_KEY); if (moduleOP != null) { moduleSpace = moduleOP.getSpace(); table_type type = moduleOP.getTabletype(); tableType = getTableTypeStr(type); } TableBaseProperty chouse = (TableBaseProperty) mem.getData2().get("chouse"); if (chouse != null) { splitField = chouse.getSplitField(); splitNum = chouse.getSplitNum(); splitData = chouse.getStartData(); } }else{ throw new Exception(String.format("��ȡģ��%s����չ��Ϣʱ�����쳣", module.getElementName())); } } } catch (ARESModelException e) { e.printStackTrace(); } } row = createRow(sheet); createCell(row, (short) 0, packageChineseName, getTextStyle(wb)); createCell(row, (short) 1, moduleSpace, getTextStyle(wb)); createCell(row, (short) 2, tableType, getTextStyle(wb)); createCell(row, (short) 3, splitField, getTextStyle(wb)); createCell(row, (short) 4, splitNum, getTextStyle(wb)); createCell(row, (short) 5, splitData, getTextStyle(wb)); } sheet.setColumnWidth(0, 10000); sheet.setColumnWidth(1, 5000); sheet.setColumnWidth(2, 5000); sheet.setColumnWidth(3, 5000); sheet.setColumnWidth(4, 5000); sheet.setColumnWidth(5, 5000); } private static void createColumnTypeAres(HSSFWorkbook wb,Map<String, List<IARESResource>> dbMap) throws ARESModelException{ IARESProject project = null; if (dbMap.values().size() > 0) { for(Iterator<List<IARESResource>> it = dbMap.values().iterator() ; it.hasNext();){ List<IARESResource> resList = it.next(); if (resList.size() > 0) { project = resList.get(0).getARESProject(); break; } } } if (project == null) { return; } int bizTypeColLength = 0; int stdTypeColLength = 0; List<List<String>> bizTypeList = createBizTypeContent(project); List<List<String>> stdTypeList = createStdTypeContent(project); //����ҵ���������� BIZ_TYPE = createSheetName(wb, BIZ_TYPE); STD_TYPE = createSheetName(wb, STD_TYPE); HSSFSheet bizTypeSheet = wb.createSheet(createSheetName(wb, BIZ_TYPE)); setDefaultCellStyle(wb, bizTypeSheet); HSSFSheet stdTypeSheet = wb.createSheet(createSheetName(wb, STD_TYPE)); setDefaultCellStyle(wb, stdTypeSheet); int hyIndex = -1; for (int i = 0; i < bizTypeList.size(); i++) { List<String> rowContent = bizTypeList.get(i); bizTypeColLength = rowContent.size(); HSSFRow bizRow = bizTypeSheet.createRow(i + startRowNum); HSSFCellStyle cs = getTextStyle(wb); if (i == 0) { cs = getTitleStyle(wb); } for (int j = 0; j < rowContent.size(); j++) { if (j == hyIndex) { HSSFCell cell = bizRow.createCell(j + startCellNum); Integer index = stdTypeHy.get(rowContent.get(hyIndex)); if (index != null) { String cv = "HYPERLINK(\"#'" + STD_TYPE + "'!A" + (index + startRowNum + 1) + "\",\"" + rowContent.get(j) + "\")"; cell.setCellFormula(cv); cell.setCellStyle(getLinkStyle(wb)); }else { cell.setCellValue(rowContent.get(j)); cell.setCellStyle(getTextStyle(wb)); } continue; } HSSFCell cell = bizRow.createCell(j + startCellNum); cell.setCellValue(rowContent.get(j)); cell.setCellStyle(cs); } if (i == 0) { for (int j = 0; j < rowContent.size(); j++) { if (StringUtils.equals(rowContent.get(j), BIZ_TYPE_NAME)) { hyIndex = j ; } } } } //������׼�������� for (int i = 0; i < stdTypeList.size(); i++) { List<String> rowContent = stdTypeList.get(i); stdTypeColLength = rowContent.size(); HSSFRow bizRow = stdTypeSheet.createRow(i + startRowNum); HSSFCellStyle cs = getTextStyle(wb); if (i == 0) { cs = getTitleStyle(wb); } for (int j = 0; j < rowContent.size(); j++) { HSSFCell cell = bizRow.createCell(j + startCellNum); cell.setCellValue(rowContent.get(j)); cell.setCellStyle(cs); } } for (int i = 0; i < bizTypeColLength; i++) { bizTypeSheet.setColumnWidth(i+startCellNum, 5000); } for (int i = 0; i < stdTypeColLength; i++) { stdTypeSheet.setColumnWidth(i+startCellNum, 3000); } } private static List<List<String>> createBizTypeContent(IARESProject project) throws ARESModelException{ bizTypeHy = new HashMap<String, Integer>(); List<List<String>> bizContents = new ArrayList<List<String>>(); IARESResource bizTypeRes = project.findResource(IMetadataResType.BizType, IMetadataResType.BizType); if (bizTypeRes != null && bizTypeRes.exists()) { BusinessDataTypeList bizTypeList = bizTypeRes.getInfo(BusinessDataTypeList.class); bizContents = POIUtils.exportExcelStringTable( bizTypeList, MetadataPackage.Literals.METADATA_RESOURCE_DATA__ITEMS, MetadataPackage.Literals.BUSINESS_DATA_TYPE, new String[] { "������", "��������", BIZ_TYPE_NAME, "����", "����", "Ĭ��ֵ", "˵��" }, 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, bizTypeRes, null); } for (int i = 0; i < bizContents.size(); i++) { List<String> content = bizContents.get(i); if (content.size() > 0) { bizTypeHy.put(content.get(0), i); } } return bizContents; } private static List<List<String>> createStdTypeContent(IARESProject project) throws ARESModelException{ stdTypeHy = new HashMap<String, Integer>(); List<List<String>> stdTypeContents = new ArrayList<List<String>>(); IARESResource bizTypeRes = project.findResource(IMetadataResType.StdType, IMetadataResType.StdType); if (bizTypeRes != null && bizTypeRes.exists()) { StandardDataTypeList bizTypeList = bizTypeRes.getInfo(StandardDataTypeList.class); Language[] languages = LanguageRegister.getInstance().getRegisteredLanguages(); String[] languageIds = new String[languages.length]; String[] languageTitles = new String[languages.length]; for (int i = 0; i < languageIds.length; i++) { languageIds[i] = languages[i].getId(); languageTitles[i] = languages[i].getName(); } stdTypeContents = POIUtils .exportExcelStringTable( bizTypeList, MetadataPackage.Literals.METADATA_RESOURCE_DATA__ITEMS, 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, bizTypeRes, new IHeaderSorter() { @Override public void sort(List<String> header) { int index = header.indexOf("˵��"); if (index >= 0) { header.remove(index); header.add("˵��"); } } }); } for (int i = 0; i < stdTypeContents.size(); i++) { List<String> content = stdTypeContents.get(i); if (content.size() > 0) { stdTypeHy.put(content.get(0), i); } } return stdTypeContents; } public static String getTableTypeStr(table_type type){ if(type.getValue() == table_type.COMMON_VALUE) { return "һ���"; }else if(type.getValue() == table_type.TEMP_NO_VALUE_VALUE){ return "��ʱ��(����������)"; }else if(type.getValue() == table_type.TEMP_WITH_VALUE_VALUE) { return "��ʱ��(��������)"; } return StringUtils.EMPTY; } public static table_type getTableTypeEnum(String type){ if(StringUtils.equals(type.trim(), "һ���")) { return table_type.COMMON; }else if(StringUtils.equals(type.trim(), "��ʱ��(����������)")){ return table_type.TEMP_NO_VALUE; }else if(StringUtils.equals(type.trim(), "��ʱ��(��������)")) { return table_type.TEMP_WITH_VALUE; } return null; } /** * ��set�������� * * @param strs * @return */ private static List<String> sortPackages(Set<String> strs) { List<String> colls = new ArrayList<String>(); if (strs != null) { colls.addAll(strs); Collections.sort(colls); } return colls; } /** * �����ӵ���ʽ * * @param wb * @return */ private static HSSFCellStyle getLinkStyle(HSSFWorkbook wb) { if (style == null) { style = wb.createCellStyle(); if (linkFont == null) { linkFont = wb.createFont(); linkFont.setColor(HSSFColor.BLUE.index); } style.setFont(linkFont); } return style; } /** * �ı������ʽ * * @param wb * @return */ private static HSSFCellStyle getTextStyle(HSSFWorkbook wb) { if (textStyle == null) { textStyle = wb.createCellStyle(); textStyle.setFillForegroundColor(HSSFColor.WHITE.index); textStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); textStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); textStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); textStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); textStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); textStyle.setBottomBorderColor(HSSFColor.BLACK.index); } return textStyle; } /** * �ı������ʽ * * @param wb * @return */ private static HSSFCellStyle getMultTextStyle(HSSFWorkbook wb) { if (multTextStyle == null) { multTextStyle = wb.createCellStyle(); multTextStyle.setFillForegroundColor(HSSFColor.WHITE.index); multTextStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); multTextStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); multTextStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); multTextStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); multTextStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); multTextStyle.setBottomBorderColor(HSSFColor.BLACK.index); multTextStyle.setWrapText(true); } return multTextStyle; } /** * �ı���ǰlabel����ʽ * * @param wb * @return */ private static HSSFCellStyle getLabelStyle(HSSFWorkbook wb) { if (labelStyle == null) { labelStyle = wb.createCellStyle(); labelStyle.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index); labelStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); labelStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); labelStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); labelStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); labelStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); labelStyle.setBottomBorderColor(HSSFColor.BLACK.index); } return labelStyle; } /** * ������ʽ * * @param wb * @return */ private static HSSFCellStyle getTitleStyle(HSSFWorkbook wb) { if (titleStyle == null) { titleStyle = wb.createCellStyle(); titleStyle.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index); titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); titleStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); titleStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); titleStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); titleStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); titleStyle.setBottomBorderColor(HSSFColor.BLACK.index); if (titleFont == null) { titleFont = wb.createFont(); titleFont.setFontName("����"); titleFont.setFontHeightInPoints((short) 10); titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); } titleStyle.setFont(titleFont); } return titleStyle; } /** * ����EMFģ�Ͷ���,��ȡģ����Ϣ * * @param table * @return */ private static String getExtendsData(DatabaseResourceData table , EClass eclass , EStructuralFeature feature) { try { for (Iterator<String> it = table.getData2().keySet().iterator(); it .hasNext();) { String key = (String) it.next(); EObject obj = table.getData2().get(key); if (eclass.isInstance(obj) && obj.eGet(feature) != null) { return obj.eGet(feature).toString(); } } } catch (Exception e) { e.printStackTrace(); } return StringUtils.EMPTY; } /** * ���浼�����е���·�� * @param file */ public static void saveParamter (String file){ org.eclipse.core.runtime.Preferences preferences = DatabaseUI.getDefault().getPluginPreferences(); preferences.setValue(EXPORT_TARGET_DB_DIR , file); } /** * ��ȡ�������е���·�� * * @return */ public static String getParamter (){ org.eclipse.core.runtime.Preferences preferences = DatabaseUI.getDefault().getPluginPreferences(); return preferences.getString(EXPORT_TARGET_DB_DIR); } public static List< List<String> > exportExcelStringTable(EObject owner, EReference reference, EClass itemClass, String[] titles, EStructuralFeature[] features, boolean includeExtend, String[] titles2, String[] dataKeys, IARESElement element, IHeaderSorter sorter) { List<List<String>> result = new ArrayList<List<String>>(); // ���ȹ��������� List<String> header = new ArrayList<String>(); // ���������������ֵ�ӳ�� Map<String, IAttributeHelper> helperMap = new HashMap<String, POIUtils.IAttributeHelper>(); header.addAll(Arrays.asList(titles)); for (int i = 0; i < titles.length; i++) { helperMap.put(titles[i], new NormalAttributeHelper(features[i]){ @Override public String getValue(EObject model) { if (feature == DatabasePackage.Literals.TABLE_INDEX__COLUMNS) { StringBuffer sb = new StringBuffer(); EList<TableIndexColumn> indexColumns = (EList<TableIndexColumn>) model.eGet(feature); for (TableIndexColumn tc : indexColumns) { String name = tc.getColumnName(); if (StringUtils.isNotBlank(name)) { if (StringUtils.isNotBlank(sb.toString())) { sb.append(","); } sb.append(name); } } return sb.toString(); }else if(feature == DatabasePackage.Literals.TABLE_KEY__COLUMNS){ StringBuffer sb = new StringBuffer(); EList<TableColumn> columns = (EList<TableColumn>) model.eGet(feature); for (TableColumn col : columns) { String name = col.getName(); if (StringUtils.isNotBlank(name)) { if (StringUtils.isNotBlank(sb.toString())) { sb.append(","); } sb.append(name); } } return sb.toString(); }else if(feature == DatabasePackage.Literals.FOREIGN_KEY__TABLE_NAME){ EList<ForeignKey> fks = (EList<ForeignKey>) model.eGet(DatabasePackage.Literals.TABLE_KEY__FOREIGN_KEY); for (ForeignKey fk : fks) { return fk.getTableName(); } return ""; }else if(feature == DatabasePackage.Literals.FOREIGN_KEY__FIELD_NAME){ StringBuffer sb = new StringBuffer(); EList<ForeignKey> fks = (EList<ForeignKey>) model.eGet(DatabasePackage.Literals.TABLE_KEY__FOREIGN_KEY); for (ForeignKey fk : fks) { String name = fk.getFieldName(); if (StringUtils.isNotBlank(name)) { if (StringUtils.isNotBlank(sb.toString())) { sb.append(","); } sb.append(name); } } return sb.toString(); } return super.getValue(model); } }); } if (includeExtend) { for (int i = 0; i < titles2.length; i++) { header.add(titles2[i]); helperMap.put(titles2[i], new ExtensibleDataAttributeHelper(dataKeys[i])); } IExtensibleModelEditingSupport[] supports = ExtensibleModelUtils.getEndabledEditingSupports(element, itemClass); for (IExtensibleModelEditingSupport support : supports) { for (IExtensibleModelPropertyDescriptor desc : support.getPropertyDescriptors(element, itemClass)) { if (!desc.isDerived()) { header.add(desc.getDisplayName()); if (desc instanceof IMapExtensibleModelPropertyDescriptor) { helperMap.put(desc.getDisplayName(), new ExtensibleData2MapAttributeHelper(support.getKey(), desc.getStructuralFeature(), ((IMapExtensibleModelPropertyDescriptor) desc).getKey())); } else { helperMap.put(desc.getDisplayName(), new ExtensibleData2AttributeHelper(support.getKey(), desc.getStructuralFeature())); } } } } } if (sorter != null) { sorter.sort(header); } // ����ʵ�ʱ������������������֣��п��ܴ��ڿ��� List<IAttributeHelper> helperList = new ArrayList<IAttributeHelper>(); for (String title : header) { helperList.add(helperMap.get(title)); } result.add(header); // ��ι������� List<EObject> contentObjectList = (List<EObject>) owner.eGet(reference); for (EObject eObject : contentObjectList) { List<String> content = new ArrayList<String>(); for (IAttributeHelper helper : helperList) { content.add(helper.getValue(eObject)); } result.add(content); } return result; } /** * ��ȡ���ݿ������(ö��) * <p>�Ϳͻ�Լ��</p> * <p>U : һ���</p> * <p>T : ��ʱ��(������)</p> * <p>M : ��ʱ��(����)</p> * @param key * @return */ public static String getTableType (String key){ String value = tableType.get(key); return value == null ? StringUtils.EMPTY : value; } }