// ============================================================================ // // Copyright (C) 2006-2012 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.core.repository.model; import java.util.HashSet; import java.util.List; import java.util.Set; import org.talend.core.model.properties.Property; import org.talend.core.model.repository.ERepositoryObjectType; import org.talend.core.model.repository.IRepositoryViewObject; import org.talend.core.repository.ICheckDeleteItemReference; import org.talend.repository.model.IProxyRepositoryFactory; import org.talend.repository.model.IRepositoryNode; import org.talend.repository.model.ItemReferenceBean; import org.talend.repository.ui.actions.DeleteActionCache; /** * DOC ycbai class global comment. Detailled comment */ public abstract class AbstractCheckDeleteItemReference implements ICheckDeleteItemReference { protected IProxyRepositoryFactory factory = ProxyRepositoryFactory.getInstance(); protected List<? extends IRepositoryNode> deleteNodes; public Set<ItemReferenceBean> getItemReferenceBeans(List<? extends IRepositoryNode> deleteNodes, DeleteActionCache deleteActionCache) { this.deleteNodes = deleteNodes; Set<ItemReferenceBean> refBeans = new HashSet<ItemReferenceBean>(); if (deleteActionCache == null) { deleteActionCache = DeleteActionCache.getInstance(); deleteActionCache.createRecords(); } for (IRepositoryNode repositoryNode : deleteNodes) { refBeans.addAll(checkItemReferenceBeans(factory, deleteActionCache, repositoryNode)); } return refBeans; } protected abstract Set<ItemReferenceBean> checkItemReferenceBeans(IProxyRepositoryFactory factory, DeleteActionCache deleteActionCache, IRepositoryNode currentJobNode); protected boolean isItemInDeleteList(ItemReferenceBean bean, boolean isRefer) { if (deleteNodes == null) { return false; } String itemName; String itemVersion; ERepositoryObjectType itemType; for (IRepositoryNode node : deleteNodes) { IRepositoryViewObject repObj = node.getObject(); Property property = repObj.getProperty(); String label = property.getLabel(); String version = property.getVersion(); ERepositoryObjectType type = repObj.getRepositoryObjectType(); if (isRefer) { itemName = bean.getReferenceItemName(); itemVersion = bean.getReferenceItemVersion(); itemType = bean.getReferenceItemType(); } else { itemName = bean.getItemName(); itemVersion = bean.getItemVersion(); itemType = bean.getItemType(); } if (label.equals(itemName) && version.equals(itemVersion) && type == itemType) { return true; } } return false; } }