Search in sources :

Example 1 with AutomaticQATrigger

use of net.heartsome.cat.ts.ui.xliffeditor.nattable.qa.AutomaticQATrigger in project translationstudio8 by heartsome.

the class NattableUtil method addSelectSegmentToTM.

/**
	 * 添加选中文本段到记忆库
	 * @param modelBean
	 *            数据库元数据
	 * @return boolean true : 完成入库 false 不完成入库
	 */
public boolean addSelectSegmentToTM() {
    List<String> selectedRowIds = xliffEditor.getSelectedRowIds();
    if (selectedRowIds.size() == 0) {
        return false;
    }
    final Map<String, List<String>> tmpGroup = RowIdUtil.groupRowIdByFileName(selectedRowIds);
    boolean hasEmpty = false;
    XLFHandler handler = xliffEditor.getXLFHandler();
    for (Entry<String, List<String>> entry : tmpGroup.entrySet()) {
        // 目标文本为空不添加到记忆库
        List<String> rowIds = entry.getValue();
        int size = rowIds.size();
        handler.removeNullTgtContentRowId(rowIds);
        if (rowIds.size() != size) {
            hasEmpty = true;
        }
        handler.removeLockedRowIds(rowIds);
    }
    // 入库前进行品质检查 --robert
    final AutomaticQATrigger auto = new AutomaticQATrigger(xliffEditor.getXLFHandler());
    int i = 0;
    for (Entry<String, List<String>> entry : tmpGroup.entrySet()) {
        List<String> rowIdList = tmpGroup.get(entry.getKey());
        for (Iterator<String> it = rowIdList.iterator(); it.hasNext(); ) {
            String rowId = it.next();
            String result = auto.beginAutoQa(true, rowId, i == 0 ? true : false);
            if (result == null) {
                return false;
            }
            if (result.length() > 1) {
                boolean respons = MessageDialog.openConfirm(xliffEditor.getTable().getShell(), Messages.getString("utils.NattableUtil.msgTitle3"), result);
                // 若选择ok,则继续操作
                if (!respons) {
                    auto.bringQAResultViewerToTop();
                    it.remove();
                    selectedRowIds.remove(rowId);
                }
            }
            i++;
        }
    }
    auto.informQAEndFlag();
    if (selectedRowIds.size() <= 0) {
        return false;
    }
    String message = null;
    if (hasEmpty) {
        message = Messages.getString("utils.NattableUtil.msg1");
    }
    if (message != null) {
        if (!MessageDialog.openConfirm(xliffEditor.getTable().getShell(), Messages.getString("utils.NattableUtil.msgTitle"), message)) {
            return false;
        }
    }
    final ArrayList<String> lstRowId = new ArrayList<String>();
    final IProject project = ((FileEditorInput) (xliffEditor.getEditorInput())).getFile().getProject();
    this.importer.setProject(project);
    final int contextSize = importer.getContextSize();
    // IRunnableWithProgress runnable = new IRunnableWithProgress() {
    // public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
    BusyIndicator.showWhile(xliffEditor.getSite().getShell().getDisplay(), new Runnable() {

        public void run() {
            // monitor.beginTask(Messages.getString("utils.NattableUtil.task5"), 2);
            if (!CommonFunction.checkEdition("L")) {
                if (!importer.checkImporter() && ProjectConfigerFactory.getProjectConfiger(project).getDefaultTMDb() != null) {
                    final boolean[] state = new boolean[] { true };
                    Display.getDefault().syncExec(new Runnable() {

                        public void run() {
                            state[0] = MessageDialog.openConfirm(Display.getDefault().getActiveShell(), Messages.getString("utils.NattableUtil.msgTitle2"), Messages.getString("utils.NattableUtil.msg.cantConnDefaultDb"));
                        }
                    });
                    if (!state[0]) {
                        return;
                    }
                }
            }
            for (Entry<String, List<String>> entry : tmpGroup.entrySet()) {
                List<String> rowIdList = tmpGroup.get(entry.getKey());
                if (importer.checkImporter()) {
                    String systemUser = Activator.getDefault().getPreferenceStore().getString(IPreferenceConstants.SYSTEM_USER);
                    StringBuffer fileContent = xliffEditor.getXLFHandler().generateTMXFileContent(systemUser, rowIdList, xliffEditor.getSrcColumnName(), xliffEditor.getTgtColumnName(), /* new SubProgressMonitor(monitor, 1) */
                    null, contextSize, project);
                    // }
                    if (fileContent != null) {
                        int state = -1;
                        try {
                            state = importer.executeImport(fileContent.toString(), xliffEditor.getSrcColumnName(), /* monitor */
                            null);
                        } catch (ImportException e) {
                            final String msg = e.getMessage();
                            Display.getDefault().syncExec(new Runnable() {

                                public void run() {
                                    MessageDialog.openInformation(Display.getDefault().getActiveShell(), Messages.getString("utils.NattableUtil.msgTitle"), msg);
                                }
                            });
                            return;
                        }
                        if (state == ITmImporter.IMPORT_STATE_FAILED) {
                            Display.getDefault().syncExec(new Runnable() {

                                public void run() {
                                    MessageDialog.openInformation(xliffEditor.getTable().getShell(), Messages.getString("utils.NattableUtil.msgTitle"), Messages.getString("utils.NattableUtil.msg6"));
                                }
                            });
                            return;
                        } else if (state == ITmImporter.IMPORT_STATE_NODB) {
                            Display.getDefault().syncExec(new Runnable() {

                                public void run() {
                                    MessageDialog.openInformation(xliffEditor.getTable().getShell(), Messages.getString("utils.NattableUtil.msgTitle"), Messages.getString("utils.NattableUtil.msg7"));
                                }
                            });
                        }
                    }
                }
                // Bug #2306:文本段添加不入库标记后不能改变为完成翻译状态
                lstRowId.addAll(rowIdList);
            }
            Display.getDefault().asyncExec(new Runnable() {

                public void run() {
                    changeTgtState(lstRowId, "translated");
                // xliffEditor.updateStatusLine();
                }
            });
        // monitor.done();
        }
    });
    // }
    return true;
}
Also used : ArrayList(java.util.ArrayList) IProject(org.eclipse.core.resources.IProject) ImportException(net.heartsome.cat.common.core.exception.ImportException) AutomaticQATrigger(net.heartsome.cat.ts.ui.xliffeditor.nattable.qa.AutomaticQATrigger) Entry(java.util.Map.Entry) List(java.util.List) ArrayList(java.util.ArrayList) XLFHandler(net.heartsome.cat.ts.core.file.XLFHandler)

Example 2 with AutomaticQATrigger

use of net.heartsome.cat.ts.ui.xliffeditor.nattable.qa.AutomaticQATrigger in project translationstudio8 by heartsome.

the class NattableUtil method approveTransUnits.

/**
	 * 批准或取消批准文本段
	 * @param selectedRowIds1
	 *            选中行的rowId集合
	 * @param approve
	 *            true:批准;false:取消批准;
	 */
public void approveTransUnits(boolean isJumpNext) {
    List<String> selectedRowIds = xliffEditor.getSelectedRowIds();
    if (selectedRowIds.size() == 0) {
        return;
    }
    final Map<String, List<String>> tmpGroup = RowIdUtil.groupRowIdByFileName(selectedRowIds);
    boolean hasEmpty = false;
    XLFHandler handler = xliffEditor.getXLFHandler();
    for (Entry<String, List<String>> entry : tmpGroup.entrySet()) {
        // 目标文本为空不能执行批准,将要跳过
        List<String> rowIds = entry.getValue();
        int size = rowIds.size();
        handler.removeNullTgtContentRowId(rowIds);
        if (rowIds.size() != size) {
            hasEmpty = true;
        }
        handler.removeLockedRowIds(rowIds);
    }
    // 入库前进行品质检查 --robert
    int i = 0;
    final AutomaticQATrigger auto = new AutomaticQATrigger(xliffEditor.getXLFHandler());
    for (Entry<String, List<String>> entry : tmpGroup.entrySet()) {
        List<String> rowIdList = tmpGroup.get(entry.getKey());
        for (Iterator<String> it = rowIdList.iterator(); it.hasNext(); ) {
            String rowId = it.next();
            String result = auto.beginAutoQa(false, rowId, i == 0 ? true : false);
            if (result == null) {
                return;
            }
            if (result.length() > 1) {
                boolean respons = MessageDialog.openConfirm(xliffEditor.getSite().getShell(), Messages.getString("translation.ApproveSegmentHandler.msgTitle"), result);
                // 若选择ok,则继续操作
                if (!respons) {
                    auto.bringQAResultViewerToTop();
                    it.remove();
                    selectedRowIds.remove(rowId);
                }
            }
            i++;
        }
    }
    auto.informQAEndFlag();
    String message = null;
    if (hasEmpty) {
        message = Messages.getString("utils.NattableUtil.msg1");
    }
    if (message != null) {
        if (!MessageDialog.openConfirm(xliffEditor.getTable().getShell(), Messages.getString("utils.NattableUtil.msgTitle"), message)) {
            return;
        }
    }
    if (selectedRowIds.size() == 0) {
        return;
    }
    HsMultiActiveCellEditor.commit(true);
    // 将选中的文本段添加记忆库,在生成TMX的过程中会过滤掉标记不添加到记忆库的文本段
    final IProject project = ((FileEditorInput) (xliffEditor.getEditorInput())).getFile().getProject();
    this.importer.setProject(project);
    final int contextSize = importer.getContextSize();
    BusyIndicator.showWhile(xliffEditor.getSite().getShell().getDisplay(), new Runnable() {

        public void run() {
            // monitor.beginTask(Messages.getString("utils.NattableUtil.task1"), 8);
            if (!CommonFunction.checkEdition("L")) {
                if (!importer.checkImporter() && ProjectConfigerFactory.getProjectConfiger(project).getDefaultTMDb() != null) {
                    final boolean[] state = new boolean[] { true };
                    Display.getDefault().syncExec(new Runnable() {

                        public void run() {
                            state[0] = MessageDialog.openConfirm(Display.getDefault().getActiveShell(), Messages.getString("utils.NattableUtil.msgTitle2"), Messages.getString("utils.NattableUtil.msg.cantConnDefaultDb"));
                        }
                    });
                    if (!state[0]) {
                        return;
                    }
                }
            }
            final List<String> addToTmResultRowIds = new ArrayList<String>();
            for (Entry<String, List<String>> entry : tmpGroup.entrySet()) {
                List<String> rowIdList = tmpGroup.get(entry.getKey());
                if (importer.checkImporter()) {
                    String systemUser = Activator.getDefault().getPreferenceStore().getString(IPreferenceConstants.SYSTEM_USER);
                    StringBuffer fileContent = xliffEditor.getXLFHandler().generateTMXFileContent(systemUser, rowIdList, xliffEditor.getSrcColumnName(), xliffEditor.getTgtColumnName(), /* new SubProgressMonitor(monitor, 3) */
                    null, contextSize, project);
                    // }
                    if (fileContent != null) {
                        int state = -1;
                        try {
                            state = importer.executeImport(fileContent.toString(), xliffEditor.getSrcColumnName(), /* monitor */
                            null);
                        } catch (ImportException e) {
                            final String msg = e.getMessage();
                            Display.getDefault().syncExec(new Runnable() {

                                public void run() {
                                    MessageDialog.openInformation(Display.getDefault().getActiveShell(), Messages.getString("utils.NattableUtil.msgTitle"), msg);
                                }
                            });
                            return;
                        }
                        if (state == ITmImporter.IMPORT_STATE_FAILED) {
                            Display.getDefault().syncExec(new Runnable() {

                                public void run() {
                                    MessageDialog.openInformation(Display.getDefault().getActiveShell(), Messages.getString("utils.NattableUtil.msgTitle"), Messages.getString("utils.NattableUtil.msg2"));
                                }
                            });
                            return;
                        } else if (state == ITmImporter.IMPORT_STATE_NODB) {
                            Display.getDefault().syncExec(new Runnable() {

                                public void run() {
                                    MessageDialog.openInformation(Display.getCurrent().getActiveShell(), Messages.getString("utils.NattableUtil.msgTitle"), Messages.getString("utils.NattableUtil.msg3"));
                                }
                            });
                        }
                    }
                }
                addToTmResultRowIds.addAll(rowIdList);
            }
            // monitor.setTaskName(Messages.getString("utils.NattableUtil.task2"));
            Display.getDefault().syncExec(new Runnable() {

                public void run() {
                    // 修改文本段状态,目前没有取消批准的功能,所以直接传入true,即所有的操作都是批准
                    List<String> rowIds = xliffEditor.getXLFHandler().approveTransUnits(addToTmResultRowIds, true);
                    if (rowIds.size() > 0) {
                        String message;
                        if (addToTmResultRowIds != null && addToTmResultRowIds.size() == 1) {
                            message = Messages.getString("utils.NattableUtil.msg4");
                        } else {
                            message = MessageFormat.format(Messages.getString("utils.NattableUtil.msg5"), rowIds.size());
                        }
                        boolean res = MessageDialog.openQuestion(xliffEditor.getTable().getShell(), null, message);
                        if (res) {
                            xliffEditor.getXLFHandler().approveTransUnits(rowIds, true, false);
                        }
                    }
                    xliffEditor.updateStatusLine();
                    xliffEditor.getTable().redraw();
                }
            });
        // monitor.worked(2);
        // if (monitor.isCanceled()) {
        // return;
        // }
        //
        // // 批准时需要进行繁殖翻译
        // // propagateTranslations(addToTmResultRowIds, new
        // // SubProgressMonitor(monitor, 2));
        // monitor.done();
        }
    });
    // runnable);
    if (isJumpNext) {
        int[] selectedRows = xliffEditor.getSelectedRows();
        Arrays.sort(selectedRows);
        xliffEditor.jumpToRow(selectedRows[selectedRows.length - 1] + 1);
    } else {
        IViewPart viewPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("net.heartsome.cat.ts.ui.translation.view.matchview");
        int[] selected = xliffEditor.getSelectedRows();
        if (viewPart != null && viewPart instanceof IMatchViewPart && selected.length != 0) {
            ((IMatchViewPart) viewPart).reLoadMatches(xliffEditor, selected[selected.length - 1]);
        }
        HsMultiCellEditorControl.activeSourceAndTargetCell(xliffEditor);
    }
// } catch (InvocationTargetException e) {
// e.printStackTrace();
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
}
Also used : IViewPart(org.eclipse.ui.IViewPart) IProject(org.eclipse.core.resources.IProject) ImportException(net.heartsome.cat.common.core.exception.ImportException) AutomaticQATrigger(net.heartsome.cat.ts.ui.xliffeditor.nattable.qa.AutomaticQATrigger) Entry(java.util.Map.Entry) List(java.util.List) ArrayList(java.util.ArrayList) XLFHandler(net.heartsome.cat.ts.core.file.XLFHandler) IMatchViewPart(net.heartsome.cat.ts.ui.view.IMatchViewPart)

Aggregations

ArrayList (java.util.ArrayList)2 List (java.util.List)2 Entry (java.util.Map.Entry)2 ImportException (net.heartsome.cat.common.core.exception.ImportException)2 XLFHandler (net.heartsome.cat.ts.core.file.XLFHandler)2 AutomaticQATrigger (net.heartsome.cat.ts.ui.xliffeditor.nattable.qa.AutomaticQATrigger)2 IProject (org.eclipse.core.resources.IProject)2 IMatchViewPart (net.heartsome.cat.ts.ui.view.IMatchViewPart)1 IViewPart (org.eclipse.ui.IViewPart)1