// ============================================================================ // // 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.io.File; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.apache.log4j.Logger; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.emf.common.util.URI; import org.talend.commons.emf.FactoriesUtil; import org.talend.commons.utils.io.FilesUtils; import org.talend.core.model.repository.ERepositoryObjectType; import org.talend.core.model.repository.IRepositoryViewObject; import org.talend.core.repository.model.ProxyRepositoryFactory; import org.talend.core.utils.WorkspaceUtils; import org.talend.dataprofiler.core.migration.AbstractWorksapceUpdateTask; import org.talend.dq.indicators.definitions.DefinitionHandler; import org.talend.dq.writer.EMFSharedResources; import org.talend.resource.ResourceManager; import org.talend.resource.ResourceService; /** * TDQ-11101: Rename "Pattern Finder" to "Pattern Frequency Statistics" Task */ public class RenamePatternFinderFolderTask extends AbstractWorksapceUpdateTask { protected static Logger log = Logger.getLogger(RenamePatternFinderFolderTask.class); public static final String PATTERN_FINDER = "Pattern Finder"; //$NON-NLS-1$ private static final String PATTERN_FREQUENCY_STATISTICS = "Pattern Frequency Statistics"; //$NON-NLS-1$ /* * (non-Javadoc) * * @see org.talend.dataprofiler.core.migration.AMigrationTask#doExecute() */ @Override protected boolean doExecute() throws Exception { boolean result = true; File newFolder = WorkspaceUtils.ifolderToFile(ResourceManager.getSysIndicatorPatternFrequencyStatisticsFolder()); // only when "Pattern Frequency Statistics" do not exist, then do rename if (!ResourceManager.getSysIndicatorPatternFrequencyStatisticsFolder().exists()) { // rename folder name File oldFolder = ResourceManager.getSystemIndicatorFolder().getRawLocation().append(PATTERN_FINDER).toFile(); result &= oldFolder.renameTo(newFolder); } try { // replace for the path in TalendProperties:ItemState of indicators String[] indicatorProFileExtentionName = { FactoriesUtil.PROPERTIES_EXTENSION }; result &= FilesUtils.migrateFolder(newFolder, indicatorProFileExtentionName, initIndicatorReplaceMap(), log); // replace for the indicatorDefinition in analysis item file File analysisFolder = WorkspaceUtils.ifolderToFile(ResourceManager.getAnalysisFolder()); String[] analysisFileExtentionName = { FactoriesUtil.ANA }; result &= FilesUtils.migrateFolder(analysisFolder, analysisFileExtentionName, initIndicatorReplaceMap(), log); if (isWorksapcePath()) { for (IRepositoryViewObject viewObject : ProxyRepositoryFactory.getInstance().getAll( ERepositoryObjectType.TDQ_ANALYSIS_ELEMENT)) { ProxyRepositoryFactory.getInstance().reload(viewObject.getProperty()); } } ResourceService.refreshStructure(); } catch (Exception e) { result = false; log.error(e, e); } // should reload definitions and all categories IFile file = ResourceManager.getLibrariesFolder().getFile(DefinitionHandler.FILENAME); file.delete(true, new NullProgressMonitor()); DefinitionHandler.getInstance().copyDefinitionsIntoFolder(ResourceManager.getLibrariesFolder()); URI uri = URI.createPlatformResourceURI(file.getFullPath().toString(), false); EMFSharedResources.getInstance().reloadResource(uri); DefinitionHandler.getInstance().reloadIndicatorsDefinitions(); return result; } /* * (non-Javadoc) * * @see org.talend.dataprofiler.core.migration.IWorkspaceMigrationTask#getOrder() */ public Date getOrder() { return createDate(2015, 10, 26); } /* * (non-Javadoc) * * @seeorg.talend.dataprofiler.core.migration.IWorkspaceMigrationTask# getMigrationTaskType() */ public MigrationTaskType getMigrationTaskType() { return MigrationTaskType.FILE; } /** * DOC msjian Comment method "initIndicatorReplaceMap". * * @return */ public static Map<String, String> initIndicatorReplaceMap() { Map<String, String> replaceStringMap = new HashMap<String, String>(); replaceStringMap.put(PATTERN_FINDER, PATTERN_FREQUENCY_STATISTICS); return replaceStringMap; } }