// ============================================================================
//
// 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.mdm.repository.ui.actions.datacontainer;
import java.io.File;
import java.util.List;
import javax.xml.ws.WebServiceException;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.FileDialog;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.mdm.repository.core.datacontent.IDataContentProcess;
import org.talend.mdm.repository.core.service.DataClusterService;
import org.talend.mdm.repository.core.service.RepositoryWebServiceAdapter;
import org.talend.mdm.repository.i18n.Messages;
import org.talend.mdm.repository.model.mdmmetadata.MDMServerDef;
import org.talend.mdm.repository.model.mdmproperties.MDMServerObjectItem;
import org.talend.mdm.repository.utils.IOUtil;
import org.talend.mdm.workbench.serverexplorer.ui.dialogs.SelectServerDefDialog;
import com.amalto.workbench.image.EImage;
import com.amalto.workbench.image.ImageCache;
import com.amalto.workbench.utils.XtentisException;
import com.amalto.workbench.webservices.TMDMService;
import com.amalto.workbench.webservices.WSPing;
/**
* DOC hbhong class global comment. Detailled comment
*/
public class ExportDataClusterAction extends AbstractDataClusterAction {
private static Logger log = Logger.getLogger(ExportDataClusterAction.class);
/**
* DOC hbhong ExportDataClusterAction constructor comment.
*
* @param text
*/
public ExportDataClusterAction() {
super(Messages.ExportDataClusterAction_title);
setImageDescriptor(ImageCache.getImage(EImage.EXPORT.getPath()));
}
@Override
protected void doRun() {
List<Object> selectedObject = getSelectedObject();
if (!selectedObject.isEmpty()) {
IRepositoryViewObject viewObj = (IRepositoryViewObject) selectedObject.get(0);
SelectServerDefDialog dialog = new SelectServerDefDialog(getShell());
if (dialog.open() == IDialogConstants.OK_ID) {
MDMServerDef serverDef = dialog.getSelectedServerDef();
MDMServerObjectItem item = (MDMServerObjectItem) viewObj.getProperty().getItem();
String dName = item.getMDMServerObject().getName();
try {
FileDialog fd = new FileDialog(getShell(), SWT.SAVE);
fd.setFilterExtensions(new String[] { "*.zip" }); //$NON-NLS-1$
String fPath = fd.open();
if (fPath != null) {
TMDMService service = RepositoryWebServiceAdapter.getMDMService(serverDef);
service.ping(new WSPing(Messages.ExportDataClusterAction_exportContent));
DataClusterService dataClusterService = DataClusterService.getIntance();
if (dataClusterService.isExistDataCluster(service, dName)) {
File tempFolder = IOUtil.getTempFolder();
String tempFolderPath = tempFolder.getAbsolutePath();
dataClusterService.storeIndexFile(tempFolderPath, dName);
//
IDataContentProcess process = dataClusterService.getNewExportContentProcess(service, tempFolderPath,
dName, fPath);
try {
process.run();
} catch (InterruptedException e) {
// do nothing
return;
}
MultiStatus status = process.getResult();
if (status != null && status.getChildren().length > 0) {
MessageDialog.openError(getShell(), Messages._Error,
Messages.bind(Messages.ExportDataClusterAction_failedExportContent, dName));
} else {
MessageDialog.openInformation(getShell(), Messages.ExportDataClusterAction_exportContent,
Messages.bind(Messages.ExportDataClusterAction_successExport, dName));
}
} else {
MessageDialog.openInformation(getShell(), Messages.Common_Warning,
Messages.bind(Messages.ExportDataClusterAction_noContainerFound, dName));
}
}
} catch (XtentisException e) {
log.error(e.getMessage(), e);
} catch (WebServiceException e) {
MessageDialog.openError(getShell(), Messages.ExportDataClusterAction_exportContent,
Messages.AbstractDataClusterAction_ConnectFailed);
}
}
}
}
}