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));
}
}
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;
}
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;
}
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;
}
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();
}
});
}
Aggregations