use of orgomg.cwm.objectmodel.core.Expression in project tdq-studio-se by Talend.
the class ExportFactory method getRelatedValueFromPattern.
private static Map<PatternToExcelEnum, String> getRelatedValueFromPattern(Pattern pattern, IFolder folder) {
Map<PatternToExcelEnum, String> patternMap = new HashMap<PatternToExcelEnum, String>();
if (folder != null) {
IFile file = ResourceFileMap.findCorrespondingFile(pattern);
// MOD sizhaoliu 2012-5-28 TDQ-5481
URI parentURI = ResourceManager.getPatternFolder().getLocationURI();
String relativePath = parentURI.relativize(file.getParent().getLocationURI()).toString();
// remove Regex or SQL prefix
relativePath = relativePath.substring(relativePath.indexOf('/') + 1);
// MOD qiongli 2012-12-18 TDQ-5899, Replace relative path Regex/SQL with empty string.
if (EResourceConstant.PATTERN_REGEX.getName().equals(relativePath) || EResourceConstant.PATTERN_SQL.getName().equals(relativePath)) {
relativePath = PluginConstant.EMPTY_STRING;
}
// get the basic information
patternMap.put(PatternToExcelEnum.Label, pattern.getName());
patternMap.put(PatternToExcelEnum.Purpose, MetadataHelper.getPurpose(pattern));
patternMap.put(PatternToExcelEnum.Description, MetadataHelper.getDescription(pattern));
patternMap.put(PatternToExcelEnum.Author, MetadataHelper.getAuthor(pattern));
patternMap.put(PatternToExcelEnum.RelativePath, relativePath);
for (PatternLanguageType languagetype : PatternLanguageType.values()) {
for (PatternComponent component : pattern.getComponents()) {
Expression expression = ((RegularExpression) component).getExpression();
if (expression != null && expression.getLanguage().equalsIgnoreCase(languagetype.getLiteral())) {
patternMap.put(languagetype.getExcelEnum(), expression.getBody());
}
}
if (!patternMap.containsKey(languagetype.getExcelEnum())) {
// $NON-NLS-1$
patternMap.put(languagetype.getExcelEnum(), "");
}
}
}
return patternMap;
}
use of orgomg.cwm.objectmodel.core.Expression in project tdq-studio-se by Talend.
the class PatternLabelProvider method createIndicatorUnit.
/**
* DOC xqliu Comment method "createIndicatorUnit".
*
* @param pfile
* @param modelElementIndicator
* @param analysis
* @param indicatorDefinition
* @return
*/
public static TypedReturnCode<IndicatorUnit> createIndicatorUnit(Pattern pattern, ModelElementIndicator modelElementIndicator, Analysis analysis, IndicatorDefinition indicatorDefinition) {
TypedReturnCode<IndicatorUnit> result = new TypedReturnCode<IndicatorUnit>();
for (Indicator indicator : modelElementIndicator.getIndicators()) {
// MOD xwang 2011-08-01 bug TDQ-2730
if (UDIHelper.getMatchingIndicatorName(indicatorDefinition, pattern).equals(indicator.getName()) && indicator instanceof PatternMatchingIndicator) {
result.setOk(false);
// $NON-NLS-1$
result.setMessage(DefaultMessagesImpl.getString("PatternUtilities.Selected"));
return result;
}
// ~
}
// MOD scorreia 2009-01-06: when expression type is not set (version
// TOP-1.1.x), then it's supposed to be a
// regexp pattern. This could be false because expression type was not
// set into SQL pattern neither in TOP-1.1.
// This means that there could exist the need for a migration task to
// set the expression type depending on the
// folder where the pattern is stored. The method
// DomainHelper.getExpressionType(pattern) tries to find the type
// of pattern.
Indicator patternMatchingIndicator = null;
String expressionType = DomainHelper.getExpressionType(pattern);
boolean isSQLPattern = (ExpressionType.SQL_LIKE.getLiteral().equals(expressionType));
if (indicatorDefinition != null) {
patternMatchingIndicator = UDIFactory.createUserDefIndicator(indicatorDefinition, pattern);
} else {
patternMatchingIndicator = isSQLPattern ? PatternIndicatorFactory.createSqlPatternMatchingIndicator(pattern) : PatternIndicatorFactory.createRegexpMatchingIndicator(pattern);
}
IEditorPart theEdit = CorePlugin.getDefault().getCurrentActiveEditor();
if (theEdit != null && theEdit instanceof AnalysisEditor && analysis.getContext().getConnection() == null) {
theEdit.doSave(null);
}
ExecutionLanguage executionLanguage = analysis.getParameters().getExecutionLanguage();
DbmsLanguage dbmsLanguage = DbmsLanguageFactory.createDbmsLanguage(analysis);
if (dbmsLanguage.isSql()) {
// $NON-NLS-1$
MessageUI.openWarning(DefaultMessagesImpl.getString("PatternUtilities.ConnectionError"));
result.setOk(false);
return result;
}
boolean isJavaEngin = ExecutionLanguage.JAVA.equals(executionLanguage);
Expression returnExpression = dbmsLanguage.getRegexp(pattern);
// MOD gdbu 2011-8-26 bug : TDQ-2169
if ((ExpressionType.REGEXP.getLiteral().equals(expressionType) || ExpressionType.SQL_LIKE.getLiteral().equals(expressionType)) && returnExpression == null) {
// ~TDQ-2169
String executeType = isJavaEngin ? executionLanguage.getName() : dbmsLanguage.getDbmsName();
boolean openPattern = MessageDialog.openQuestion(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), DefaultMessagesImpl.getString("PatternUtilities.Warning"), // $NON-NLS-1$ //$NON-NLS-2$
DefaultMessagesImpl.getString("PatternUtilities.NoExpression", executeType, pattern.getName()));
if (openPattern) {
RepositoryNode node = RepositoryNodeHelper.recursiveFind(pattern);
if (RepositoryNodeHelper.canOpenEditor(node)) {
new OpenItemEditorAction(new IRepositoryNode[] { node }).run();
}
}
result.setOk(false);
return result;
}
// a regular expression for the analyzed
// database, but we probably test also whether the analyzed database
// support the regular expressions (=> check
// DB type, DB number version, existence of UDF)
DataManager dm = analysis.getContext().getConnection();
if (dm != null) {
TypedReturnCode<java.sql.Connection> trc = JavaSqlFactory.createConnection((Connection) dm);
// MOD qiongli 2011-1-10 feature 16796
boolean isDelimitedFileConnection = ConnectionUtils.isDelimitedFileConnection((DataProvider) dm);
if (trc != null) {
// SoftwareSystem softwareSystem = DatabaseContentRetriever.getSoftwareSystem(conn);
// MOD sizhaoliu TDQ-6316
dbmsLanguage = DbmsLanguageFactory.createDbmsLanguage(dm);
}
// MOD xqliu 2010-08-12 bug 14601
if (!(isSQLPattern || DefinitionHandler.getInstance().canRunRegularExpressionMatchingIndicator(dbmsLanguage, isJavaEngin, pattern) || isDelimitedFileConnection)) {
// MessageDialogWithToggle.openInformation(null,
// DefaultMessagesImpl.getString("PatternUtilities.Pattern"), DefaultMessagesImpl //$NON-NLS-1$
// .getString("PatternUtilities.couldnotSetIndicator")); //$NON-NLS-1$
result.setOk(false);
// $NON-NLS-1$
result.setMessage(DefaultMessagesImpl.getString("PatternUtilities.couldnotSetIndicator"));
return result;
}
// ~ 14601
}
// when the indicator is created.
if (indicatorDefinition == null) {
if (!DefinitionHandler.getInstance().setDefaultIndicatorDefinition(patternMatchingIndicator)) {
// $NON-NLS-1$
log.error(DefaultMessagesImpl.getString("PatternUtilities.SetFailed", patternMatchingIndicator.getName()));
}
} else {
patternMatchingIndicator.setIndicatorDefinition(indicatorDefinition);
}
IndicatorEnum type = IndicatorEnum.findIndicatorEnum(patternMatchingIndicator.eClass());
IndicatorUnit addIndicatorUnit = modelElementIndicator.addSpecialIndicator(type, patternMatchingIndicator);
DependenciesHandler.getInstance().setUsageDependencyOn(analysis, pattern);
result.setOk(true);
// $NON-NLS-1$
result.setMessage(DefaultMessagesImpl.getString("PatternUtilities.OK"));
result.setObject(addIndicatorUnit);
return result;
}
use of orgomg.cwm.objectmodel.core.Expression in project tdq-studio-se by Talend.
the class AnalysisHelper method setStringDataFilter.
/**
* DOC xqliu Comment method "setStringDataFilter".
*
* @param analysis
* @param datafilterString
* @param index 0 for DataFilterA, 1 for DataFilterB
* @return
*/
public static boolean setStringDataFilter(Analysis analysis, String datafilterString, int index) {
if (index == 1) {
EList<Domain> dataFilters = analysis.getParameters().getDataFilter();
int size = dataFilters.size();
if (size == 0) {
// $NON-NLS-1$
dataFilters.add(createDomain(analysis, ""));
// $NON-NLS-1$
return dataFilters.add(createDomain(analysis, datafilterString, "1"));
} else if (size == 1) {
// $NON-NLS-1$
return dataFilters.add(createDomain(analysis, datafilterString, "1"));
} else if (size == 2) {
Domain domain = dataFilters.get(1);
EList<RangeRestriction> ranges = domain.getRanges();
RangeRestriction rangeRestriction = (ranges.isEmpty()) ? DomainHelper.addRangeRestriction(domain) : ranges.get(0);
BooleanExpressionNode expressions = rangeRestriction.getExpressions();
if (expressions == null) {
expressions = BooleanExpressionHelper.createBooleanExpressionNode(datafilterString);
rangeRestriction.setExpressions(expressions);
} else {
Expression expression = expressions.getExpression();
if (expression == null) {
expression = BooleanExpressionHelper.createTdExpression(BooleanExpressionHelper.DEFAULT_LANGUAGE, datafilterString);
expressions.setExpression(expression);
} else {
expression.setBody(datafilterString);
}
}
return false;
} else {
return false;
}
} else {
return setStringDataFilter(analysis, datafilterString);
}
}
use of orgomg.cwm.objectmodel.core.Expression in project tdq-studio-se by Talend.
the class AnalysisHelper method getStringDataFilter.
/**
* DOC xqliu Comment method "getStringDataFilter".
*
* @param analysis
* @param index 0 for DataFilterA, 1 for DataFilterB
* @return
*/
public static String getStringDataFilter(Analysis analysis, int index) {
AnalysisParameters parameters = analysis.getParameters();
if (parameters == null) {
return null;
}
EList<Domain> dataFilters = parameters.getDataFilter();
// remove existing filters
if (dataFilters == null || dataFilters.isEmpty()) {
return null;
}
int i = 0;
for (Domain domain : dataFilters) {
if (domain == null) {
continue;
}
EList<RangeRestriction> ranges = domain.getRanges();
for (RangeRestriction rangeRestriction : ranges) {
BooleanExpressionNode expressions = rangeRestriction.getExpressions();
if (expressions == null) {
continue;
}
Expression expression = expressions.getExpression();
if (expression == null) {
continue;
}
if (i == index) {
// MOD klliu 2011-07-14 bug 23150 solve an NPE
String body = expression.getBody();
if (body == null) {
continue;
}
// ~
return body.trim();
} else if (i > index) {
return null;
}
}
i++;
}
return null;
}
use of orgomg.cwm.objectmodel.core.Expression in project tdq-studio-se by Talend.
the class AnalysisHelper method setStringDataFilter.
public static boolean setStringDataFilter(Analysis analysis, String datafilterString) {
EList<Domain> dataFilters = analysis.getParameters().getDataFilter();
// update existing filters
if (!dataFilters.isEmpty()) {
Domain domain = dataFilters.get(0);
EList<RangeRestriction> ranges = domain.getRanges();
RangeRestriction rangeRestriction = (ranges.isEmpty()) ? DomainHelper.addRangeRestriction(domain) : ranges.get(0);
BooleanExpressionNode expressions = rangeRestriction.getExpressions();
if (expressions == null) {
expressions = BooleanExpressionHelper.createBooleanExpressionNode(datafilterString);
rangeRestriction.setExpressions(expressions);
} else {
Expression expression = expressions.getExpression();
if (expression == null) {
expression = BooleanExpressionHelper.createTdExpression(BooleanExpressionHelper.DEFAULT_LANGUAGE, datafilterString);
expressions.setExpression(expression);
} else {
expression.setBody(datafilterString);
}
}
return false;
}
// else
return dataFilters.add(createDomain(analysis, datafilterString));
}
Aggregations