// ============================================================================
//
// 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 org.eclipse.core.runtime.IPath;
import org.eclipse.emf.common.util.EList;
import org.talend.commons.utils.data.container.RootContainer;
import org.talend.core.model.properties.Item;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.dataprofiler.core.migration.AbstractWorksapceUpdateTask;
import org.talend.dataquality.domain.pattern.Pattern;
import org.talend.dataquality.domain.pattern.PatternComponent;
import org.talend.dataquality.domain.pattern.impl.RegularExpressionImpl;
import org.talend.dataquality.properties.TDQPatternItem;
import org.talend.dq.writer.impl.ElementWriterFactory;
import org.talend.resource.ResourceManager;
/**
* DOC qiongli class global comment. Detailled comment <br/>
*
* $Id: talend.epf 55206 2011-02-15 17:32:14Z mhirt $
*
*/
public class UpdateStartWithBlankPatternTask extends AbstractWorksapceUpdateTask {
private static final String PATTERN_NAME = "Starts with blank"; //$NON-NLS-1$
private static final String JAVA_REGULAR_EXPRESSION = "'^\\s+.*$'";//$NON-NLS-1$
private static final String JAVA_LANGUAGE = "Java";//$NON-NLS-1$
public Date getOrder() {
return createDate(2011, 7, 28);
}
/*
* (non-Jsdoc)
*
* @see org.talend.dataprofiler.core.migration.IMigrationTask#getMigrationTaskType()
*/
public MigrationTaskType getMigrationTaskType() {
return MigrationTaskType.FILE;
}
/*
* (non-Jsdoc) update the regular express for java
*/
@Override
protected boolean doExecute() throws Exception {
IPath realtivePath = ResourceManager.getPatternRegexFolder().getFullPath().append("/text")//$NON-NLS-1$
.makeRelativeTo(ResourceManager.getRootProject().getFullPath());
RootContainer<String, IRepositoryViewObject> tdqViewObjects = ProxyRepositoryFactory.getInstance()
.getTdqRepositoryViewObjects(ERepositoryObjectType.TDQ_PATTERN_REGEX, realtivePath.toString());
for (IRepositoryViewObject viewObject : tdqViewObjects.getMembers()) {
Item item = viewObject.getProperty().getItem();
Pattern pattern = null;
if (item != null && item instanceof TDQPatternItem) {
TDQPatternItem patternItem = (TDQPatternItem) item;
pattern = patternItem.getPattern();
boolean isFound = false;
if (PATTERN_NAME.equals(pattern.getName())) {
EList<PatternComponent> components = pattern.getComponents();
for (PatternComponent pComponet : components) {
RegularExpressionImpl regularExpress = (RegularExpressionImpl) pComponet;
if (JAVA_LANGUAGE.equals(regularExpress.getExpression().getLanguage())) {
regularExpress.getExpression().setBody(JAVA_REGULAR_EXPRESSION);
patternItem.setPattern(pattern);
// MOD yyi 2012-02-08 TDQ-4621:Explicitly set true for updating dependencies.
ElementWriterFactory.getInstance().createPatternWriter().save(patternItem, true);
isFound = true;
break;
}
}
}
if (isFound) {
break;
}
}
}
return true;
}
}