// ============================================================================ // // 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.migration.impl; import java.util.Date; import java.util.List; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.talend.cwm.dependencies.DependenciesHandler; import org.talend.dataprofiler.core.migration.AbstractWorksapceUpdateTask; import org.talend.dataquality.analysis.Analysis; import org.talend.dataquality.domain.pattern.Pattern; import org.talend.dataquality.helpers.AnalysisHelper; import org.talend.dataquality.indicators.definition.IndicatorDefinition; import org.talend.dq.helper.resourcehelper.AnaResourceFileHelper; import org.talend.resource.ResourceManager; /** * @author scorreia * * This migration task updates the dependencies between analyses and patterns. See bug 9497 (and a consequence 9461). * This task must be executed before moving all patterns in the "Rules/SQL" folder. */ public class UpdateDependenciesFileTask extends AbstractWorksapceUpdateTask { /* * (non-Javadoc) * * @see org.talend.dataprofiler.core.migration.AMigrationTask#doExecute() */ @Override protected boolean doExecute() throws Exception { // MOD scorreia 2009-10-07 load all analyses and find those which use patterns. updateDependencies(ResourceManager.getAnalysisFolder()); return true; } /** * Method "updateDependencies" updates dependencies between elements in TOP. * * @param analysesSubFolder * @throws CoreException */ private void updateDependencies(IFolder analysesSubFolder) throws CoreException { for (IResource resource : analysesSubFolder.members()) { if (resource instanceof IFolder) { IFolder folder = (IFolder) resource; updateDependencies(folder); } if (resource instanceof IFile) { IFile file = (IFile) resource; final Analysis analysis = AnaResourceFileHelper.getInstance().findAnalysis(file); // update dependency between analyses and patterns if (analysis != null) { final List<Pattern> patterns = AnalysisHelper.getPatterns(analysis); for (Pattern pattern : patterns) { DependenciesHandler.getInstance().setDependencyOn(analysis, pattern); AnaResourceFileHelper.getInstance().save(analysis); } // update dependency between analyses and dq rules final List<IndicatorDefinition> userDefinedIndicators = AnalysisHelper.getUserDefinedIndicators(analysis); for (IndicatorDefinition indicatorDefinition : userDefinedIndicators) { DependenciesHandler.getInstance().setDependencyOn(analysis, indicatorDefinition); AnaResourceFileHelper.getInstance().save(analysis); } } } } } /* * (non-Javadoc) * * @see org.talend.dataprofiler.core.migration.IWorkspaceMigrationTask#getMigrationTaskType() */ public MigrationTaskType getMigrationTaskType() { return MigrationTaskType.FILE; } /* * (non-Javadoc) * * @see org.talend.dataprofiler.core.migration.IWorkspaceMigrationTask#getOrder() */ public Date getOrder() { // MOD xqliu 2010-08-02 bug 14698, this task must be called after MergeMetadataTask done. return createDate(2010, 6, 23); // return createDate(2009, 6, 1); } }