// ============================================================================ // // 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.bridge; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.talend.commons.runtime.model.repository.ERepositoryStatus; import org.talend.core.model.repository.IRepositoryViewObject; import org.talend.core.repository.model.ItemReferenceBean; import org.talend.core.repository.ui.actions.DeleteActionCache; import org.talend.core.repository.utils.RepositoryNodeDeleteManager; import org.talend.mdm.repository.core.bridge.AbstractBridgeRepositoryAction; import org.talend.mdm.repository.core.command.CommandManager; import org.talend.mdm.repository.core.command.ICommand; import org.talend.mdm.repository.i18n.Messages; import org.talend.mdm.repository.models.FolderRepositoryObject; import org.talend.repository.model.IRepositoryNode; /** * DOC hbhong class global comment. Detailled comment */ public class DeleteAction extends AbstractBridgeRepositoryAction { public DeleteAction() { super(new org.talend.core.repository.ui.actions.DeleteAction()); setText(Messages.RemoveFromRepositoryAction_removeFromRepository); } @Override public String getGroupName() { return GROUP_EDIT; } @Override protected void doRun() { super.doRun(); List<IRepositoryNode> remainNodes = getRemainNodes(); if (!remainNodes.isEmpty()) { for (IRepositoryNode node : remainNodes) { IRepositoryViewObject viewObj = node.getObject(); if (viewObj instanceof FolderRepositoryObject) { removeFolderObject(viewObj); } else { removeServerObject(viewObj); } } } commonViewer.refresh(); } private List<IRepositoryNode> getRemainNodes() { ISelection selection = getSelectionProvider().getSelection(); List<IRepositoryNode> nodes = new LinkedList<IRepositoryNode>(); if (!selection.isEmpty()) { for (Iterator il = ((IStructuredSelection) selection).iterator(); il.hasNext();) { IRepositoryNode node = (IRepositoryNode) il.next(); nodes.add(node); } final DeleteActionCache deleteActionCache = DeleteActionCache.getInstance(); deleteActionCache.setGetAlways(false); deleteActionCache.setDocRefresh(false); deleteActionCache.createRecords(); final List<ItemReferenceBean> unDeleteItems = RepositoryNodeDeleteManager.getInstance().getUnDeleteItems(nodes, deleteActionCache); } return nodes; } private void removeFolderObject(IRepositoryViewObject viewObj) { for (IRepositoryViewObject childObj : viewObj.getChildren()) { if (childObj instanceof FolderRepositoryObject) { removeFolderObject(childObj); } else { removeServerObject(childObj); } } } private void removeServerObject(IRepositoryViewObject viewObj) { ERepositoryStatus repositoryStatus = viewObj.getRepositoryStatus(); if (repositoryStatus == ERepositoryStatus.DELETED) { CommandManager.getInstance().pushCommand(ICommand.CMD_DELETE, viewObj.getId(), viewObj.getLabel()); } } }