// ============================================================================
//
// 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.action.actions;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.repository.ui.actions.RestoreAction;
import org.talend.dataprofiler.core.CorePlugin;
import org.talend.dataprofiler.core.ui.utils.RepNodeUtils;
import org.talend.dataprofiler.core.ui.views.DQRespositoryView;
import org.talend.dataprofiler.core.ui.views.resources.IRepositoryObjectCRUDAction;
import org.talend.dq.helper.RepositoryNodeHelper;
import org.talend.dq.nodes.DQRepositoryNode;
import org.talend.repository.model.IRepositoryNode;
import org.talend.repository.model.RepositoryNode;
/**
* @author qiongli Restore recycle bin element
*/
public class DQRestoreAction extends RestoreAction {
private IRepositoryObjectCRUDAction repositoryObjectCRUD = RepNodeUtils.getRepositoryObjectCRUD();
/**
*
*/
public DQRestoreAction() {
// setImageDescriptor(ImageLib.getImageDescriptor(ImageLib.ADD_ACTION));
super();
// setText(DefaultMessagesImpl.getString("DQRestoreAction.restore"));
}
@Override
public void run() {
repositoryObjectCRUD.refreshDQViewForRemoteProject();
// ADD msjian TDQ-7006 2013-7-24: after refresh get the selection to check.
if (!repositoryObjectCRUD.isSelectionAvailable()) {
repositoryObjectCRUD.showWarningDialog();
return;
}
// TDQ-7006~
// MOD qiongli 2011-5-9 bug 21035,avoid to unload resource.
super.setAvoidUnloadResources(true);
super.run();
CorePlugin.getDefault().refreshDQView();
CorePlugin.getDefault().refreshWorkSpace();
// MOD gdbu 2011-11-17 TDQ-3969 : after restore items re-filter the tree , to create a new list .
if (DQRepositoryNode.isOnFilterring()) {
RepositoryNodeHelper.fillTreeList(null);
RepositoryNodeHelper
.setFilteredNode(RepositoryNodeHelper.getRootNode(ERepositoryObjectType.TDQ_DATA_PROFILING, true));
}
}
/*
* (non-Javadoc)
*
* @see org.talend.repository.ui.actions.RestoreAction#restoreNode(org.talend.repository.model.RepositoryNode)
*/
@Override
protected void restoreNode(RepositoryNode node) {
RepositoryNode tempNode = node;
List<IRepositoryNode> recycleBinNodeFirstLevelChildren = ((RepositoryNode) RepositoryNodeHelper.getRecycleBinRepNode())
.getChildren();
Collection<IRepositoryNode> allRecycleBinNodes = RepositoryNodeHelper
.findAllChildrenNodes(recycleBinNodeFirstLevelChildren);
Iterator<IRepositoryNode> iterator = allRecycleBinNodes.iterator();
while (iterator.hasNext()) {
IRepositoryNode next = iterator.next();
if (next.equals(node)) {
tempNode = (RepositoryNode) next;
break;
}
}
super.restoreNode(tempNode);
}
@Override
public void init(TreeViewer viewer, IStructuredSelection selection) {
}
@Override
public ISelection getSelection() {
DQRespositoryView findView = CorePlugin.getDefault().getRepositoryView();
ISelection selection = findView.getCommonViewer().getSelection();
return selection;
}
@Override
protected ISelection getRepositorySelection() {
return this.getSelection();
}
}