// ============================================================================ // // 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.ArrayList; 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.emf.common.util.EList; import org.talend.core.model.metadata.builder.connection.Connection; import org.talend.cwm.helper.ConnectionHelper; import org.talend.cwm.helper.SwitchHelpers; import org.talend.cwm.helper.TaggedValueHelper; import org.talend.dataprofiler.core.migration.AbstractWorksapceUpdateTask; import org.talend.dq.helper.resourcehelper.PrvResourceFileHelper; import org.talend.resource.ResourceManager; import org.talend.utils.security.CryptoHelper; import orgomg.cwm.objectmodel.core.TaggedValue; /** * DOC hcheng class global comment. Delete the password stored in Tagged values of the dataprovider. Encrypt the * password stored in the Tagged values of the providerConnection. * */ public class EncryptAndDecryptPasswordTask extends AbstractWorksapceUpdateTask { /* * (non-Javadoc) * * @see org.talend.dataprofiler.core.migration.AMigrationTask#doExecute() */ @Override protected boolean doExecute() throws Exception { IFolder folder = ResourceManager.getConnectionFolder(); IResource[] resource = folder.members(); if (resource.length > 0) { for (IResource re : resource) { if (re instanceof IFile) { IFile file = (IFile) re; Connection tdDataProvider = PrvResourceFileHelper.getInstance().findProvider(file); if (tdDataProvider != null) { encryptDataProvider(tdDataProvider); } } } } return true; } /** * DOC hcheng Comment method "encryptDataProvider". * * @param dataProvider * @return */ public static Connection encryptDataProvider(Connection dataProvider) { // Delete DataProvider password tag List<TaggedValue> dpList = new ArrayList<TaggedValue>(); EList<TaggedValue> taggedValues = dataProvider.getTaggedValue(); dpList.addAll(taggedValues); if (dpList != null && dpList.size() > 0) { int dpSize = dpList.size(); for (int j = 0; j < dpSize; ++j) { Object dpObj = dpList.get(j); if (dpObj != null) { TaggedValue dp = (TaggedValue) dpObj; if (TaggedValueHelper.PASSWORD.equals(dp.getTag())) { taggedValues.remove(dp); } } } } // Connection password encrypt Connection tdpConn = SwitchHelpers.CONNECTION_SWITCH.doSwitch(dataProvider); if (tdpConn != null) { EList<TaggedValue> tvList = tdpConn.getTaggedValue(); if (tvList != null && tvList.size() > 0) { int tvSize = tvList.size(); for (int j = 0; j < tvSize; ++j) { Object tvObj = tvList.get(j); if (tvObj != null) { TaggedValue tv = (TaggedValue) tvObj; if (TaggedValueHelper.PASSWORD.equals(tv.getTag())) { tv.setValue(new CryptoHelper(ConnectionHelper.PASSPHRASE).encrypt(tv.getValue())); } } } } } PrvResourceFileHelper.getInstance().save(dataProvider); return dataProvider; } /* * (non-Javadoc) * * @see org.talend.dataprofiler.core.migration.IWorkspaceMigrationTask#getOrder() */ public Date getOrder() { return createDate(2009, 3, 3); } /* * (non-Javadoc) * * @seeorg.talend.dataprofiler.core.migration.IWorkspaceMigrationTask# getMigrationTaskType() */ public MigrationTaskType getMigrationTaskType() { return MigrationTaskType.FILE; } }