Search in sources :

Example 1 with MatchResult

use of org.apache.oro.text.regex.MatchResult in project otter by alibaba.

the class ConfigHelper method parseMode.

/**
     * 解析DataMedia中的namespace和name,支持offer[1-128]分库的定义
     */
public static ModeValue parseMode(String value) {
    PatternMatcher matcher = new Perl5Matcher();
    if (matcher.matches(value, patterns.get(MODE_PATTERN))) {
        MatchResult matchResult = matcher.getMatch();
        String prefix = matchResult.group(1);
        String startStr = matchResult.group(3);
        String ednStr = matchResult.group(4);
        int start = Integer.valueOf(startStr);
        int end = Integer.valueOf(ednStr);
        String postfix = matchResult.group(5);
        List<String> values = new ArrayList<String>();
        for (int i = start; i <= end; i++) {
            StringBuilder builder = new StringBuilder(value.length());
            String str = String.valueOf(i);
            // 处理0001类型
            if (startStr.length() == ednStr.length() && startStr.startsWith("0")) {
                str = StringUtils.leftPad(String.valueOf(i), startStr.length(), '0');
            }
            builder.append(prefix).append(str).append(postfix);
            values.add(builder.toString());
        }
        return new ModeValue(Mode.MULTI, values);
    } else if (isWildCard(value)) {
        // 通配符支持
        return new ModeValue(Mode.WILDCARD, Arrays.asList(value));
    } else {
        return new ModeValue(Mode.SINGLE, Arrays.asList(value));
    }
}
Also used : ModeValue(com.alibaba.otter.shared.common.model.config.data.DataMedia.ModeValue) ArrayList(java.util.ArrayList) Perl5Matcher(org.apache.oro.text.regex.Perl5Matcher) PatternMatcher(org.apache.oro.text.regex.PatternMatcher) MatchResult(org.apache.oro.text.regex.MatchResult)

Example 2 with MatchResult

use of org.apache.oro.text.regex.MatchResult in project tdi-studio-se by Talend.

the class MapExpressionParser method parseInTableEntryLocations2.

/**
     * 
     * DOC parse to talbename and column map
     * 
     * @param expression
     * @return
     */
public List<Map<String, String>> parseInTableEntryLocations2(String expression) {
    List<Map<String, String>> result = new ArrayList<Map<String, String>>();
    if (expression != null) {
        matcher.setMultiline(true);
        if (patternMatcherInput == null) {
            patternMatcherInput = new PatternMatcherInput(expression);
        } else {
            patternMatcherInput.setInput(expression);
        }
        recompilePatternIfNecessary(locationPattern);
        while (matcher.contains(patternMatcherInput, pattern)) {
            MatchResult matchResult = matcher.getMatch();
            Map<String, String> map = new HashMap<String, String>();
            String group1 = matchResult.group(1);
            if (group1 != null && !"".equals(group1) && matchResult.group(matchResult.groups() - 1) != null) {
                map.put(matchResult.group(matchResult.groups() - 1).trim(), group1.substring(0, group1.length() - 1).trim());
            } else {
                String string = matchResult.toString();
                int lastIndexOf = string.lastIndexOf(".");
                if (lastIndexOf != -1) {
                    map.put(string.substring(lastIndexOf + 1, string.length()).trim(), string.substring(0, lastIndexOf).trim());
                }
            }
            result.add(map);
        }
    }
    return result;
}
Also used : PatternMatcherInput(org.apache.oro.text.regex.PatternMatcherInput) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) HashMap(java.util.HashMap) Map(java.util.Map) MatchResult(org.apache.oro.text.regex.MatchResult)

Example 3 with MatchResult

use of org.apache.oro.text.regex.MatchResult in project tdi-studio-se by Talend.

the class WebServiceExpressionParser method parseOutTableEntryLocations.

public Set<String> parseOutTableEntryLocations(String expression) {
    Set<String> set = new HashSet<String>();
    if (expression != null) {
        matcher.setMultiline(true);
        if (patternMatcherInput == null) {
            patternMatcherInput = new PatternMatcherInput(expression);
        } else {
            patternMatcherInput.setInput(expression);
        }
        recompilePatternIfNecessary(locationPattern);
        while (matcher.contains(patternMatcherInput, pattern)) {
            MatchResult matchResult = matcher.getMatch();
            String columnName = matchResult.group(0);
            set.add(columnName);
        }
    }
    return set;
}
Also used : PatternMatcherInput(org.apache.oro.text.regex.PatternMatcherInput) MatchResult(org.apache.oro.text.regex.MatchResult) HashSet(java.util.HashSet)

Example 4 with MatchResult

use of org.apache.oro.text.regex.MatchResult in project tdi-studio-se by Talend.

the class XmlMapExpressionManager method parseTableEntryLocation.

public List<TableEntryLocation> parseTableEntryLocation(String expression) {
    List<TableEntryLocation> locations = new ArrayList<TableEntryLocation>();
    recompilePatternIfNecessary(EXPRESSION_PATTERN);
    patternMatcherInput = new PatternMatcherInput(expression);
    while (matcher.contains(patternMatcherInput, pattern)) {
        MatchResult matchResult = matcher.getMatch();
        if (matchResult.group(1) != null) {
            TableEntryLocation location = new TableEntryLocation(matchResult.group(1), matchResult.group(2), matchResult.group(3), matchResult.group(6));
            locations.add(location);
        } else if (matchResult.group(matchResult.groups() - 1) != null) {
            TableEntryLocation location = new TableEntryLocation(matchResult.group(matchResult.groups() - 2), matchResult.group(matchResult.groups() - 1));
            locations.add(location);
        }
    }
    return locations;
}
Also used : PatternMatcherInput(org.apache.oro.text.regex.PatternMatcherInput) ArrayList(java.util.ArrayList) MatchResult(org.apache.oro.text.regex.MatchResult)

Example 5 with MatchResult

use of org.apache.oro.text.regex.MatchResult in project tdi-studio-se by Talend.

the class JSONFileStep1Form method addFieldsListeners.

/**
     * Main Fields addControls.
     */
@Override
protected void addFieldsListeners() {
    // fileFieldXsd : Event modifyText
    // fileFieldXsd.addModifyListener(new ModifyListener() {
    //
    // public void modifyText(final ModifyEvent e) {
    // getConnection().setXsdFilePath(fileFieldXsd.getText());
    // treePopulator.populateTree(fileFieldXsd.getText(), treeNode);
    // checkFieldsValue();
    // }
    // });
    // fileFieldJSON.addSelectionListener(new SelectionListener() {
    //
    // public void widgetSelected(SelectionEvent event) {
    // if (fileFieldJSON.getResult() == null) {
    // return;
    // }
    // String text = fileFieldJSON.getText();
    // if (isContextMode()) {
    // ContextType contextType = ConnectionContextHelper.getContextTypeForContextMode(
    // connectionItem.getConnection(), true);
    // text = TalendQuoteUtils.removeQuotes(ConnectionContextHelper.getOriginalValue(contextType, text));
    // }
    // // getConnection().setJSONFilePath(PathUtils.getPortablePath(JSONXsdFilePath.getText()));
    // File file = new File(text);
    // if (file.exists()) {
    // if (file.exists()) {
    // String tempxml = JSONUtil.changeJsonToXml(text);
    // JSONFileStep1Form.this.wizard.setTempJsonPath(tempxml);
    // valid = treePopulator.populateTree(tempxml, treeNode);
    // }
    // // add for bug TDI-20432
    // checkFieldsValue();
    // }
    //
    // }
    //
    // public void widgetDefaultSelected(SelectionEvent e) {
    //
    // }
    // });
    readbyCombo.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(ModifyEvent e) {
            EJsonReadbyMode eJsonReadbyMode = EJsonReadbyMode.getEJsonReadbyModeByDisplayName(readbyCombo.getText());
            if (eJsonReadbyMode == null) {
                eJsonReadbyMode = getDefaultJsonReadbyMode();
            }
            String readbyMode = eJsonReadbyMode.getValue();
            JSONFileStep1Form.this.wizard.setReadbyMode(readbyMode);
            String jsonPath = fileFieldJSON.getText();
            String text = validateJsonFilePath(jsonPath);
            if (text == null || text.isEmpty()) {
                return;
            }
            String tempxml = null;
            if (EJsonReadbyMode.JSONPATH.getValue().equals(readbyMode)) {
                tempxml = text;
            } else {
                tempxml = JSONUtil.changeJsonToXml(text);
            }
            JSONFileStep1Form.this.wizard.setTempJsonPath(tempxml);
            switchPopulator(readbyMode, tempxml);
        }
    });
    // fileFieldJSON : Event modifyText
    fileFieldJSON.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(final ModifyEvent e) {
            String jsonPath = fileFieldJSON.getText();
            String _jsonPath = jsonPath;
            if (isContextMode()) {
                ContextType contextType = ConnectionContextHelper.getContextTypeForContextMode(connectionItem.getConnection(), connectionItem.getConnection().getContextName());
                jsonPath = TalendQuoteUtils.removeQuotes(ConnectionContextHelper.getOriginalValue(contextType, jsonPath));
            }
            String text = validateJsonFilePath(jsonPath);
            if (text == null || text.isEmpty()) {
                return;
            }
            String tempxml = null;
            String readbyMode = JSONFileStep1Form.this.wizard.getReadbyMode();
            if (EJsonReadbyMode.JSONPATH.getValue().equals(readbyMode)) {
                tempxml = text;
            } else {
                tempxml = JSONUtil.changeJsonToXml(text);
            }
            File file = new File(text);
            if (!file.exists()) {
                file = new File(JSONUtil.tempJSONXsdPath);
            }
            JSONFileStep1Form.this.wizard.setTempJsonPath(tempxml);
            String limitString = commonNodesLimitation.getText();
            try {
                limit = Integer.valueOf(limitString);
                labelLimitation.setToolTipText(MessageFormat.format(Messages.JSONLimitToolTip, limit));
            } catch (Exception excpt) {
            // nothing need to do
            }
            switchPopulator(readbyMode, tempxml);
            // }
            // add for bug TDI-20432
            checkFieldsValue();
            if (getConnection().getJSONFilePath() != null && !getConnection().getJSONFilePath().equals(text)) {
                getConnection().getLoop().clear();
                xsdPathChanged = true;
            } else {
                xsdPathChanged = false;
            }
            if (isContextMode()) {
                jsonPath = _jsonPath;
            }
            if (Path.fromOSString(jsonPath).toFile().isFile()) {
                getConnection().setJSONFilePath(PathUtils.getPortablePath(jsonPath));
            } else {
                getConnection().setJSONFilePath(jsonPath);
            }
            JSONWizard wizard = ((JSONWizard) getPage().getWizard());
            wizard.setTreeRootNode(treeNode);
            BufferedReader in = null;
            try {
                Charset guessedCharset = CharsetToolkit.guessEncoding(file, 4096);
                String str;
                in = new BufferedReader(new InputStreamReader(new FileInputStream(file), guessedCharset.displayName()));
                while ((str = in.readLine()) != null) {
                    if (str.contains("encoding")) {
                        //$NON-NLS-1$
                        //$NON-NLS-1$
                        String regex = "^<\\?JSON\\s*version=\\\"[^\\\"]*\\\"\\s*encoding=\\\"([^\\\"]*)\\\"\\?>$";
                        Perl5Compiler compiler = new Perl5Compiler();
                        Perl5Matcher matcher = new Perl5Matcher();
                        Pattern pattern = null;
                        try {
                            pattern = compiler.compile(regex);
                            if (matcher.contains(str, pattern)) {
                                MatchResult matchResult = matcher.getMatch();
                                if (matchResult != null) {
                                    encoding = matchResult.group(1);
                                }
                            }
                        } catch (MalformedPatternException malE) {
                            ExceptionHandler.process(malE);
                        }
                    }
                }
            } catch (Exception ex) {
                String fileStr = text;
                String msgError = //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
                "JSON" + " \"" + fileStr.replace("\\\\", "\\") + //$NON-NLS-1$
                "\"\n";
                if (ex instanceof FileNotFoundException) {
                    msgError = msgError + "is not found";
                } else if (ex instanceof EOFException) {
                    msgError = msgError + "have an incorrect character EOF";
                } else if (ex instanceof IOException) {
                    msgError = msgError + "is locked by another soft";
                } else {
                    msgError = msgError + "doesn't exist";
                }
                if (!isReadOnly()) {
                    updateStatus(IStatus.ERROR, msgError);
                }
            // ExceptionHandler.process(ex);
            } finally {
                try {
                    if (in != null) {
                        in.close();
                    }
                } catch (Exception ex2) {
                    ExceptionHandler.process(ex2);
                }
            }
            if (getConnection().getEncoding() == null || "".equals(getConnection().getEncoding())) {
                //$NON-NLS-1$
                getConnection().setEncoding(encoding);
                if (encoding != null && !("").equals(encoding)) {
                    //$NON-NLS-1$
                    encodingCombo.setText(encoding);
                } else {
                    //$NON-NLS-1$
                    encodingCombo.setText("UTF-8");
                }
            }
            // if (tempJSONXsdPath != null && getConnection().getFileContent() != null
            // && getConnection().getFileContent().length > 0 && !isModifing) {
            // valid = treePopulator.populateTree(tempJSONXsdPath, treeNode);
            // } else {
            // valid = treePopulator.populateTree(text, treeNode);
            // }
            checkFieldsValue();
            isModifing = true;
        }
    });
    // Event encodingCombo
    encodingCombo.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(final ModifyEvent e) {
            getConnection().setEncoding(encodingCombo.getText());
            checkFieldsValue();
        }
    });
}
Also used : ContextType(org.talend.designer.core.model.utils.emf.talendfile.ContextType) Perl5Compiler(org.apache.oro.text.regex.Perl5Compiler) Pattern(org.apache.oro.text.regex.Pattern) ModifyListener(org.eclipse.swt.events.ModifyListener) InputStreamReader(java.io.InputStreamReader) FileNotFoundException(java.io.FileNotFoundException) Charset(java.nio.charset.Charset) EJsonReadbyMode(org.talend.repository.ui.wizards.metadata.connection.files.json.EJsonReadbyMode) Perl5Matcher(org.apache.oro.text.regex.Perl5Matcher) IOException(java.io.IOException) MatchResult(org.apache.oro.text.regex.MatchResult) MalformedPatternException(org.apache.oro.text.regex.MalformedPatternException) EOFException(java.io.EOFException) FileNotFoundException(java.io.FileNotFoundException) BusinessException(org.talend.commons.exception.BusinessException) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException) PersistenceException(org.talend.commons.exception.PersistenceException) FileInputStream(java.io.FileInputStream) ModifyEvent(org.eclipse.swt.events.ModifyEvent) BufferedReader(java.io.BufferedReader) EOFException(java.io.EOFException) MalformedPatternException(org.apache.oro.text.regex.MalformedPatternException) File(java.io.File)

Aggregations

MatchResult (org.apache.oro.text.regex.MatchResult)25 PatternMatcherInput (org.apache.oro.text.regex.PatternMatcherInput)16 Perl5Matcher (org.apache.oro.text.regex.Perl5Matcher)15 Pattern (org.apache.oro.text.regex.Pattern)14 ArrayList (java.util.ArrayList)10 MalformedCachePatternException (org.apache.oro.text.MalformedCachePatternException)4 Perl5Compiler (org.apache.oro.text.regex.Perl5Compiler)4 MalformedURLException (java.net.MalformedURLException)3 HashMap (java.util.HashMap)3 SampleResult (org.apache.jmeter.samplers.SampleResult)3 MalformedPatternException (org.apache.oro.text.regex.MalformedPatternException)3 PatternMatcher (org.apache.oro.text.regex.PatternMatcher)3 BufferedReader (java.io.BufferedReader)2 EOFException (java.io.EOFException)2 File (java.io.File)2 FileInputStream (java.io.FileInputStream)2 FileNotFoundException (java.io.FileNotFoundException)2 IOException (java.io.IOException)2 InputStreamReader (java.io.InputStreamReader)2 Charset (java.nio.charset.Charset)2