package com.vci.client.portal.platformPortal; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.JFileChooser; import javax.swing.filechooser.FileFilter; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import com.vci.client.LogonApplication; import com.vci.client.common.providers.ServiceProvider; import com.vci.client.omd.btm.wrapper.BtmItemWrapper; import com.vci.client.omd.linktype.LinkTypeWrapper; import com.vci.client.omd.provider.ApProvider; import com.vci.client.omd.provider.BtmProvider; import com.vci.client.omd.provider.LinkTypeProvider; import com.vci.client.oq.QTClient; import com.vci.client.oq.QTDClient; import com.vci.client.portal.NewUI.MessageDialog; import com.vci.client.portal.utility.PRM; import com.vci.client.portal.utility.PRMItem; import com.vci.client.portal.utility.UITools; import com.vci.client.ui.swing.VCIOptionPane; import com.vci.common.utility.ObjectUtility; import com.vci.corba.common.VCIError; import com.vci.corba.omd.atm.AttribItem; import com.vci.corba.omd.ltm.LinkType; import com.vci.corba.omd.qtm.QTInfo; import com.vci.corba.portal.data.PortalVI; public class ImportExcel { private Object selectTreeNodeobject; public ImportExcel(Object selectTreeNodeobject){ this.selectTreeNodeobject = selectTreeNodeobject; } public boolean impExcel() { JFileChooser jf = new JFileChooser(); jf.setDialogTitle("打开"); jf.removeChoosableFileFilter(jf.getFileFilter()); jf.setFileFilter(new FileFilter() { @Override public String getDescription() { return "xls"; } @Override public boolean accept(File f) { if (f.isDirectory() || f.getName().endsWith(".xls")) { return true; } else { return false; } } }); int showOpenDialog = jf.showOpenDialog(LogonApplication.frame); String xfileName = ""; String filePath = ""; if (showOpenDialog == JFileChooser.APPROVE_OPTION) { File file = jf.getSelectedFile(); xfileName = file.getAbsolutePath(); filePath = file.getAbsolutePath(); if (!xfileName.endsWith(".xls")) { xfileName = xfileName + ".xls"; } } try { //存储form名称和oid Map formNameMap = new HashMap(); FileInputStream fin = new FileInputStream(xfileName); PortalVI[] portalViInfos = null; try { HSSFWorkbook readworkbook = new HSSFWorkbook(fin); HSSFSheet readbtmnamesheet = readworkbook.getSheet("btmName"); HSSFSheet readsheet = readworkbook.getSheet("portalvi"); HSSFSheet qtdsheet = readworkbook.getSheet("QTD"); List portalVIList = new ArrayList(); StringBuffer checkPortalVI = new StringBuffer(); StringBuffer checkAttr = new StringBuffer(); StringBuffer checkInObj = new StringBuffer(); String btmName = ""; if (!(selectTreeNodeobject instanceof String)) { if (selectTreeNodeobject instanceof BtmItemWrapper) { btmName = ((BtmItemWrapper) selectTreeNodeobject).btmItem.name; } else if (selectTreeNodeobject instanceof LinkTypeWrapper) { btmName = ((LinkTypeWrapper) selectTreeNodeobject).linkType.name; } for (int i = 0; i <= readsheet.getLastRowNum(); i++) { String ploid = ObjectUtility.getNewObjectID36(); PortalVI p = new PortalVI(); HSSFRow readrow = readsheet.getRow(i); if (readrow == null) { break; } // HSSFCell readcell = readrow.getCell(0); p.id = ploid; HSSFCell readcell = readrow.getCell(0); p.typeName = readcell.getStringCellValue(); if (!btmName.equals(p.typeName)) { VCIOptionPane.showMessage(LogonApplication.frame, "请选择要导入的类型节点名称!"); return false; } readcell = readrow.getCell(1); p.viName = readcell.getStringCellValue(); formNameMap.put(p.typeName + ":" + p.viName,ploid); readcell = readrow.getCell(2); p.viType = (short) readcell.getNumericCellValue(); readcell = readrow.getCell(3); p.typeFlag = (short) readcell.getNumericCellValue(); readcell = readrow.getCell(4); String prmStr = readcell.getStringCellValue(); FileInputStream prmFile = new FileInputStream(filePath + "." + prmStr); BufferedReader br = new BufferedReader( new InputStreamReader(prmFile, "UTF-8")); // "UTF-8" StringBuilder sb = new StringBuilder(); String prmStrContent; while ((prmStrContent = br.readLine()) != null) { sb.append(prmStrContent).append("\r\n"); } prmStr = sb.toString(); if (p.viType == 0) { PRM prmObj = UITools.getPRM(prmStr); List prmItemList = prmObj.getPrmItemList(); for (int j = 0; j < prmItemList.size(); j++) { PRMItem pit = prmItemList.get(j); PortalVI[] pvs = new PortalVI[0]; try { pvs = UITools.getService() .getPortalVIArrayByTypeName( p.typeName); if(pvs != null && pvs.length>0){ for (PortalVI pv : pvs) { if (pit.getItemInObj().equals( p.typeName + ":" + pv.viName)) { pit.setItemInObj(pv.id); } } }else{ if(formNameMap.get(pit.getItemInObj())==null){ if(!checkInObj.toString().contains(pit.getItemInObj())){ String[] split = pit.getItemInObj().split(":"); checkInObj.append(split[1]).append(","); } }else{ pit.setItemInObj(formNameMap.get(pit.getItemInObj())); } } } catch (VCIError e) { e.printStackTrace(); } } try { prmStr = UITools.getPRMText(prmObj); } catch (Throwable e1) { e1.printStackTrace(); } } p.prm = prmStr.trim(); String btmname = ""; AttribItem[] btAbItems = null; if (p.typeFlag == 0) { btmname = p.typeName; btAbItems = BtmProvider.getInstance().getBtAbItems( btmname); } else if (p.typeFlag == 1) { try { LinkType linkType = LinkTypeProvider.getInstance().getLinkTypeByName(p.typeName); btmname = linkType.name; btAbItems = ApProvider.getInstance().getAttribItemsByNames(LinkTypeProvider.getInstance().getAbNames(linkType)); } catch (Exception e) { e.printStackTrace(); } catch (Throwable e) { e.printStackTrace(); } } readcell = readrow.getCell(5); String attrValue = readcell.getStringCellValue(); String[] split = attrValue.split(","); for (String name : split) { boolean flag = false; for (AttribItem ait : btAbItems) { if (ait.name.equals(name)) { flag = true; break; } } if (!flag && !checkAttr.toString().contains(name)) { checkAttr.append(name).append(","); } } portalViInfos = UITools.getService() .getPortalVIArrayByTypeName(btmname); for (PortalVI pvi : portalViInfos) { if (pvi.viName.equals(p.viName)) { checkPortalVI.append(pvi.viName).append(","); } } portalVIList.add(p); QTInfo qt = new QTInfo(); readcell = readrow.getCell(6); if (readcell != null && !"".equals(readcell.toString())) { //readcell-->readcell.tostring //by zgy 2015-06-11 String qtName = readcell.getStringCellValue(); qt.qtName = qtName; readcell = readrow.getCell(7); String qtText = readcell.getStringCellValue(); FileInputStream qtprmFile = new FileInputStream( filePath + "." + qtText); BufferedReader qtbr = new BufferedReader( new InputStreamReader(qtprmFile, "UTF-8")); // "UTF-8" StringBuilder qtsb = new StringBuilder(); String qtStrContent; while ((qtStrContent = qtbr.readLine()) != null) { qtsb.append(qtStrContent).append("\r\n"); } qtText = qtsb.toString(); qt.qtText = qtText; readcell = readrow.getCell(8); String qtBtmName = readcell.getStringCellValue(); qt.btmName = qtBtmName; QTInfo qt2 = ServiceProvider.getOMDService().getQTDService().getQT( qt.qtName); if (qt2 == null) { ServiceProvider.getOMDService().getQTDService().saveQT(qt); } } } } else { for (int btmNamei = 0; btmNamei <= readbtmnamesheet .getLastRowNum(); btmNamei++) { HSSFRow btmNameReadrow = readbtmnamesheet .getRow(btmNamei); HSSFCell btmNameReadcell = btmNameReadrow.getCell(0); btmName = btmNameReadcell.getStringCellValue(); if (btmNameReadrow == null) { break; } for (int i = 0; i <= readsheet.getLastRowNum(); i++) { String ploid = ObjectUtility.getNewObjectID36(); PortalVI p = new PortalVI(); HSSFRow readrow = readsheet.getRow(i); if (readrow == null) { break; } // HSSFCell readcell = readrow.getCell(0); p.id = ploid; HSSFCell readcell = readrow.getCell(0); p.typeName = readcell.getStringCellValue(); // if(!btmName.equals(p.typeName)){ // VCIOptionPane.showMessage(LogonApplication.frame, // "请选择要导入的类型节点名称!"); // return false; // } if (btmName.equals(p.typeName)) { readcell = readrow.getCell(1); p.viName = readcell.getStringCellValue(); formNameMap.put(p.typeName + ":" + p.viName,ploid); readcell = readrow.getCell(2); p.viType = (short) readcell.getNumericCellValue(); readcell = readrow.getCell(3); p.typeFlag = (short) readcell.getNumericCellValue(); readcell = readrow.getCell(4); String prmStr = readcell.getStringCellValue(); FileInputStream prmFile = new FileInputStream( filePath + "." + prmStr); BufferedReader br = new BufferedReader( new InputStreamReader(prmFile, "UTF-8")); StringBuilder sb = new StringBuilder(); String prmStrContent; while ((prmStrContent = br.readLine()) != null) { sb.append(prmStrContent).append("\r\n"); } prmStr = sb.toString(); if (p.viType == 0) { PRM prmObj = UITools.getPRM(prmStr); List prmItemList = prmObj .getPrmItemList(); for (int j = 0; j < prmItemList.size(); j++) { PRMItem pit = prmItemList.get(j); PortalVI[] pvs = new PortalVI[0]; try { pvs = UITools .getService() .getPortalVIArrayByTypeName( p.typeName); if(pvs != null && pvs.length>0){ for (PortalVI pv : pvs) { if (pit.getItemInObj().equals( p.typeName + ":" + pv.viName)) { pit.setItemInObj(pv.id); } } }else{ pit.setItemInObj(formNameMap.get(pit.getItemInObj())); } } catch (VCIError e) { e.printStackTrace(); } } try { prmStr = UITools.getPRMText(prmObj); } catch (Throwable e1) { e1.printStackTrace(); } } p.prm = prmStr.trim(); String btmname = ""; AttribItem[] btAbItems = null; if (p.typeFlag == 0) { btmname = p.typeName; btAbItems = BtmProvider.getInstance() .getBtAbItems(btmname); } else if (p.typeFlag == 1) { try { LinkType linkType = LinkTypeProvider.getInstance().getLinkTypeByName(p.typeName); btmname = linkType.name; btAbItems = ApProvider.getInstance().getAttribItemsByNames(LinkTypeProvider.getInstance().getAbNames(linkType)); } catch (Exception e) { e.printStackTrace(); } catch (Throwable e) { e.printStackTrace(); } } readcell = readrow.getCell(5); String attrValue = readcell .getStringCellValue(); String[] split = attrValue.split(","); for (String name : split) { boolean flag = false; for (AttribItem ait : btAbItems) { if (ait.name.equals(name)) { flag = true; break; } } if (!checkAttr.toString().contains(btmname)) { checkAttr.append("\n\t" + btmname) .append(":"); } if (!flag && !checkAttr.toString().contains( name)) { checkAttr.append(name).append(","); } } portalViInfos = UITools.getService() .getPortalVIArrayByTypeName(btmname); for (PortalVI pvi : portalViInfos) { if (!checkPortalVI.toString().contains( btmname)) { checkPortalVI.append("\n\t" + btmname) .append(":"); } if (pvi.viName.equals(p.viName)) { checkPortalVI.append(pvi.viName) .append(","); } } portalVIList.add(p); QTInfo qt = new QTInfo(); readcell = readrow.getCell(6); if (readcell != null && !"".equals(readcell)) { String qtName = readcell .getStringCellValue(); qt.qtName = qtName; readcell = readrow.getCell(7); String qtText = readcell .getStringCellValue(); FileInputStream qtprmFile = new FileInputStream( filePath + "." + qtText); BufferedReader qtbr = new BufferedReader( new InputStreamReader(qtprmFile, "UTF-8")); // "UTF-8" StringBuilder qtsb = new StringBuilder(); String qtStrContent; while ((qtStrContent = qtbr.readLine()) != null) { qtsb.append(qtStrContent) .append("\r\n"); } qtText = qtsb.toString(); qt.qtText = qtText; readcell = readrow.getCell(8); String qtBtmName = readcell .getStringCellValue(); qt.btmName = qtBtmName; QTInfo qt2 = ServiceProvider.getOMDService().getQTDService() .getQT(qt.qtName); if (qt2 == null) { ServiceProvider.getOMDService().getQTDService().saveQT(qt); } } } } } } /* * for(int * qtdindex=0;qtdindex<=qtdsheet.getLastRowNum();qtdindex++){ * QTD qtd = new QTD(); HSSFRow readrow = * qtdsheet.getRow(qtdindex); if(readrow==null){ break; } * HSSFCell cell = readrow.getCell(0); qtd.btmName = * cell.getStringCellValue(); cell = readrow.getCell(1); * qtd.linkTypeName = cell.getStringCellValue(); cell = * readrow.getCell(2); qtd.name = cell.getStringCellValue(); * cell = readrow.getCell(3); String attrValue = * cell.getStringCellValue(); String[] split = * attrValue.split(","); qtd.abNames = split; QTD qtdByName = * ServiceProvider.getOMDService().getQTDService().getQTDByName(qtd.name); * if(qtdByName==null){ ServiceProvider.getOMDService().getQTDService().addQTD(qtd); } } */ if (checkPortalVI.length() > 0) { // VCIOptionPane.showMessage(LogonApplication.frame, // checkPortalVI.toString()+"名称已经存在!"); MessageDialog msgdia = new MessageDialog( checkPortalVI.toString() + "名称已经存在!"); return false; } if (checkInObj.length() > 0) { MessageDialog msgdia = new MessageDialog( checkInObj.toString() + "表单不存在!"); return false; } if (checkAttr.length() > 0) { // VCIOptionPane.showMessage(LogonApplication.frame, // checkAttr.toString()+"属性不存在!"); MessageDialog msgdia = new MessageDialog( checkAttr.toString() + "属性不存在!"); return false; } // save portalVi for (PortalVI pvi : portalVIList) { UITools.getService().savePortalVI(pvi); System.out.println(""); } return true; } catch (IOException e) { e.printStackTrace(); return false; } catch (VCIError e) { e.printStackTrace(); return false; } } catch (FileNotFoundException e) { e.printStackTrace(); return false; } } }