public Map<String, String> run(Map<String, String> params, IProgressMonitor monitor) throws ConverterException { monitor = Progress.getMonitor(monitor); IProgressMonitor subMonitor = null; // 把转换过程分为两大部分共 10 个任务,其中加载 xliff 文件占 4,替换过程占 6。 monitor.beginTask("Converting...", 10); Map<String, String> result = new HashMap<String, String>(); String sklFile = params.get(Converter.ATTR_SKELETON_FILE); String xliffFile = params.get(Converter.ATTR_XLIFF_FILE); encoding = params.get(Converter.ATTR_SOURCE_ENCODING); outputFile = params.get(Converter.ATTR_TARGET_FILE); try { // 先将骨架文件的内容拷贝到目标文件,再解析目标文件 copyFile(sklFile, outputFile); parseOutputFile(outputFile, xliffFile); parseXlfFile(xliffFile); if (monitor.isCanceled()) { throw new OperationCanceledException(); } monitor.worked(1); subMonitor = new SubProgressMonitor(monitor, 9); ananysisXlfTU(subMonitor); subMonitor.done(); // 生成批注节点 createComments(); outputXM.output(outputFile); } catch (Exception e) { e.printStackTrace(); String errorTip = "XLIFF 转换成 trados 2009 双语文件失败!" + "\n" + e.getMessage(); ConverterUtils.throwConverterException(Activator.PLUGIN_ID, errorTip, e); } finally { if (subMonitor != null) { subMonitor.done(); } monitor.done(); } return result; }
/** * Run. * * @param args the args * @param monitor the monitor * @return the map< string, string> * @throws ConverterException the converter exception */ public Map<String, String> run(Map<String, String> args, IProgressMonitor monitor) throws ConverterException { monitor = Progress.getMonitor(monitor); ReverseConversionInfoLogRecord infoLogger = ConverterUtils.getReverseConversionInfoLogRecord(); infoLogger.startConversion(); Map<String, String> result = new HashMap<String, String>(); String backfile = args.get(Converter.ATTR_TARGET_FILE); String middleBackfile = MSOffice2Xliff.getOutputFilePath(backfile); // 先转换成ODT,ODS,ODP等文件,然后在转换成DOC,XLS,PPT args.put(Converter.ATTR_TARGET_FILE, middleBackfile); try { // 把转换过程分为三部分共 10 个任,其中委派其它转换的操作占 4,检测 Open Office Service 是否可用占 2,调用 Open Office Service // 进行的操作占 4。 monitor.beginTask(Messages.getString("msoffice2003.Xliff2MSOffice.task1"), 10); long startTime = 0; if (isInfoEnabled) { startTime = System.currentTimeMillis(); LOGGER.info(Messages.getString("msoffice2003.Xliff2MSOffice.logger1"), startTime); } result = dependantConverter.convert(args, Progress.getSubMonitor(monitor, 4)); long endTime = System.currentTimeMillis(); if (isInfoEnabled) { LOGGER.info(Messages.getString("msoffice2003.Xliff2MSOffice.logger2"), endTime); LOGGER.info( Messages.getString("msoffice2003.Xliff2MSOffice.logger3"), endTime - startTime); } // 是否取消操作 if (monitor.isCanceled()) { throw new OperationCanceledException(Messages.getString("msoffice2003.cancel")); } monitor.subTask(Messages.getString("msoffice2003.Xliff2MSOffice.task2")); if (isInfoEnabled) { startTime = System.currentTimeMillis(); LOGGER.info(Messages.getString("msoffice2003.Xliff2MSOffice.logger4"), startTime); } File backup = new File(backfile); File middleFile = new File(middleBackfile); boolean openbyuser = DetectOORunning.isRunning(); // 判断是否手动启动 boolean configration = false; Hashtable<String, String> ooParams = new Hashtable<String, String>(); ooParams.put("ooPath", args.get("ooPath")); ooParams.put("port", args.get("ooPort")); StartupOO startupoo = new StartupOO(ooParams); configration = startupoo.detectConfOO(); if (!configration) { ConverterUtils.throwConverterException( Activator.PLUGIN_ID, Messages.getString("msoffice2003.Xliff2MSOffice.msg1")); } if (isInfoEnabled) { endTime = System.currentTimeMillis(); LOGGER.info(Messages.getString("msoffice2003.Xliff2MSOffice.logger5"), endTime); LOGGER.info( Messages.getString("msoffice2003.Xliff2MSOffice.logger6"), endTime - startTime); } monitor.worked(2); // 是否取消操作 monitor.subTask(Messages.getString("msoffice2003.Xliff2MSOffice.task3")); if (isInfoEnabled) { startTime = System.currentTimeMillis(); LOGGER.info(Messages.getString("msoffice2003.Xliff2MSOffice.logger7"), startTime); } MS2OOConverter ms2ooConverter = new MS2OOConverter(ooParams); try { ms2ooConverter.startconvert(middleFile, backup, openbyuser); } catch (Exception e) { if (Converter.DEBUG_MODE) { e.printStackTrace(); } try { openbyuser = false; ms2ooConverter.startconvert(middleFile, backup, openbyuser); } catch (Exception e1) { if (Converter.DEBUG_MODE) { e1.printStackTrace(); } if (!openbyuser) { CloseOOconnection.closeService(ms2ooConverter.getPort()); } ConverterUtils.throwConverterException( Activator.PLUGIN_ID, Messages.getString("msoffice2003.Xliff2MSOffice.msg2"), e); } } middleFile.delete(); if (isInfoEnabled) { endTime = System.currentTimeMillis(); LOGGER.info(Messages.getString("msoffice2003.Xliff2MSOffice.logger8"), endTime); LOGGER.info( Messages.getString("msoffice2003.Xliff2MSOffice.logger9"), endTime - startTime); } monitor.worked(4); } catch (OperationCanceledException e) { throw e; } catch (ConverterException e) { throw e; } catch (Exception e) { ConverterUtils.throwConverterException( Activator.PLUGIN_ID, Messages.getString("msoffice2003.Xliff2MSOffice.msg2"), e); } finally { monitor.done(); } result.put(Converter.ATTR_TARGET_FILE, backfile); infoLogger.endConversion(); return result; }