// ============================================================================ // // 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.wizard.indicator; import org.apache.log4j.Logger; import org.eclipse.core.resources.IFolder; import org.eclipse.emf.common.util.EList; import org.talend.cwm.helper.TaggedValueHelper; import org.talend.cwm.relational.RelationalFactory; import org.talend.cwm.relational.TdExpression; import org.talend.dataprofiler.core.CorePlugin; import org.talend.dataprofiler.core.PluginConstant; import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl; import org.talend.dataprofiler.core.ui.editor.indicator.IndicatorDefinitionItemEditorInput; import org.talend.dataprofiler.core.ui.editor.indicator.IndicatorEditor; import org.talend.dataprofiler.core.ui.wizard.AbstractWizard; import org.talend.dataquality.indicators.definition.IndicatorDefinition; import org.talend.dataquality.indicators.definition.userdefine.UDIndicatorDefinition; import org.talend.dq.analysis.parameters.UDIndicatorParameter; import org.talend.dq.helper.UDIHelper; import org.talend.dq.helper.resourcehelper.ResourceFileMap; import org.talend.dq.indicators.UDIndicatorBuilder; import org.talend.dq.indicators.definitions.DefinitionHandler; import org.talend.dq.writer.impl.ElementWriterFactory; import org.talend.repository.model.IRepositoryNode; import org.talend.utils.dates.DateUtils; import org.talend.utils.sugars.TypedReturnCode; import orgomg.cwm.objectmodel.core.ModelElement; /** * DOC xqliu class global comment. Detailled comment */ public class NewUDIndicatorWizard extends AbstractWizard { static Logger log = Logger.getLogger(NewUDIndicatorWizard.class); private TdExpression expression; private NewUDIndicatorWizardPage1 mPage1; private UDIndicatorParameter parameter; public NewUDIndicatorWizard(UDIndicatorParameter parameter) { this.parameter = parameter; } @Override public void addPages() { String s = DefaultMessagesImpl.getString("NewUDIndicatorWizard.udi"); //$NON-NLS-1$ mPage1 = new NewUDIndicatorWizardPage1(); mPage1.setTitle(s + PluginConstant.SPACE_STRING + DefaultMessagesImpl.getString("NewUDIndicatorWizard.createPage1_1")); //$NON-NLS-1$ mPage1.setDescription(DefaultMessagesImpl.getString("NewUDIndicatorWizard.defineProp")); //$NON-NLS-1$ mPage1.setPageComplete(false); addPage(mPage1); } public TypedReturnCode<Object> createAndSaveCWMFile(ModelElement cwmElement) { UDIndicatorDefinition indicatorDefinition = (UDIndicatorDefinition) cwmElement; UDIHelper.setUDICategory(indicatorDefinition, DefinitionHandler.getInstance().getUserDefinedCountIndicatorCategory()); IFolder folder = parameter.getFolderProvider().getFolderResource(); // ADD xqliu 2010-06-04 feature 13454 recordModificationDate(indicatorDefinition); // ~ 13454 TypedReturnCode<Object> returnCode = ElementWriterFactory.getInstance().createIndicatorDefinitionWriter() .create(indicatorDefinition, folder); // MOD qiongli 2011-2-18,bug 19014.After creating UDI,reaload all indicators DefinitionHandler.getInstance().reloadIndicatorsDefinitions(); return returnCode; } /** * DOC xqliu Comment method "recordModificationDate". * * @param indicatorDefinition */ private void recordModificationDate(IndicatorDefinition indicatorDefinition) { EList<TdExpression> sqlGenericExpression = indicatorDefinition.getSqlGenericExpression(); if (sqlGenericExpression != null) { String dateValue = DateUtils.getCurrentDate(DateUtils.PATTERN_5); for (TdExpression exp : sqlGenericExpression) { exp.setModificationDate(dateValue); } } } public ModelElement initCWMResourceBuilder() { UDIndicatorBuilder udiBuilder = new UDIndicatorBuilder(); boolean udiInitialized = udiBuilder.initializeUDIndicatorBuilder(parameter.getName()); if (udiInitialized) { return udiBuilder.getUDIndicator(); } return null; } /* * (non-Javadoc) * * @seeorg.talend.dataprofiler.core.ui.wizard.AbstractWizard#fillMetadataToCWMResource(orgomg.cwm.objectmodel.core. * ModelElement) */ @Override public void fillMetadataToCWMResource(ModelElement cwmElement) { super.fillMetadataToCWMResource(cwmElement); TaggedValueHelper.setValidStatus(true, cwmElement); } public TdExpression getExpression() { if (expression == null) { expression = RelationalFactory.eINSTANCE.createTdExpression(); } if (expression != null) { expression.setBody(this.getParameter().getExpression()); expression.setLanguage(this.getParameter().getLanguage()); } return expression; } @Override protected String getEditorName() { return IndicatorEditor.class.getName(); } @Override public UDIndicatorParameter getParameter() { return parameter; } @Override protected ResourceFileMap getResourceFileMap() { return null; } @Override public boolean canFinish() { if (mPage1 != null) { // MOD mzhao feature 11128, In case of Java UDI,the page can finish. if (getParameter().getName() != null && !"".equals(getParameter().getName().trim())) { //$NON-NLS-1$ return mPage1.isPageComplete(); } } return false; } /* * (non-Javadoc) * * @see org.talend.dataprofiler.core.ui.wizard.AbstractWizard#openEditor(org.talend.repository.model.IRepositoryNode) */ @Override public void openEditor(IRepositoryNode repNode) { IndicatorDefinitionItemEditorInput udiEditorInput = new IndicatorDefinitionItemEditorInput(repNode); CorePlugin.getDefault().openEditor(udiEditorInput, IndicatorEditor.class.getName()); } }