diff options
Diffstat (limited to 'plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/ejb/provider/GroupedEJBJarItemProvider.java')
-rw-r--r-- | plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/ejb/provider/GroupedEJBJarItemProvider.java | 381 |
1 files changed, 0 insertions, 381 deletions
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/ejb/provider/GroupedEJBJarItemProvider.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/ejb/provider/GroupedEJBJarItemProvider.java deleted file mode 100644 index 675747042..000000000 --- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/ejb/provider/GroupedEJBJarItemProvider.java +++ /dev/null @@ -1,381 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2006 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.jst.j2ee.internal.ejb.provider; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.Hashtable; -import java.util.List; -import java.util.Map; - -import org.eclipse.emf.common.notify.AdapterFactory; -import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.common.notify.NotificationWrapper; -import org.eclipse.emf.common.notify.impl.NotificationImpl; -import org.eclipse.jst.j2ee.ejb.EJBJar; -import org.eclipse.jst.j2ee.ejb.EjbPackage; -import org.eclipse.jst.j2ee.ejb.EnterpriseBean; -import org.eclipse.jst.j2ee.ejb.Entity; -import org.eclipse.jst.j2ee.ejb.MessageDriven; -import org.eclipse.jst.j2ee.ejb.Session; -import org.eclipse.jst.j2ee.internal.J2EEVersionConstants; -import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin; -import org.eclipse.jst.j2ee.internal.provider.J2EEItemProvider; - - -/** - * @author Sachin P Patel - * - * To change this generated comment edit the template variable "typecomment": - * Window>Preferences>Java>Templates. To enable and disable the creation of type comments go to - * Window>Preferences>Java>Code Generation. - */ -public class GroupedEJBJarItemProvider extends EJBJarItemProvider { - - private GroupedSessionItemProvider sessionProvider = null; - private GroupedEntityItemProvider entityProvider = null; - private GroupedMessageItemProvider messageProvider = null; - - private static Hashtable sessionTable = new Hashtable(); - private static Hashtable entityTable = new Hashtable(); - private static Hashtable messageTable = new Hashtable(); - - private static final String SESSION = EJBUIMessages.GroupedEJBJarItemProvider_UI_0; - private static final String ENTITY = EJBUIMessages.GroupedEJBJarItemProvider_UI_1; - private static final String MESSAGE = EJBUIMessages.GroupedEJBJarItemProvider_UI_2; - - // Normally there is one instance of an item provider for all instances of the objecct - // in the tree. The item provider would be stateless. However, because we are doing tricks - // here, we are keeping track of all items this provider manages. The key in the map is the - // object (EJBJar), and the value is the children nodes that we inserted - - protected Map children = new HashMap(); - private boolean showAssemblyDescriptor; - private boolean isDisposing; - - public GroupedEJBJarItemProvider(AdapterFactory adapterFactory, boolean showAssemblyDescriptor) { - super(adapterFactory); - this.showAssemblyDescriptor = showAssemblyDescriptor; - } - - @Override - public Collection getChildren(Object object) { - List result = initChildren(object); - if (showAssemblyDescriptor) { - if (((EJBJar) object).getAssemblyDescriptor() != null) - result.add(((EJBJar) object).getAssemblyDescriptor()); - } - return result; - } - - protected List initChildren(Object object) { - EJBJar ejbJar = (EJBJar) object; - List allRootBeans = getAllRootBeans(ejbJar); - - boolean is20Jar = is20Jar(ejbJar); - - List localChildren = new ArrayList(5); - - List entityBeans = new ArrayList(); - List sessionBeans = new ArrayList(); - List messageBeans = new ArrayList(); - - catagorizeBeans(allRootBeans, entityBeans, sessionBeans, messageBeans); - orderBeans(entityBeans); - orderBeans(sessionBeans); - orderBeans(messageBeans); - - //ENABLE FOR: NOT TO SHOW EMPTY GROUPS - //if (sessionBeans.size() > 0) { - if (sessionTable.get(ejbJar) == null) { - //create new item provider instance - sessionProvider = new GroupedSessionItemProvider(adapterFactory, null, getImage(SESSION), object, sessionBeans); - sessionTable.put(ejbJar, sessionProvider); - localChildren.add(sessionProvider); - } else { - //use existing instance from table - localChildren.add(sessionTable.get(ejbJar)); - } - //} - - //ENABLE FOR: NOT TO SHOW EMPTY GROUPS - //if (entityBeans.size() > 0) { - if (entityTable.get(ejbJar) == null) { - //create new item provider instance - entityProvider = new GroupedEntityItemProvider(adapterFactory, null, getImage(ENTITY), object, entityBeans); - entityTable.put(ejbJar, entityProvider); - localChildren.add(entityProvider); - } else { - //use existing instance from table - localChildren.add(entityTable.get(ejbJar)); - } - //} - - //ENABLE FOR: NOT TO SHOW EMPTY GROUPS - //if (is20Jar && messageBeans.size() > 0) { - if (is20Jar) { - if (messageTable.get(ejbJar) == null) { - //create new item provider instance - messageProvider = new GroupedMessageItemProvider(adapterFactory, null, getImage(MESSAGE), object, messageBeans); - messageTable.put(ejbJar, messageProvider); - localChildren.add(messageProvider); - } else { - //use existing instance from table - localChildren.add(messageTable.get(ejbJar)); - } - } - //} - - children.put(object, localChildren); - - return localChildren; - } - - protected void orderBeans(List beans) { - Object[] beansArray = beans.toArray(); - Arrays.sort(beansArray, EJBNameComparator.singleton()); - beans.clear(); - beans.addAll(Arrays.asList(beansArray)); - } - - protected static List getAllRootBeans(EJBJar ejbJar) { - return ejbJar.getEnterpriseBeans(); - } - - protected void catagorizeBeans(List allRootBeans, List entityBeans, List sessionBeans, List messageBeans) { - for (int i = 0; i < allRootBeans.size(); i++) { - if (((EnterpriseBean) allRootBeans.get(i)).isSession()) { - sessionBeans.add(allRootBeans.get(i)); - } else if (((EnterpriseBean) allRootBeans.get(i)).isEntity()) { - entityBeans.add(allRootBeans.get(i)); - } else if (((EnterpriseBean) allRootBeans.get(i)).isMessageDriven()) { - messageBeans.add(allRootBeans.get(i)); - } - } - } - - static protected GroupedSessionItemProvider getSessionNode(Object object) { - return (GroupedSessionItemProvider) sessionTable.get(object); - } - - static protected GroupedEntityItemProvider getEntityNode(Object object) { - return (GroupedEntityItemProvider) entityTable.get(object); - } - - static protected GroupedMessageItemProvider getMessageNode(Object object) { - return (GroupedMessageItemProvider) messageTable.get(object); - } - - @Override - public Object getImage(String type) { - if (type.equals(SESSION)) - return J2EEPlugin.getPlugin().getImage("sessionBean_obj"); //$NON-NLS-1$ - else if (type.equals(MESSAGE)) - return J2EEPlugin.getPlugin().getImage("message_bean_obj"); //$NON-NLS-1$ - else if (type.equals(ENTITY)) - return J2EEPlugin.getPlugin().getImage("entitybean_obj"); //$NON-NLS-1$ - else - return null; - } - - private boolean is20Jar(EJBJar ejbJar) { - switch (ejbJar.getVersionID()) { - case J2EEVersionConstants.EJB_1_0_ID : - case J2EEVersionConstants.EJB_1_1_ID : - return false; - case J2EEVersionConstants.EJB_2_0_ID : - case J2EEVersionConstants.EJB_2_1_ID : - default : - return true; - } - } - - @Override - public void notifyChanged(Notification notification) { - if (notification.getEventType() == Notification.REMOVING_ADAPTER && notification.getOldValue() == this && !isDisposing) { - removeTarget(notification); - return; - } - if (notification.getFeature() == EjbPackage.eINSTANCE.getEJBJar_EnterpriseBeans()) { - J2EEItemProvider provider = beansChanged((EJBJar) notification.getNotifier(), notification.getEventType(), notification.getOldValue(), notification.getNewValue(), notification.getPosition()); - - //EJB's group has not been added yet, need to add group to tree before EJB can be added - if (provider == null) { - Notification msg = new NotificationImpl(Notification.ADD, null, getEJBItemProvider((EnterpriseBean) notification.getNewValue()), 1); - NotificationWrapper notificationWrapper = new NotificationWrapper(notification.getNotifier(), msg); - fireNotifyChanged(notificationWrapper); - provider = beansChanged((EJBJar) notification.getNotifier(), notification.getEventType(), notification.getOldValue(), notification.getNewValue(), notification.getPosition()); - } - - //Fire notification for EJB add or remove - NotificationWrapper notificationWrapper = new NotificationWrapper(provider, notification); - fireNotifyChanged(notificationWrapper); - - //ENABLE FOR: NOT TO SHOW EMPTY GROUPS - //If Group is empty remove the group - /* - * if (provider != null && provider.getChildren().size() == 0) { Notification msg = new - * NotificationImpl(Notification.REMOVE, provider, null, 1); notificationWrapper = new - * NotificationWrapper(notification.getNotifier(), msg); - * fireNotifyChanged(notificationWrapper); - * - * //Group is removed so flush out table entry if (provider instanceof - * GroupedSessionItemProvider) { sessionTable.remove(notification.getNotifier()); - * provider = null; } else if (provider instanceof GroupedEntityItemProvider) { - * entityTable.remove(notification.getNotifier()); provider = null; } else if (provider - * instanceof GroupedMessageItemProvider) { - * messageTable.remove(notification.getNotifier()); provider = null; } - * - * //If all groups are removed remove the extended children List allChildren = new - * ArrayList(this.getChildren((EJBJar) notification.getNotifier())); - * if(sessionTable.get(notification.getNotifier()) == null && - * entityTable.get(notification.getNotifier()) == null && - * messageTable.get(notification.getNotifier()) == null) { for(int i = 0; i < - * allChildren.size(); i++) { Notification message = new - * NotificationImpl(Notification.REMOVE, allChildren.get(i), null, 1); - * notificationWrapper = new NotificationWrapper(notification.getNotifier(), message); - * fireNotifyChanged(notificationWrapper); } this.getChildren((EJBJar) - * notification.getNotifier()).clear(); } } - */ - } else { - super.notifyChanged(notification); - } - } - - protected J2EEItemProvider beansChanged(EJBJar ejbJar, int eventType, Object oldValue, Object newValue, int pos) { - J2EEItemProvider provider = getItemProvider(ejbJar, oldValue, newValue); - - if (provider != null) { - Collection grandChildren = provider.getChildren(); - - switch (eventType) { - case Notification.ADD : { - if (!grandChildren.contains(newValue)) - grandChildren.add(newValue); - - break; - } - case Notification.ADD_MANY : { - grandChildren.addAll((Collection) newValue); - break; - } - case Notification.REMOVE : { - grandChildren.remove(oldValue); - break; - } - case Notification.REMOVE_MANY : { - grandChildren.removeAll((Collection) oldValue); - break; - } - } - } else { - //GroupedProvider for new bean does not exist, create one. - List allRootBeans = getAllRootBeans(ejbJar); - - List entityBeans = new ArrayList(); - List sessionBeans = new ArrayList(); - List messageBeans = new ArrayList(); - - catagorizeBeans(allRootBeans, entityBeans, sessionBeans, messageBeans); - - if (newValue instanceof Session) { - sessionProvider = new GroupedSessionItemProvider(adapterFactory, null, getImage(SESSION), ejbJar, sessionBeans); - sessionTable.put(ejbJar, sessionProvider); - } else if (newValue instanceof Entity) { - entityProvider = new GroupedEntityItemProvider(adapterFactory, null, getImage(ENTITY), ejbJar, entityBeans); - entityTable.put(ejbJar, entityProvider); - } else if (newValue instanceof MessageDriven) { - messageProvider = new GroupedMessageItemProvider(adapterFactory, null, getImage(MESSAGE), ejbJar, messageBeans); - messageTable.put(ejbJar, messageProvider); - } - } - return provider; - } - - static public J2EEItemProvider getEJBJarItemProvider(EJBJar ejbJar, Object bean) { - J2EEItemProvider provider = null; - if (ejbJar != null && bean != null) { - if (bean instanceof Session) { - provider = getSessionNode(ejbJar); - } else if (bean instanceof Entity) { - provider = getEntityNode(ejbJar); - } else if (bean instanceof MessageDriven) { - provider = getMessageNode(ejbJar); - } - } - return provider; - } - - static public J2EEItemProvider getEJBItemProvider(EnterpriseBean bean) { - if (bean != null) { - EJBJar ejbJar = bean.getEjbJar(); - return getEJBJarItemProvider(ejbJar, bean); - } - return null; - } - - protected J2EEItemProvider getItemProvider(EJBJar ejbJar, Object oldValue, Object newValue) { - if (newValue != null) - return getEJBJarItemProvider(ejbJar, newValue); - else if (oldValue != null) - return getEJBJarItemProvider(ejbJar, oldValue); - else - return null; - } - - public static boolean isRootBean(EnterpriseBean bean) { - List allRootBeans = getAllRootBeans(bean.getEjbJar()); - if (allRootBeans != null && allRootBeans.contains(bean)) { - return true; - } - return false; - } - - // Utility method for garbage collection - if EJBJar removed, remove - // all entires in table for EJBJar - static public void flushOutTableEntriesForEJBJar(EJBJar ejbJar) { - sessionTable.remove(ejbJar); - entityTable.remove(ejbJar); - messageTable.remove(ejbJar); - } - - @Override - public boolean hasChildren(Object parent) { - return true; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jst.j2ee.internal.internal.ejb.provider.EJBJarItemProvider#removeTarget(org.eclipse.emf.common.notify.Notification) - */ - protected void removeTarget(Notification not) { - if (not.getNotifier() instanceof EJBJar) - flushOutTableEntriesForEJBJar((EJBJar) not.getNotifier()); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#dispose() - */ - @Override - public void dispose() { - try { - isDisposing = true; - super.dispose(); - } finally { - isDisposing = false; - } - } -} |