package com.connor.mdbksplm.util; import java.awt.Component; import java.awt.Dialog; import java.awt.Window; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.OutputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.swing.JFileChooser; import javax.swing.JTable; import javax.swing.filechooser.FileSystemView; import javax.swing.table.TableColumn; import com.teamcenter.rac.aifrcp.AIFUtility; import com.teamcenter.rac.kernel.ListOfValuesInfo; import com.teamcenter.rac.kernel.TCComponent; import com.teamcenter.rac.kernel.TCComponentDataset; import com.teamcenter.rac.kernel.TCComponentForm; import com.teamcenter.rac.kernel.TCComponentICO; import com.teamcenter.rac.kernel.TCComponentItem; import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCComponentListOfValues; import com.teamcenter.rac.kernel.TCComponentListOfValuesType; import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCPreferenceService; import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.kernel.TCUserService; import com.teamcenter.rac.kernel.ics.ICSProperty; import com.teamcenter.rac.kernel.ics.ICSPropertyDescription; import com.teamcenter.rac.stylesheet.AbstractRendering; import com.teamcenter.rac.util.MessageBox; import com.teamcenter.rac.util.Utilities; public class ConnorUtils { //TC的服务 public static TCPreferenceService service; public static TCSession session; public static TCUserService userService; static { if (session == null) { session = (TCSession) (AIFUtility.getCurrentApplication().getSession()); } if (service == null) service = session.getPreferenceService(); } public static boolean isEmpty(String str) { return str == null || "".equals(str.trim()); } /** * 将日期对象转换为字符串 * @param sdf SimpleDateFormat对象 * @param date 日期对象 * @return 日期的字符串对象 */ public static String getDate2String(SimpleDateFormat sdf, Date date) { if (sdf == null || date == null) { return ""; } return sdf.format(date); } /** * 获取多值得首选项 * * @param prefName 首先项名称 * @param split 分割符 * @return HashMap形式的首选项内容 */ public static LinkedHashMap getPrefStrHashMap(String prefName, String split) { LinkedHashMap map = new LinkedHashMap(); String[] strs = service.getStringArray(TCPreferenceService.TC_preference_site, prefName); if (strs != null) { for (String str : strs) { String temp[] = str.split(split); if(temp!=null) { if(temp.length==2) { map.put(temp[0], temp[1]); }else { map.put(temp[0],""); } } } } return map; } /** * 获取多值的首选项 * * @param prefName 首先项名称 * @param split 分割符 * @return */ public static HashMap> getPrefListHashMap(String prefName, String split) { HashMap> map = new HashMap>(); String[] strs = service.getStringArray(TCPreferenceService.TC_preference_site, prefName); if (strs != null) { for (String str : strs) { String temp[] = str.split(split); if(temp!=null) { if(map.containsKey(temp[0])) { List list = map.get(temp[0]); if(list==null) { list = new ArrayList(); } if(temp.length==2) { list.add(temp[1]); }else { list.add(""); } }else { List list = new ArrayList(); if(temp.length==2) { list.add(temp[1]); }else { list.add(""); } map.put(temp[0], list); } } } } return map; } public static String getPrefValue(String prefName){ return service.getStringValue(prefName); } public static String[] getPrefValues(String prefName){ return service.getStringValues(prefName); } public static void setByPass(boolean val) { try { if (userService == null) { userService = ConnorUtils.session.getUserService(); } Object[] obj = new Object[1]; obj[0] = ""; if (val) { userService.call("Connor_set_bypass", obj); } else { userService.call("Connor_close_bypass", obj); } } catch (Exception e) { e.printStackTrace(); } } /** * 通过puid获取模板 * @param templetePuid 模板的puid * * @return 模板文件 * */ public static File getTempleteData(String templetePuid){ if(templetePuid==null) { return null; } File file = null; try { TCComponentDataset dataset = (TCComponentDataset) session.stringToComponent(templetePuid); String[] types = dataset.getProperty("ref_names").split(","); String temp = System.getenv("temp"); File[] files = dataset.getFiles(types[0],temp); if(files!=null && files.length>0) { file = files[0]; } } catch (Exception e) { MessageBox.post("错误:"+e.getMessage(),"错误", 2); return null; } if(file == null || !file.exists()) { MessageBox.post("数据集的puid:"+templetePuid+"的模板下载失败","错误", 2); return null; } return file; } public static Connection getOracleConnection() { Connection connection=null; try { // 加载驱动程序 Class.forName("oracle.jdbc.driver.OracleDriver"); String[] dbinfos = ConnorUtils.getPrefValues("OA_GET_COST_Conn"); String user = dbinfos[0]; String password = dbinfos[1]; String url = "jdbc:oracle:thin:@" + dbinfos[2]; connection = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { e.printStackTrace(); MessageBox.post("数据库连接失败,失败原因:"+e.getMessage(),"提示",MessageBox.INFORMATION); } catch (SQLException e) { e.printStackTrace(); MessageBox.post("数据库连接失败,失败原因:"+e.getMessage(),"提示",MessageBox.INFORMATION); } return connection; } public static Connection getSqlServerConnection() { Connection connection=null; try { // 加载驱动程序 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String[] dbinfos = ConnorUtils.getPrefValues("MT_dbinfo"); String user = dbinfos[0]; String password = dbinfos[1]; String url = "jdbc:sqlserver://"+dbinfos[3] +":1433;DataBaseName=" + dbinfos[2]; connection = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { e.printStackTrace(); MessageBox.post("数据库连接失败,失败原因:"+e.getMessage(),"提示",MessageBox.INFORMATION); } catch (SQLException e) { e.printStackTrace(); MessageBox.post("数据库连接失败,失败原因:"+e.getMessage(),"提示",MessageBox.INFORMATION); } return connection; } public static Connection getERPConnection() { Connection connection=null; try { // 加载驱动程序 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String[] dbinfos = ConnorUtils.getPrefValues("MT_ERP_DBinfo"); String user = dbinfos[0]; String password = dbinfos[1]; String url = "jdbc:sqlserver://"+dbinfos[3] +";DataBaseName=" + dbinfos[2]; connection = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { e.printStackTrace(); MessageBox.post("数据库连接失败,失败原因:"+e.getMessage(),"提示",MessageBox.INFORMATION); } catch (SQLException e) { e.printStackTrace(); MessageBox.post("数据库连接失败,失败原因:"+e.getMessage(),"提示",MessageBox.INFORMATION); } return connection; } public static void ChangeValue(String[] value1,String[] value2) { String[] temp; temp = value1; value1 = value2; value2 = temp; } /** * 打开文件管理器 * @param parent * @return */ public static File chooseDirectory(Component parent) { FileSystemView fsv = FileSystemView.getFileSystemView(); String deskPath = fsv.getHomeDirectory().getPath(); JFileChooser fileChooser = new JFileChooser(); fileChooser.setCurrentDirectory(new File(deskPath)); fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int state = fileChooser.showOpenDialog(parent); if (state == 1) { return null; } return fileChooser.getSelectedFile(); } /** * 根据文件类型过滤文件 */ public static File chooseFile(Component parent,String type) { FileSystemView fsv = FileSystemView.getFileSystemView(); String deskPath = fsv.getHomeDirectory().getPath(); JFileChooser fileChooser = new JFileChooser(); fileChooser.setCurrentDirectory(new File(deskPath)); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); MyFileFilter mFilter = new MyFileFilter(type); fileChooser.addChoosableFileFilter(mFilter); fileChooser.setFileFilter(mFilter); int state = fileChooser.showOpenDialog(parent); if (state == 1) { return null; } return fileChooser.getSelectedFile(); } public static void HiddenCell(int column,JTable table) { TableColumn tc = table.getTableHeader().getColumnModel().getColumn(column); tc.setMaxWidth(0); tc.setPreferredWidth(0); tc.setWidth(0); tc.setMinWidth(0); table.getTableHeader().getColumnModel().getColumn(column).setMaxWidth(0); table.getTableHeader().getColumnModel().getColumn(column).setMinWidth(0); } public static void post(Component var0,String value,String title) { Dialog var16 = Utilities.getParentDialog(var0); if (var16 != null) { MessageBox.post(var16, value, title, 2); } else { MessageBox.post(Utilities.getParentFrame(var0), value, title, 2); } } // 获得lov值 public static Map getLOVs(String lovName) { Map map = new LinkedHashMap(); map.put("", ""); try { TCComponentListOfValuesType lovType = (TCComponentListOfValuesType) session.getTypeComponent("ListOfValues"); TCComponentListOfValues[] lov = lovType.find(lovName); if (lov.length > 0) { ListOfValuesInfo listOfValues = lov[0].getListOfValues(); String[] realval = listOfValues.getStringListOfValues(); for (int i = 0; i < realval.length; i++) { String disval = listOfValues.getDisplayableValue(realval[i]); map.put(disval, realval[i]); } } } catch (TCException e) { e.printStackTrace(); } return map; } public static TCComponent getLatestReleaseRevison(TCComponent component) throws Exception{ TCComponent[] revisions = component.getTCProperty("revision_list").getReferenceValueArray(); for (int i = revisions.length-1; i >= 0; i--) { TCComponent[] release_statuas = revisions[i].getReferenceListProperty("release_status_list"); if (release_statuas!=null && release_statuas.length > 0) { return revisions[i]; } } return null; } public static TCComponent getLastReleaseRevisonFormByStatus(TCComponent component) throws Exception{ String[] cpxpzt_status = session.getPreferenceService().getStringValues("Cpxpzt"); TCComponent[] revisions = component.getTCProperty("revision_list").getReferenceValueArray(); for (int i = revisions.length-1; i >= 0; i--) { TCComponent[] release_statuses = revisions[i].getReferenceListProperty("release_status_list"); if (release_statuses!=null && release_statuses.length > 0) { for(TCComponent release_status:release_statuses) { for(String sxx_value:cpxpzt_status) { if (release_status.getStringProperty("object_name").equals(sxx_value)) { return revisions[i].getReferenceListProperty("IMAN_master_form_rev")[0]; } } } } } return null; } public static boolean isDigit(String str) { if (ConnorUtils.isEmpty(str)) { return false; } char[] chars = str.toCharArray(); int len = chars.length; for (int i = 0; i < len; i++) { char c = chars[i]; if (!(c >= '0' && c <= '9')) { return false; } } return true; } public static boolean isNumericzidai(String str) { Pattern pattern = Pattern.compile("-?[0-9]+\\.?[0-9]*"); Matcher isNum = pattern.matcher(str); if (!isNum.matches()) { return false; } return true; } public static void getClassification(TCComponentItemRevision rev) { try { TCComponentICO[] icos = rev.getClassificationObjects(); if(icos==null || icos.length==0) { return; } for(int i=0;i