// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dataprofiler.core.ui.editor.dqrules;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.common.util.EList;
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.DropTargetListener;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.part.FileEditorInput;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.cwm.helper.ColumnHelper;
import org.talend.cwm.helper.TaggedValueHelper;
import org.talend.cwm.relational.TdColumn;
import org.talend.dataprofiler.core.ImageLib;
import org.talend.dataprofiler.core.PluginConstant;
import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl;
import org.talend.dataprofiler.core.ui.editor.AbstractMetadataFormPage;
import org.talend.dataprofiler.core.ui.editor.composite.JoinConditionTableViewer;
import org.talend.dataprofiler.core.ui.utils.MessageUI;
import org.talend.dataprofiler.core.ui.views.WhereClauseDND;
import org.talend.dataquality.properties.TDQBusinessRuleItem;
import org.talend.dataquality.rules.JoinElement;
import org.talend.dataquality.rules.RulesFactory;
import org.talend.dataquality.rules.WhereRule;
import org.talend.dq.helper.EObjectHelper;
import org.talend.dq.helper.RepositoryNodeHelper;
import org.talend.dq.helper.resourcehelper.DQRuleResourceFileHelper;
import org.talend.dq.nodes.RuleRepNode;
import org.talend.dq.writer.impl.ElementWriterFactory;
import org.talend.utils.sugars.ReturnCode;
/**
* DOC xqliu class global comment. Detailled comment
*/
public class DQRuleMasterDetailsPage extends AbstractMetadataFormPage implements PropertyChangeListener {
final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer();
protected RuleRepNode ruleRepNode;
private Section dqRuleDefinitionSection;
private Section joinConditionSection;
private Text whereText;
private Text criticalityLevelText;
private List<JoinElement> tempJoinElements;
private Composite joinElementComp;
private JoinConditionTableViewer joinConditionTableViewer;
/**
* DOC xqliu DQRuleMasterDetailsPage constructor comment.
*
* @param editor
* @param id
* @param title
*/
public DQRuleMasterDetailsPage(FormEditor editor, String id, String title) {
super(editor, id, title);
}
public List<JoinElement> getTempJoinElements() {
return tempJoinElements;
}
public Text getCriticalityLevelText() {
return criticalityLevelText;
}
public Text getWhereText() {
return whereText;
}
@Override
public void setDirty(boolean isDirty) {
if (this.isDirty != isDirty) {
this.isDirty = isDirty;
((DQRuleEditor) this.getEditor()).firePropertyChange(IEditorPart.PROP_DIRTY);
// MOD xqliu 2009-06-25 bug 7687
this.firePropertyChange(IEditorPart.PROP_DIRTY);
// ~
}
}
public void propertyChange(PropertyChangeEvent evt) {
if (PluginConstant.ISDIRTY_PROPERTY.equals(evt.getPropertyName())) {
((DQRuleEditor) this.getEditor()).firePropertyChange(IEditorPart.PROP_DIRTY);
}
}
@Override
protected void createFormContent(IManagedForm managedForm) {
setFormTitle(DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.dqRuleSettings")); //$NON-NLS-1$
setMetadataSectionTitle(DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.DQRuleMetadata")); //$NON-NLS-1$
setMetadataSectionDescription(DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.setProperties")); //$NON-NLS-1$
super.createFormContent(managedForm);
resetJoinElements();
createDQRuleDefinitionSection(topComp);
createJoinConditionSection(topComp);
}
/**
* DOC xqliu Comment method "creatDQRuleDefinitionSection".
*
* @param comp
*/
private void createDQRuleDefinitionSection(Composite comp) {
dqRuleDefinitionSection = createSection(form, comp,
DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.dqRuleDefinition"), null); //$NON-NLS-1$
Label label = new Label(dqRuleDefinitionSection, SWT.WRAP);
label.setText(DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.text")); //$NON-NLS-1$
dqRuleDefinitionSection.setDescriptionControl(label);
createDQRuleDefinitionComp();
}
/**
* DOC xqliu Comment method "createDQRuleDefinitionComp".
*
* @return
*/
private Composite createDQRuleDefinitionComp() {
Composite newComp = toolkit.createComposite(dqRuleDefinitionSection);
newComp.setLayout(new GridLayout());
Composite container = new Composite(newComp, SWT.NONE);
GridLayout gdLayout = new GridLayout(2, false);
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(container);
container.setLayout(gdLayout);
Label label1 = new Label(container, SWT.NONE);
label1.setText(DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.criticalityLevel")); //$NON-NLS-1$
GridData data;
criticalityLevelText = new Text(container, SWT.BORDER);
criticalityLevelText.setText("" + getCurrentModelElement().getCriticalityLevel()); //$NON-NLS-1$
data = new GridData(GridData.FILL_HORIZONTAL);
criticalityLevelText.setLayoutData(data);
Label label2 = new Label(container, SWT.NONE);
label2.setText(DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.whereClause")); //$NON-NLS-1$
label2.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
whereText = new Text(container, SWT.BORDER | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);
WhereClauseDND.installDND(whereText);
whereText.setText(getCurrentModelElement().getWhereExpression());
data = new GridData(GridData.FILL_BOTH);
data.heightHint = 180;
whereText.setLayoutData(data);
// ADD yyi 2011-05-31 16158:add whitespace check for text fields.
addWhitespaceValidate(criticalityLevelText, whereText);
addModifyListeners();
dqRuleDefinitionSection.setClient(newComp);
return newComp;
}
@Override
public void doSave(IProgressMonitor monitor) {
// ADD yyi 2011-05-31 16158:add whitespace check for text fields.
if (!checkWhithspace()) {
MessageUI.openError(DefaultMessagesImpl.getString("AbstractMetadataFormPage.whitespace")); //$NON-NLS-1$
return;
}
if (!canSave().isOk()) {
return;
}
super.doSave(monitor);
if (saveDQRule()) {
this.isDirty = false;
}
}
/**
* DOC xqliu Comment method "saveDQRule".
*
* @return
*/
private boolean saveDQRule() {
boolean ret = false;
this.tempJoinElements = cleanJoins(tempJoinElements);
if (checkValus()) {
TaggedValueHelper.setValidStatus(true, getCurrentModelElement());
getCurrentModelElement().setCriticalityLevel(Integer.valueOf(getCriticalityLevelText().getText()));
getCurrentModelElement().setWhereExpression(whereText.getText());
getCurrentModelElement().getJoins().clear();
getCurrentModelElement().getJoins().addAll(this.tempJoinElements);
TDQBusinessRuleItem whereRuleItem = (TDQBusinessRuleItem) getCurrentRepNode().getObject().getProperty().getItem();
// MOD yyi 2012-02-08 TDQ-4621:Explicitly set true for updating dependencies.
ReturnCode rc = ElementWriterFactory.getInstance().createdRuleWriter().save(whereRuleItem, true);
ret = rc.isOk();
this.joinConditionTableViewer.updateModelViewer();
}
return ret;
}
/**
* DOC xqliu Comment method "cleanJoins".
*
* @param joinElements
* @return
*/
private List<JoinElement> cleanJoins(List<JoinElement> joinElements) {
List<JoinElement> retJoinElements = new ArrayList<JoinElement>();
for (JoinElement je : joinElements) {
if (je.getColA() != null && je.getColB() != null) {
retJoinElements.add(je);
}
}
return retJoinElements;
}
/**
* DOC xqliu Comment method "checkValus".
*
* @return
*/
private boolean checkValus() {
boolean ret = true;
String msg = ""; //$NON-NLS-1$
String cl = getCriticalityLevelText().getText();
if (cl == null || "".equals(cl)) { //$NON-NLS-1$
ret = false;
msg += DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.criticalityLevelIsEmpty") + "\n"; //$NON-NLS-1$ //$NON-NLS-2$
} else {
try {
int i = Integer.valueOf(cl).intValue();
if (!(i >= PluginConstant.CRITICALITY_LEVEL_MIN && i <= PluginConstant.CRITICALITY_LEVEL_MAX)) {
ret = false;
msg += DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.criticalityLevelIsInvalid") + "\n"; //$NON-NLS-1$ //$NON-NLS-2$
}
} catch (NumberFormatException e) {
ret = false;
msg += DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.criticalityLevelIsInvalid") + "\n"; //$NON-NLS-1$ //$NON-NLS-2$
}
}
String wh = getWhereText().getText();
if (wh == null || "".equals(wh)) { //$NON-NLS-1$
ret = false;
msg += DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.whereClauseIsEmpty") + "\n"; //$NON-NLS-1$ //$NON-NLS-2$
} else {
if (wh.startsWith(PluginConstant.WHERE)) {
ret = false;
msg += DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.whereClauseIsInvalid") + "\n"; //$NON-NLS-1$ //$NON-NLS-2$
}
}
for (JoinElement join : this.tempJoinElements) {
String tableAliasA = join.getTableAliasA();
String tableAliasB = join.getTableAliasB();
if (tableAliasA == null || "".equals(tableAliasA) || tableAliasB == null || "".equals(tableAliasB)) { //$NON-NLS-1$ //$NON-NLS-2$
ret = false;
msg += DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.emptyTableAlias") + "\n"; //$NON-NLS-1$ //$NON-NLS-2$
break;
} else if (tableAliasA.equals(tableAliasB)) {
ret = false;
String tableA = ColumnHelper.getColumnSetOwner(join.getColA()).getName();
String tableB = ColumnHelper.getColumnSetOwner(join.getColB()).getName();
msg += DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.sameTableAlias", tableA, tableB) + "\n"; //$NON-NLS-1$ //$NON-NLS-2$
} else {
if (!checkAlias(tableAliasA)) {
ret = false;
msg += DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.invalidAliasName", tableAliasA) + "\n"; //$NON-NLS-1$ //$NON-NLS-2$
}
if (!checkAlias(tableAliasB)) {
ret = false;
msg += DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.invalidAliasName", tableAliasB) + "\n"; //$NON-NLS-1$ //$NON-NLS-2$
}
}
}
if (!ret) {
MessageUI.openWarning(msg);
}
return ret;
}
/**
* DOC xqliu Comment method "checkAlias".
*
* @param alias
* @return
*/
private boolean checkAlias(String alias) {
// not number
try {
Double.valueOf(alias);
return false;
} catch (NumberFormatException e) {
}
String regEx = "^\\w+$"; //$NON-NLS-1$
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(alias);
return m.find();
}
/**
* DOC xqliu Comment method "addModifyListeners".
*/
protected void addModifyListeners() {
whereText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
setDirty(true);
}
});
criticalityLevelText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
setDirty(true);
}
});
}
/**
* DOC xqliu Comment method "createJoinConditionSection".
*
* @param comp
*/
private void createJoinConditionSection(Composite comp) {
joinConditionSection = createSection(form, comp,
DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.joinCondition"), null); //$NON-NLS-1$
Label label = new Label(joinConditionSection, SWT.WRAP);
label.setText(DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.textJoinCondition")); //$NON-NLS-1$
joinConditionSection.setDescriptionControl(label);
createJoinConditionComp();
}
/**
* DOC xqliu Comment method "createJoinConditionComp".
*
* @return
*/
private Composite createJoinConditionComp() {
Composite newComp = toolkit.createComposite(joinConditionSection);
newComp.setLayout(new GridLayout());
// MOD xqliu 2009-08-31 bug 8791
if (true) {
joinConditionTableViewer = new JoinConditionTableViewer(newComp, this);
joinConditionTableViewer.setDirty(false);
joinConditionTableViewer.addPropertyChangeListener(this);
createButtons(newComp, joinConditionTableViewer);
} else {
joinElementComp = new Composite(newComp, SWT.NONE);
joinElementComp.setLayout(new GridLayout());
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, false).applyTo(joinElementComp);
for (int i = 0; i < tempJoinElements.size(); i++) {
creatNewJoinElementLine(tempJoinElements.get(i));
}
createAddButton(newComp);
}
// ~
joinConditionSection.setClient(newComp);
return newComp;
}
/**
* DOC xqliu Comment method "createButtons".
*
* @param parent
*/
private void createButtons(Composite parent, final JoinConditionTableViewer jcTableViewer) {
Composite buttonsComposite = new Composite(parent, SWT.NONE);
buttonsComposite.setLayout(new GridLayout(2, false));
GridData labelGd = new GridData();
labelGd.horizontalAlignment = SWT.LEFT;
labelGd.widthHint = 30;
final Button addButton = new Button(buttonsComposite, SWT.NONE);
addButton.setImage(ImageLib.getImage(ImageLib.ADD_ACTION));
addButton.setLayoutData(labelGd);
addButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
jcTableViewer.addJoinElement();
}
});
final Button delButton = new Button(buttonsComposite, SWT.NONE);
delButton.setImage(ImageLib.getImage(ImageLib.DELETE_ACTION));
delButton.setLayoutData(labelGd);
delButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
JoinElement join = (JoinElement) ((IStructuredSelection) jcTableViewer.getSelection()).getFirstElement();
if (join != null) {
jcTableViewer.removeJoinElement(join);
}
}
});
}
/**
* DOC xqliu Comment method "createAddButton".
*
* @param parent top composite
*/
private void createAddButton(Composite parent) {
final Button addButton = new Button(parent, SWT.NONE);
addButton.setImage(ImageLib.getImage(ImageLib.ADD_ACTION));
addButton.setToolTipText(DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.add")); //$NON-NLS-1$
GridData labelGd = new GridData();
labelGd.horizontalAlignment = SWT.CENTER;
labelGd.widthHint = 65;
addButton.setLayoutData(labelGd);
addButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
JoinElement newJoinElement = RulesFactory.eINSTANCE.createJoinElement();
newJoinElement.setOperator(PluginConstant.DEFAULT_OPERATOR);
creatNewJoinElementLine(newJoinElement);
tempJoinElements.add(newJoinElement);
joinConditionSection.setExpanded(true);
setDirty(true);
}
});
}
/**
* DOC xqliu Comment method "creatNewJoinElementLine".
*
* @param joinElement
*/
private void creatNewJoinElementLine(JoinElement joinElement) {
final Composite expressComp = new Composite(joinElementComp, SWT.NONE);
expressComp.setLayout(new GridLayout(6, false));
final JoinElement fje = joinElement;
boolean flag = false;
if (fje.getColA() != null && fje.getColB() != null && fje.getOperator() != null) {
flag = true;
}
final Label labelL = new Label(expressComp, SWT.NONE);
labelL.setImage(ImageLib.getImage(ImageLib.TD_COLUMN));
GridDataFactory.fillDefaults().span(1, 1).grab(false, false).applyTo(labelL);
final Text textL = new Text(expressComp, SWT.BORDER);
textL.setEditable(false);
textL.setText(flag ? fje.getColA().getName() : PluginConstant.EMPTY_STRING);
GridDataFactory.fillDefaults().span(1, 1).grab(true, false).applyTo(textL);
((GridData) textL.getLayoutData()).widthHint = 100;
DropTarget targetL = new DropTarget(textL, DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_DEFAULT);
targetL.setTransfer(new Transfer[] { transfer });
targetL.addDropListener(new ColumnDropTargetListener(fje, ColumnDropTargetListener.LEFT));
final CCombo combo = new CCombo(expressComp, SWT.BORDER);
combo.setEditable(false);
combo.setItems(PluginConstant.OPERATORS);
combo.setText(flag ? fje.getOperator() : PluginConstant.DEFAULT_OPERATOR);
GridDataFactory.fillDefaults().span(1, 1).grab(false, false).applyTo(combo);
combo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
fje.setOperator(combo.getText());
setDirty(true);
}
});
final Label labelR = new Label(expressComp, SWT.NONE);
labelR.setImage(ImageLib.getImage(ImageLib.TD_COLUMN));
GridDataFactory.fillDefaults().span(1, 1).grab(false, false).applyTo(labelR);
final Text textR = new Text(expressComp, SWT.BORDER);
textR.setEditable(false);
textR.setText(flag ? fje.getColB().getName() : PluginConstant.EMPTY_STRING);
GridDataFactory.fillDefaults().span(1, 1).grab(true, false).applyTo(textR);
((GridData) textR.getLayoutData()).widthHint = 100;
DropTarget targetR = new DropTarget(textR, DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_DEFAULT);
targetR.setTransfer(new Transfer[] { transfer });
targetR.addDropListener(new ColumnDropTargetListener(fje, ColumnDropTargetListener.RIGHT));
Button delButton = new Button(expressComp, SWT.NONE);
delButton.setImage(ImageLib.getImage(ImageLib.DELETE_ACTION));
delButton.setToolTipText(DefaultMessagesImpl.getString("DQRuleMasterDetailsPage.delete")); //$NON-NLS-1$
GridDataFactory.fillDefaults().span(1, 1).grab(false, false).applyTo(delButton);
delButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
tempJoinElements.remove(fje);
expressComp.dispose();
joinConditionSection.setExpanded(true);
setDirty(true);
}
});
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, false).applyTo(expressComp);
}
private void resetJoinElements() {
if (tempJoinElements == null) {
tempJoinElements = new ArrayList<JoinElement>();
} else {
tempJoinElements.clear();
}
EList<JoinElement> joins = getCurrentModelElement().getJoins();
for (JoinElement join : joins) {
tempJoinElements.add(cloneJoin(join));
}
}
/**
* DOC xqliu Comment method "cloneJoin".
*
* @param joinElement
* @return
*/
private JoinElement cloneJoin(JoinElement joinElement) {
if (joinElement != null) {
JoinElement newJoinElement = RulesFactory.eINSTANCE.createJoinElement();
newJoinElement.setColA(joinElement.getColA());
newJoinElement.setColB(joinElement.getColB());
newJoinElement.setColumnAliasA(joinElement.getColumnAliasA());
newJoinElement.setColumnAliasB(joinElement.getColumnAliasB());
newJoinElement.setOperator(joinElement.getOperator());
newJoinElement.setTableAliasA(joinElement.getTableAliasA());
newJoinElement.setTableAliasB(joinElement.getTableAliasB());
return newJoinElement;
}
return null;
}
/**
* DOC xqliu DQRuleMasterDetailsPage class global comment. Detailled comment
*/
private class ColumnDropTargetListener implements DropTargetListener {
private JoinElement joinElement;
private int index;
public static final int LEFT = 1;
public static final int RIGHT = 2;
public JoinElement getJoinElement() {
if (joinElement == null) {
joinElement = RulesFactory.eINSTANCE.createJoinElement();
joinElement.setOperator(PluginConstant.DEFAULT_OPERATOR);
}
return joinElement;
}
public int getIndex() {
if (index != LEFT && index != RIGHT) {
index = LEFT;
}
return index;
}
public ColumnDropTargetListener(JoinElement je, int index) {
super();
this.joinElement = je;
this.index = index;
}
public void dragEnter(DropTargetEvent event) {
if (event.detail == DND.DROP_DEFAULT) {
event.detail = DND.DROP_COPY;
}
}
public void dragOver(DropTargetEvent event) {
event.feedback = DND.FEEDBACK_NONE;
}
public void dragOperationChanged(DropTargetEvent event) {
if (event.detail == DND.DROP_DEFAULT) {
event.detail = DND.DROP_COPY;
}
}
public void dragLeave(DropTargetEvent event) {
}
public void dropAccept(DropTargetEvent event) {
}
public void drop(DropTargetEvent event) {
if (transfer.isSupportedType(event.currentDataType)) {
if (event.data instanceof TreeSelection) {
TreeSelection ts = (TreeSelection) event.data;
if (ts.getFirstElement() instanceof TdColumn) {
TdColumn column = (TdColumn) ts.getFirstElement();
setColumn(column);
DropTarget target = (DropTarget) event.widget;
Text text = (Text) target.getControl();
text.setText(column.getName());
setDirty(true);
}
}
}
}
public void setColumn(TdColumn column) {
switch (getIndex()) {
case LEFT:
getJoinElement().setColA(column);
// MOD scorreia 2009-04-08 removed alias setting
// getJoinElement().setColumnAliasA(column.getName());
// getJoinElement().setTableAliasA(ColumnHelper.getColumnSetOwner(column).getName());
break;
case RIGHT:
getJoinElement().setColB(column);
// MOD scorreia 2009-04-08 removed alias setting
// getJoinElement().setColumnAliasB(column.getName());
// getJoinElement().setTableAliasB(ColumnHelper.getColumnSetOwner(column).getName());
break;
default:
}
}
}
/*
* (non-Javadoc)
*
* @see org.talend.dataprofiler.core.ui.editor.AbstractMetadataFormPage#canSave()
*/
@Override
public ReturnCode canSave() {
ReturnCode rc = canModifyName(ERepositoryObjectType.TDQ_RULES);
if (!rc.isOk()) {
MessageDialogWithToggle.openError(null,
DefaultMessagesImpl.getString("AbstractMetadataFormPage.saveFailed"), rc.getMessage()); //$NON-NLS-1$
}
return rc;
}
/*
* (non-Javadoc)
*
* @see org.talend.dataprofiler.core.ui.editor.AbstractMetadataFormPage#getCurrentModelElement()
*/
@Override
public WhereRule getCurrentModelElement() {
return (WhereRule) ruleRepNode.getRule();
}
/*
* (non-Javadoc)
*
* @see org.talend.dataprofiler.core.ui.editor.AbstractMetadataFormPage#getCurrentRepNode()
*/
@Override
public RuleRepNode getCurrentRepNode() {
return ruleRepNode;
}
/*
* (non-Javadoc)
*
* @see org.talend.dataprofiler.core.ui.editor.AbstractMetadataFormPage#init(org.eclipse.ui.forms.editor.FormEditor)
*/
@Override
protected void init(FormEditor editor) {
currentEditor = (DQRuleEditor) editor;
ruleRepNode = getWhereRuleRepNodeFromInput(currentEditor.getEditorInput());
}
/**
* get PatternRepNode From editorInput
*
* @param editorInput
* @return
*/
private RuleRepNode getWhereRuleRepNodeFromInput(IEditorInput editorInput) {
if (editorInput instanceof FileEditorInput) {
FileEditorInput fileEditorInput = (FileEditorInput) editorInput;
IFile file = fileEditorInput.getFile();
if (file != null) {
WhereRule whereRule = DQRuleResourceFileHelper.getInstance().findWhereRule(file);
whereRule = (WhereRule) EObjectHelper.resolveObject(whereRule);
return RepositoryNodeHelper.recursiveFindRuleSql(whereRule);
}
} else if (editorInput instanceof BusinessRuleItemEditorInput) {
return ((BusinessRuleItemEditorInput) editorInput).getRepNode();
}
return null;
}
}