/** * <p>Copyright: Copyright (c) 2013</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.procedure.compiler.oracle.skeleton.util; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import com.hundsun.ares.studio.core.IARESProject; 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; import com.hundsun.ares.studio.model.reference.ReferenceInfo; import com.hundsun.ares.studio.procedure.compiler.oracle.exception.TableNotFoundException; import com.hundsun.ares.studio.reference.ReferenceManager; /** * @author liaogc * */ public class TableResourceUtil { /** * ���ݱ�����ñ���Դ * @param tableName * @return */ public static TableResourceData getTableByName(String tableName,IARESProject aresProject){ if(!tableName.isEmpty()){ tableName = tableName.trim(); } String realTableResourceName =tableName; if(tableName.startsWith("his_")){ realTableResourceName = tableName.replaceFirst("his_", StringUtils.EMPTY); }else if(tableName.startsWith("fil_")){ realTableResourceName = tableName.replaceFirst("fil_", StringUtils.EMPTY); }else if(tableName.startsWith("r_")){ realTableResourceName = tableName.replaceFirst("r_", StringUtils.EMPTY); }else if(tableName.startsWith("rl_")){ realTableResourceName = tableName.replaceFirst("rl_", StringUtils.EMPTY); } ReferenceManager manager = ReferenceManager.getInstance(); ReferenceInfo ref = manager.getFirstReferenceInfo(aresProject, IDatabaseRefType.Table, realTableResourceName, true); if (ref != null) { return (TableResourceData) ref.getObject(); } return null; } /** * ��ñ���(����) * @param tableAllName * @return */ public static String getTableName(String tableAllName){ if(StringUtils.isNotBlank(tableAllName)){ //�������ǰ������û��� if (tableAllName.indexOf(".") != -1) { return tableAllName.substring(tableAllName.indexOf(".") + 1); } } return tableAllName; } /** * ���ݱ�ǹ��˱���� * @param flag * @param tableName * @param tableColumns * @return */ public static List<TableColumn> getFieldsWithoutFlag(String flag,String tableName, List<TableColumn> tableColumns) { if (tableName.indexOf(".") >= 0) { tableName = tableName.substring(tableName.lastIndexOf(".") + 1); } if (!tableName.isEmpty()) { tableName = tableName.trim(); if (tableName.startsWith("his_") || tableName.startsWith("fil_") || tableName.startsWith("r_") || tableName.startsWith("rl_")) { return tableColumns; } } if(StringUtils.isBlank(flag)){ return tableColumns; } List<TableColumn> filtered = new ArrayList<TableColumn>(); char[] flags = flag.toCharArray(); for (TableColumn field : tableColumns) { boolean contains = false; for (int ch : flags) { if (field.getMark() != null) { if (field.getMark().indexOf(ch) != -1) { contains = true; break; } } } if (!contains) { filtered.add(field); } } return filtered; } /** * ���ݱ�ǹ��˱���� * @param flag * @param tableName * @param tableColumns * @return * @throws TableNotFoundException */ public static List<TableColumn> getFieldsWithoutFlag(String flag,String tableName,IARESProject aresProject) throws TableNotFoundException { if (tableName.indexOf(".") >= 0) { tableName = tableName.substring(tableName.lastIndexOf(".") + 1); } List<TableColumn> tableColumns = new ArrayList<TableColumn>(10); TableResourceData tableResourceData = getTableByName( tableName, aresProject); if(tableResourceData!=null){ tableColumns.addAll(tableResourceData.getColumns()); }else{ throw new TableNotFoundException(tableName); } if (!tableName.isEmpty()) { tableName = tableName.trim(); if (tableName.startsWith("his_") || tableName.startsWith("fil_") || tableName.startsWith("r_") || tableName.startsWith("rl_")) { return tableColumns; } } if(StringUtils.isBlank(flag)){ return tableColumns; } List<TableColumn> filtered = new ArrayList<TableColumn>(); char[] flags = flag.toCharArray(); for (TableColumn field : tableColumns) { boolean contains = false; for (int ch : flags) { if (field.getMark() != null) { if (field.getMark().indexOf(ch) != -1) { contains = true; break; } } } if (!contains) { filtered.add(field); } } return filtered; } }