// ============================================================================
//
// 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.Collection;
import java.util.Date;
import org.apache.commons.lang.StringUtils;
import org.eclipse.emf.common.util.EList;
import org.talend.dataprofiler.core.migration.AbstractWorksapceUpdateTask;
import org.talend.dataprofiler.core.migration.helper.WorkspaceVersionHelper;
import org.talend.dataprofiler.migration.helper.VersionComparator;
import org.talend.dataquality.analysis.Analysis;
import org.talend.dataquality.helpers.IndicatorHelper;
import org.talend.dataquality.indicators.Indicator;
import org.talend.dq.helper.resourcehelper.AnaResourceFileHelper;
import org.talend.dq.writer.impl.ElementWriterFactory;
import org.talend.resource.ResourceManager;
import org.talend.utils.ProductVersion;
/**
* DOC bZhou class global comment. Detailled comment
*/
public class ThresholdsValuesTask extends AbstractWorksapceUpdateTask {
/*
* (non-Javadoc)
*
* @see org.talend.dataprofiler.core.migration.AWorkspaceTask#valid()
*/
@Override
public boolean valid() {
// There handle a special case, the Thresholds is different in TOP and TDQ in 3.2.2(r33000)
ProductVersion vesion = WorkspaceVersionHelper.getVesion();
ProductVersion version322 = new ProductVersion(3, 2, 2);
if (VersionComparator.isEqual(vesion, version322) && ResourceManager.getReportsFolder().exists()) {
return false;
}
return super.valid();
}
/*
* (non-Javadoc)
*
* @see org.talend.dataprofiler.core.migration.IWorkspaceMigrationTask#getMigrationTaskType()
*/
public MigrationTaskType getMigrationTaskType() {
return MigrationTaskType.FILE;
}
/*
* (non-Javadoc)
*
* @see org.talend.dataprofiler.core.migration.AMigrationTask#doExecute()
*/
@Override
protected boolean doExecute() throws Exception {
Collection<Analysis> allAnalysis = (Collection<Analysis>) AnaResourceFileHelper.getInstance().getAllElement();
for (Analysis analysis : allAnalysis) {
EList<Indicator> indicators = analysis.getResults().getIndicators();
for (Indicator indicator : indicators) {
String[] pThresholds = IndicatorHelper.getIndicatorThresholdInPercent(indicator);
if (pThresholds != null) {
String sOldMin = pThresholds[0];
String sOldMax = pThresholds[1];
String sNewMin = null, sNewMax = null;
if (StringUtils.isNotBlank(sOldMin)) {
sNewMin = String.valueOf(Double.valueOf(sOldMin) / 100);
}
if (StringUtils.isNotBlank(sOldMax)) {
sNewMax = String.valueOf(Double.valueOf(sOldMax) / 100);
}
IndicatorHelper.setIndicatorThresholdInPercent(indicator.getParameters(), sNewMin, sNewMax);
}
}
ElementWriterFactory.getInstance().createAnalysisWrite().save(analysis);
}
return true;
}
/*
* (non-Javadoc)
*
* @see org.talend.dataprofiler.core.migration.IMigrationTask#getOrder()
*/
public Date getOrder() {
// MOD xqliu 2010-08-02 bug 14698, this task must be called after MergeMetadataTask done.
return createDate(2010, 6, 25);
// return createDate(2010, 4, 6);
}
}