// ============================================================================
//
// 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.indicator;
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.IFile;
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.commons.emf.FactoriesUtil;
import org.talend.cwm.helper.TaggedValueHelper;
import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl;
import org.talend.dataprofiler.core.pattern.ExportFactory;
import org.talend.dataprofiler.core.ui.utils.UDIUtils;
import org.talend.dataquality.indicators.definition.IndicatorDefinition;
import org.talend.dq.helper.resourcehelper.IndicatorResourceFileHelper;
import org.talend.dq.nodes.SysIndicatorDefinitionRepNode;
import org.talend.utils.io.FilesUtils;
import orgomg.cwm.objectmodel.core.TaggedValue;
/**
* DOC xqliu class global comment. Detailled comment
*/
public class ExportUDIWizard extends Wizard {
private static Logger log = Logger.getLogger(ExportUDIWizard.class);
private IFolder folder;
private ExportUDIWizardPage page;
private boolean isForExchange;
public ExportUDIWizard(IFolder folder, boolean isForExchange) {
this.folder = folder;
this.isForExchange = isForExchange;
}
@Override
public boolean performFinish() {
String targetFile = page.getTargetFile();
Object[] elements = page.getSelectedTree().getCheckedElements();
List<IndicatorDefinition> seletedIndicators = new ArrayList<IndicatorDefinition>();
for (Object element : elements) {
if (element instanceof IFile) {
IFile file = (IFile) element;
if (FactoriesUtil.DEFINITION.equalsIgnoreCase(file.getFileExtension())) {
seletedIndicators.add(IndicatorResourceFileHelper.getInstance().findIndDefinition(file));
}
} else if (element instanceof SysIndicatorDefinitionRepNode
&& !((SysIndicatorDefinitionRepNode) element).isSystemIndicator()) {
SysIndicatorDefinitionRepNode udiElement = (SysIndicatorDefinitionRepNode) element;
seletedIndicators.add(udiElement.getIndicatorDefinition());
}
}
if ("".equals(targetFile)) { //$NON-NLS-1$
MessageDialog
.openError(
getShell(),
DefaultMessagesImpl.getString("ExportUDIWizard.Error"), DefaultMessagesImpl.getString("ExportUDIWizard.SpecifyValidResource")); //$NON-NLS-1$ //$NON-NLS-2$
return false;
} else {
File resource = new File(targetFile);
if (isForExchange) {
ExportFactory.export(resource, folder,
seletedIndicators.toArray(new IndicatorDefinition[seletedIndicators.size()]));
for (Iterator<IndicatorDefinition> iterator = seletedIndicators.iterator(); iterator.hasNext();) {
IndicatorDefinition id = iterator.next();
File idFile = new File(resource, id.getName() + ".csv"); //$NON-NLS-1$
if (idFile.isFile() && idFile.exists()) {
try {
List<File> udiAndJarfiles = new ArrayList<File>();
udiAndJarfiles.add(idFile);
// MOD by zshen for bug 18724 2011.03.01
TaggedValue tv = TaggedValueHelper.getTaggedValue(TaggedValueHelper.JAR_FILE_PATH,
id.getTaggedValue());
if (tv != null) {
for (IFile udiJarFile : UDIUtils.getLibJarFileList()) {
for (String jarName : tv.getValue().split("\\|\\|")) { //$NON-NLS-1$
if (udiJarFile.getName().equals(jarName)) {
udiAndJarfiles.add(udiJarFile.getLocation().toFile());
break;
}
}
}
}
// ~
FilesUtils.zips(udiAndJarfiles.toArray(new File[udiAndJarfiles.size()]), idFile.getPath() + ".zip"); //$NON-NLS-1$
idFile.delete();
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
}
return true;
} 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) {
ExportFactory.export(resource, folder,
seletedIndicators.toArray(new IndicatorDefinition[seletedIndicators.size()]));
return true;
}
return false;
}
}
}
@Override
public void addPages() {
page = new ExportUDIWizardPage(folder, isForExchange);
addPage(page);
}
}