// ============================================================================ // // 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.ui.wizard.parserrule; import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.log4j.Logger; import org.eclipse.core.resources.IFolder; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.wizard.Wizard; import org.talend.dataprofiler.core.CorePlugin; import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl; import org.talend.dataprofiler.core.pattern.ExportFactory; import org.talend.dataprofiler.core.ui.utils.WorkbenchUtils; import org.talend.dataquality.rules.ParserRule; import org.talend.dq.helper.RepositoryNodeHelper; import org.talend.dq.nodes.RuleRepNode; import org.talend.repository.model.IRepositoryNode; import org.talend.repository.model.RepositoryNode; import org.talend.resource.EResourceConstant; import org.talend.utils.io.FilesUtils; /** * DOC klliu class global comment. Detailled comment */ public class ExportParserRuleWizard extends Wizard { private static Logger log = Logger.getLogger(ExportParserRuleWizard.class); private IFolder folder; private IRepositoryNode parserRuleFolder; private ExportParserRuleWizardPage page; private boolean isForExchange; /** * DOC klliu ExportParserRuleWizard constructor comment. * * @param parserRuleFolder2 */ public ExportParserRuleWizard(IRepositoryNode parserRuleFolder) { this.folder = WorkbenchUtils.getFolder((RepositoryNode) parserRuleFolder); this.parserRuleFolder = parserRuleFolder; } public ExportParserRuleWizard(IRepositoryNode parserRuleFolder, boolean isForExchange) { this.folder = WorkbenchUtils.getFolder((RepositoryNode) parserRuleFolder); this.parserRuleFolder = parserRuleFolder; this.isForExchange = isForExchange; } @Override public boolean performFinish() { String targetFile = page.getTargetFile(); Object[] elements = page.getSelectedTree().getCheckedElements(); List<ParserRule> parserRules = new ArrayList<ParserRule>(); for (Object element : elements) { if (element instanceof RuleRepNode) { RuleRepNode ruleNode = (RuleRepNode) element; ParserRule parserRule = (ParserRule) ruleNode.getRule(); parserRules.add(parserRule); } } if ("".equals(targetFile)) { //$NON-NLS-1$ MessageDialog .openError( getShell(), DefaultMessagesImpl.getString("ExportParserRuleWizard.Error"), DefaultMessagesImpl.getString("ExportParserRuleWizard.SpecifyValidResource")); //$NON-NLS-1$ //$NON-NLS-2$ return false; } else { File resource = new File(targetFile); if (isForExchange) { // export for exchange for (Iterator<ParserRule> iterator = parserRules.iterator(); iterator.hasNext();) { ParserRule parserRule = iterator.next(); ExportFactory.export(resource, folder, parserRule); File parserRuleFile = new File(resource, ExportFactory.toLocalFileName(parserRule.getName() + ".csv")); //$NON-NLS-1$ if (parserRuleFile.isFile() && parserRuleFile.exists()) { try { FilesUtils.zip(parserRuleFile, parserRuleFile.getPath() + ".zip"); //$NON-NLS-1$ parserRuleFile.delete(); } catch (Exception e) { log.error(e.getMessage(), e); } } } } else { // Export to local ExportFactory.export(resource, folder, parserRules.toArray(new ParserRule[parserRules.size()])); } CorePlugin.getDefault().refreshDQView(RepositoryNodeHelper.getLibrariesFolderNode(EResourceConstant.RULES_PARSER)); CorePlugin.getDefault().refreshWorkSpace(); return true; } } @Override public void addPages() { page = new ExportParserRuleWizardPage(folder, parserRuleFolder); addPage(page); } }