// ============================================================================ // // 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.pattern; import org.apache.log4j.Logger; import org.eclipse.core.resources.IFolder; import org.eclipse.core.runtime.IPath; import org.talend.cwm.helper.TaggedValueHelper; 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.pattern.PatternEditor; import org.talend.dataprofiler.core.ui.editor.pattern.PatternItemEditorInput; import org.talend.dataprofiler.core.ui.wizard.AbstractWizard; import org.talend.dataquality.domain.pattern.ExpressionType; import org.talend.dataquality.domain.pattern.Pattern; import org.talend.dataquality.domain.pattern.RegularExpression; import org.talend.dataquality.helpers.BooleanExpressionHelper; import org.talend.dq.analysis.parameters.PatternParameter; import org.talend.dq.helper.RepositoryNodeHelper; import org.talend.dq.helper.resourcehelper.ResourceFileMap; import org.talend.dq.pattern.PatternBuilder; import org.talend.dq.writer.impl.ElementWriterFactory; import org.talend.repository.model.IRepositoryNode; import org.talend.repository.model.RepositoryNode; import org.talend.utils.sugars.TypedReturnCode; import orgomg.cwm.objectmodel.core.ModelElement; /** * DOC qzhang class global comment. Detailled comment <br/> * * $Id: talend.epf 1 2006-09-29 17:06:40Z qzhang $ * */ public class CreatePatternWizard extends AbstractWizard { static Logger log = Logger.getLogger(CreatePatternWizard.class); private CreatePatternWizardPage1 mPage; private CreatePatternWizardPage2 mPage2; private IPath location; private ExpressionType type; private PatternParameter parameter; private String expression; private String language; private String purpose; private PatternBuilder patternBuilder; /** * DOC qzhang CreateSqlFileWizard constructor comment. * * @param parameter * @param type */ public CreatePatternWizard(PatternParameter parameter, ExpressionType type) { this.type = type; this.parameter = parameter; } /** * CreatePatternWizard constructor. * * @param parameter * @param type * @param expression * @param language */ public CreatePatternWizard(PatternParameter parameter, ExpressionType type, String expression, String language) { this(parameter, type); this.expression = expression; this.language = language; } /* * (non-Javadoc) * * @see org.eclipse.jface.wizard.Wizard#addPages() */ @Override public void addPages() { String s = DefaultMessagesImpl.getString("CreatePatternWizard.regularExression"); //$NON-NLS-1$ if (type == ExpressionType.SQL_LIKE) { s = DefaultMessagesImpl.getString("CreatePatternWizard.sqlExpression"); //$NON-NLS-1$ } mPage = new CreatePatternWizardPage1(); mPage.setTitle(s + PluginConstant.SPACE_STRING + DefaultMessagesImpl.getString("CreatePatternWizard.createPage1_2")); //$NON-NLS-1$ mPage.setDescription(DefaultMessagesImpl.getString("CreatePatternWizard.defProp")); //$NON-NLS-1$ mPage.setPageComplete(false); mPage.setPurpose(purpose); if (expression != null && language != null) { mPage2 = new CreatePatternWizardPage2(type, expression, language); } else { mPage2 = new CreatePatternWizardPage2(type); } mPage2.setTitle(s + PluginConstant.SPACE_STRING + DefaultMessagesImpl.getString("CreatePatternWizard.createPage2_2")); //$NON-NLS-1$ mPage2.setDescription(DefaultMessagesImpl.getString("CreatePatternWizard.defineProp")); //$NON-NLS-1$ addPage(mPage); addPage(mPage2); } public TypedReturnCode<Object> createAndSaveCWMFile(ModelElement cwmElement) { Pattern pattern = (Pattern) cwmElement; IFolder folder = parameter.getFolderProvider().getFolderResource(); return ElementWriterFactory.getInstance().createPatternWriter().create(pattern, folder); } public ModelElement initCWMResourceBuilder() { patternBuilder = new PatternBuilder(); boolean patternInitialized = patternBuilder.initializePattern(parameter.getName()); if (patternInitialized) { Pattern pattern = patternBuilder.getPattern(); String lang = PatternLanguageType.findLanguageByName(parameter.getLanguage()); String express = parameter.getExpression(); RegularExpression regularExpr = BooleanExpressionHelper.createRegularExpression(lang, express); regularExpr.setExpressionType(type.getLiteral()); pattern.getComponents().add(regularExpr); return pattern; } 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); } /** * Getter for location. * * @return the location */ public IPath getLocation() { return this.location; } @Override public PatternParameter getParameter() { return this.parameter; } @Override protected String getEditorName() { return PatternEditor.class.getName(); } public void setPurpose(String purpose) { this.purpose = purpose; } @Override protected ResourceFileMap getResourceFileMap() { return null; } public PatternBuilder getPatternBuilder() { return patternBuilder; } /** * mzhao TDQ-4734 refresh the parent node of newly created pattern. */ @Override public boolean performFinish() { Boolean ret = super.performFinish(); if (modelElement instanceof Pattern) { RepositoryNode patternNode = RepositoryNodeHelper.recursiveFindPattern((Pattern) modelElement); CorePlugin.getDefault().refreshDQView(patternNode.getParent()); } return ret; } /* * (non-Javadoc) * * @see * org.talend.dataprofiler.core.ui.wizard.analysis.AbstractAnalysisWizard#openEditor(org.talend.repository.model.IRepositoryNode * ) */ @Override public void openEditor(IRepositoryNode repNode) { PatternItemEditorInput patternItemEditorInput = new PatternItemEditorInput(repNode); CorePlugin.getDefault().openEditor(patternItemEditorInput, PatternEditor.class.getName()); } }