// ============================================================================ // // 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.pattern; 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.dialogs.MessageDialogWithToggle; 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.ui.utils.WorkbenchUtils; import org.talend.dataquality.domain.pattern.Pattern; import org.talend.dq.helper.RepositoryNodeHelper; import org.talend.dq.nodes.PatternRepNode; import org.talend.repository.model.RepositoryNode; import org.talend.resource.EResourceConstant; import org.talend.utils.io.FilesUtils; /** * DOC zqin class global comment. Detailled comment */ public class ExportPatternsWizard extends Wizard { private static Logger log = Logger.getLogger(ExportPatternsWizard.class); private IFolder folder; private ExportPatternsWizardPage page; private boolean isForExchange; private RepositoryNode node; public ExportPatternsWizard(IFolder folder, boolean isForExchange) { this.folder = folder; this.isForExchange = isForExchange; } /** * DOC klliu ExportPatternsWizard constructor comment. * * @param node * @param isForExchange */ public ExportPatternsWizard(RepositoryNode node, boolean isForExchange) { this.node = node; this.isForExchange = isForExchange; this.folder = WorkbenchUtils.getFolder(node); } /* * (non-Javadoc) * * @see org.eclipse.jface.wizard.Wizard#performFinish() */ @Override public boolean performFinish() { String targetFile = page.getTargetFile(); Object[] elements = page.getSelectedPatternsTree().getCheckedElements(); List<Pattern> seletedPatterns = new ArrayList<Pattern>(); for (Object element : elements) { // MOD klliu 2011-03-08 bug 18657 if (element instanceof PatternRepNode) { PatternRepNode patternNode = (PatternRepNode) element; Pattern pattern = patternNode.getPattern(); seletedPatterns.add(pattern); } } if ("".equals(targetFile)) { //$NON-NLS-1$ MessageDialog .openError( getShell(), DefaultMessagesImpl.getString("ExportPatternsWizard.Error"), DefaultMessagesImpl.getString("ExportPatternsWizard.SpecifyValidResource")); //$NON-NLS-1$ //$NON-NLS-2$ return false; } else { File resource = new File(targetFile); if (isForExchange) { ExportFactory.export(resource, folder, seletedPatterns.toArray(new Pattern[seletedPatterns.size()])); for (Iterator<Pattern> iterator = seletedPatterns.iterator(); iterator.hasNext();) { Pattern pattern = iterator.next(); File patternFile = new File(resource, ExportFactory.toLocalFileName(pattern.getName() + ".csv")); //$NON-NLS-1$ if (patternFile.isFile() && patternFile.exists()) { try { FilesUtils.zip(patternFile, patternFile.getPath() + ".zip"); //$NON-NLS-1$ patternFile.delete(); } catch (Exception e) { log.error(e.getMessage(), e); } } } } else { boolean isContinue = true; if (resource.exists()) { isContinue = MessageDialogWithToggle.openConfirm(null, DefaultMessagesImpl.getString("ExportPatternsWizard.waring"), //$NON-NLS-1$ DefaultMessagesImpl.getString("ExportPatternsWizard.fileAlreadyExist")); //$NON-NLS-1$ } if (!isContinue) { return false; } ExportFactory.export(resource, folder, seletedPatterns.toArray(new Pattern[seletedPatterns.size()])); } CorePlugin.getDefault().refreshDQView(RepositoryNodeHelper.getLibrariesFolderNode(EResourceConstant.PATTERNS)); CorePlugin.getDefault().refreshWorkSpace(); return true; } } @Override public void addPages() { page = new ExportPatternsWizardPage(node, isForExchange); addPage(page); } }