| /******************************************************************************* |
| * Copyright (c) 2003, 2005 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.wst.common.frameworks.internal.operations; |
| |
| import java.util.ArrayList; |
| import java.util.Collection; |
| import java.util.Iterator; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.wst.common.frameworks.internal.enablement.EnablementManager; |
| import org.eclipse.wst.common.frameworks.internal.plugin.WTPCommonPlugin; |
| |
| public class ComposedExtendedOperationHolder { |
| |
| private ArrayList preOps = null; |
| private ArrayList postOps = null; |
| |
| protected ComposedExtendedOperationHolder() { |
| super(); |
| } |
| |
| public static ComposedExtendedOperationHolder createExtendedOperationHolder(String operationID) { |
| Collection extensions = (Collection) OperationExtensionReader.getExtensionPoints().get(operationID); |
| if (extensions == null) { |
| return null; |
| } |
| |
| ComposedExtendedOperationHolder extOperationHolder = new ComposedExtendedOperationHolder(); |
| Object preOp = null; |
| Object postOp = null; |
| OperationExtension currentExt = null; |
| for (Iterator iterator = extensions.iterator(); iterator.hasNext();) { |
| currentExt = (OperationExtension) iterator.next(); |
| if (EnablementManager.INSTANCE.getIdentifier(currentExt.getExtensionId(), null).isEnabled()) { |
| try { |
| preOp = currentExt.getPreOperation(); |
| if (preOp != null) { |
| extOperationHolder.addPreOperation(preOp); |
| } |
| } catch (CoreException e) { |
| WTPCommonPlugin.logError(e); |
| } |
| try { |
| postOp = currentExt.getPostOperation(); |
| if (postOp != null) { |
| extOperationHolder.addPostOperation(postOp); |
| } |
| } catch (CoreException e) { |
| WTPCommonPlugin.logError(e); |
| } |
| } |
| } |
| return extOperationHolder; |
| } |
| |
| protected void addPreOperation(Object preOperation) { |
| if (preOps == null) { |
| preOps = new ArrayList(); |
| } |
| preOps.add(preOperation); |
| } |
| |
| protected void addPostOperation(Object postOperation) { |
| if (postOps == null) { |
| postOps = new ArrayList(); |
| } |
| postOps.add(postOperation); |
| } |
| |
| public boolean hasPreOps() { |
| return preOps != null; |
| } |
| |
| public boolean hasPostOps() { |
| return postOps != null; |
| } |
| |
| public ArrayList getPostOps() { |
| return postOps; |
| } |
| |
| public ArrayList getPreOps() { |
| return preOps; |
| } |
| |
| } |