You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by bj...@apache.org on 2008/10/15 21:34:28 UTC

svn commit: r705002 - in /geronimo/devtools/eclipse-plugin/trunk/plugins: org.apache.geronimo.st.core/src/main/java/org/apache/geronimo/st/core/jaxb/ org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/ org.apache.geronimo.st.v21...

Author: bjreed
Date: Wed Oct 15 12:34:27 2008
New Revision: 705002

URL: http://svn.apache.org/viewvc?rev=705002&view=rev
Log:
GERONIMODEVTOOLS-384 adding EJB Relation section to the naming page

Added:
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/EjbRelationSection.java   (with props)
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/EjbRelationWizard.java   (with props)
Modified:
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/main/java/org/apache/geronimo/st/core/jaxb/MarshallerListener.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.properties
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBModelUtils.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBObjectFactoryImpl.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/pages/NamingFormPage.java

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/main/java/org/apache/geronimo/st/core/jaxb/MarshallerListener.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/main/java/org/apache/geronimo/st/core/jaxb/MarshallerListener.java?rev=705002&r1=705001&r2=705002&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/main/java/org/apache/geronimo/st/core/jaxb/MarshallerListener.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/main/java/org/apache/geronimo/st/core/jaxb/MarshallerListener.java Wed Oct 15 12:34:27 2008
@@ -22,7 +22,9 @@
 import org.apache.geronimo.jee.naming.Pattern;
 import org.apache.geronimo.jee.naming.PersistenceContextRef;
 import org.apache.geronimo.jee.naming.ResourceLocator;
+import org.apache.geronimo.jee.openejb.EjbRelationshipRole;
 import org.apache.geronimo.jee.openejb.OpenejbJar;
+import org.apache.geronimo.jee.openejb.Relationships;
 import org.apache.geronimo.jee.security.Security;
 import org.apache.geronimo.jee.web.WebApp;
 
@@ -47,11 +49,20 @@
             if (locator != null && isEmpty(locator.getResourceLink()) && isEmpty(locator.getUrl()) && isEmpty(locator.getPattern())) {
                 openejb.setCmpConnectionFactory(null);
             }
+            Relationships relationships = openejb.getRelationships();
+            if (relationships != null && relationships.getEjbRelation().size() == 0) {
+                openejb.setRelationships(null);
+            }
         } else if (source instanceof PersistenceContextRef) {
             PersistenceContextRef contextRef = (PersistenceContextRef)source;
             if (contextRef.getPattern() != null && isEmpty(contextRef.getPattern())) {
                 contextRef.setPattern(null);
             }
+        } else if (source instanceof EjbRelationshipRole) {
+            EjbRelationshipRole role = (EjbRelationshipRole)source;
+            if (role.getRoleMapping() != null && role.getRoleMapping().getCmrFieldMapping().size() == 0) {
+                role.setRoleMapping(null);
+            }
         }
     }
         

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.java?rev=705002&r1=705001&r2=705002&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.java Wed Oct 15 12:34:27 2008
@@ -211,6 +211,8 @@
     //
     public static String editorEjbRefDescription;
     public static String editorEjbRefTitle;
+    public static String editorEjbRelationDescription;
+    public static String editorEjbRelationTitle;
     // Buttons
     public static String add;
     public static String remove;
@@ -246,6 +248,11 @@
     public static String wizardPageTitle_EjbRef;
     public static String wizardPageDescription_EjbRef;
     //
+    public static String wizardNewTitle_EjbRelation;
+    public static String wizardEditTitle_EjbRelation;
+    public static String wizardPageTitle_EjbRelation;
+    public static String wizardPageDescription_EjbRelation;
+    //
     public static String wizardNewTitle_EjbLocalRef;
     public static String wizardEditTitle_EjbLocalRef;
     public static String wizardPageTitle_EjbLocalRef;
@@ -287,6 +294,11 @@
     public static String contextName;
     public static String unitRefName;
     public static String unitName;
+    public static String mtmTableName;
+    public static String ejbSourceName;
+    public static String cmrFieldName;
+    public static String keyColumn;
+    public static String foreignKeyColumn;
     //
     public static String wizardNewTitle_Import;
     public static String wizardEditTitle_Import;

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.properties
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.properties?rev=705002&r1=705001&r2=705002&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.properties (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.properties Wed Oct 15 12:34:27 2008
@@ -145,6 +145,8 @@
 
 editorEjbLocalRefDescription=The following ejb local refererencs are defined:
 editorEjbLocalRefTitle=EJB Local References
+editorEjbRelationDescription = The following ejb relations are defined:
+editorEjbRelationTitle = EJB Relations
 
 add=Add
 remove=Remove
@@ -165,6 +167,11 @@
 wizardPageTitle_EjbRef=EJB Reference Details
 wizardPageDescription_EjbRef=Provide details for this ejb reference.
 
+wizardNewTitle_EjbRelation=New EJB Relation
+wizardEditTitle_EjbRelation=Edit EJB Relation
+wizardPageTitle_EjbRelation=EJB Relation Details
+wizardPageDescription_EjbRelation=Provide details for this EJB Relation.
+
 wizardNewTitle_ServiceRef=New Service Reference
 wizardEditTitle_ServiceRef=Edit Service Reference
 wizardPageTitle_ServiceRef=Service Reference Details
@@ -265,6 +272,11 @@
 contextName=Context Name
 unitRefName=Unit Ref Name
 unitName=Unit Name
+mtmTableName=MTM Table Name
+ejbSourceName=EJB Source Name
+cmrFieldName=CMR Field Name
+keyColumn=Key Column
+foreignKeyColumn=Foreign Key Column
 
 messageDestinationName=Message Destination Name
 adminModule=Admin Module

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBModelUtils.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBModelUtils.java?rev=705002&r1=705001&r2=705002&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBModelUtils.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBModelUtils.java Wed Oct 15 12:34:27 2008
@@ -25,6 +25,7 @@
 import org.apache.geronimo.jee.connector.Connector;
 import org.apache.geronimo.jee.deployment.Environment;
 import org.apache.geronimo.jee.openejb.OpenejbJar;
+import org.apache.geronimo.jee.openejb.Relationships;
 import org.apache.geronimo.jee.security.Security;
 import org.apache.geronimo.jee.web.WebApp;
 
@@ -178,6 +179,21 @@
         return null;
     }
 
+    public static List getEjbRelationships (JAXBElement element) {
+        Object plan = element.getValue();
+        if (OpenejbJar.class.isInstance (plan)) {
+            return ((OpenejbJar)plan).getRelationships() == null ? null : ((OpenejbJar)plan).getRelationships().getEjbRelation();
+        }
+        return null;
+    }
+    
+    public static void setEjbRelationships (JAXBElement element, Relationships relationships ) {
+        Object plan = element.getValue();
+        if (OpenejbJar.class.isInstance (plan)) {
+            ((OpenejbJar)plan).setRelationships(relationships);
+        }
+    }
+    
     public static List getMessageDestinations (JAXBElement element) {
         Object plan = element.getValue();
         if (WebApp.class.isInstance (plan)) {

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBObjectFactoryImpl.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBObjectFactoryImpl.java?rev=705002&r1=705001&r2=705002&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBObjectFactoryImpl.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBObjectFactoryImpl.java Wed Oct 15 12:34:27 2008
@@ -41,6 +41,9 @@
 import org.apache.geronimo.jee.naming.ResourceEnvRef;
 import org.apache.geronimo.jee.naming.ResourceRef;
 import org.apache.geronimo.jee.naming.ServiceRef;
+import org.apache.geronimo.jee.openejb.EjbRelation;
+import org.apache.geronimo.jee.openejb.EjbRelationshipRole;
+import org.apache.geronimo.jee.openejb.Relationships;
 import org.apache.geronimo.jee.security.Description;
 import org.apache.geronimo.jee.security.DistinguishedName;
 import org.apache.geronimo.jee.security.LoginDomainPrincipal;
@@ -134,6 +137,20 @@
             return (new org.apache.geronimo.jee.application.ObjectFactory()).createModule();
         } else if ( type.equals( Path.class ) ) {
             return (new org.apache.geronimo.jee.application.ObjectFactory()).createPath();
+        } else if ( type.equals( EjbRelation.class ) ) {
+            return (new org.apache.geronimo.jee.openejb.ObjectFactory()).createEjbRelation();
+        } else if ( type.equals( EjbRelationshipRole.class ) ) {
+            return (new org.apache.geronimo.jee.openejb.ObjectFactory()).createEjbRelationshipRole();
+        } else if ( type.equals( EjbRelationshipRole.RelationshipRoleSource.class ) ) {
+            return (new org.apache.geronimo.jee.openejb.ObjectFactory()).createEjbRelationshipRoleRelationshipRoleSource();
+        } else if ( type.equals( EjbRelationshipRole.CmrField.class ) ) {
+            return (new org.apache.geronimo.jee.openejb.ObjectFactory()).createEjbRelationshipRoleCmrField();
+        } else if ( type.equals( EjbRelationshipRole.RoleMapping.CmrFieldMapping.class ) ) {
+            return (new org.apache.geronimo.jee.openejb.ObjectFactory()).createEjbRelationshipRoleRoleMappingCmrFieldMapping();
+        } else if ( type.equals( EjbRelationshipRole.RoleMapping.class ) ) {
+            return (new org.apache.geronimo.jee.openejb.ObjectFactory()).createEjbRelationshipRoleRoleMapping();
+        } else if ( type.equals( Relationships.class ) ) {
+            return (new org.apache.geronimo.jee.openejb.ObjectFactory()).createRelationships();
         }
         
         return null;

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/pages/NamingFormPage.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/pages/NamingFormPage.java?rev=705002&r1=705001&r2=705002&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/pages/NamingFormPage.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/pages/NamingFormPage.java Wed Oct 15 12:34:27 2008
@@ -25,6 +25,7 @@
 import org.apache.geronimo.st.v21.core.GeronimoServerInfo;
 import org.apache.geronimo.st.v21.ui.sections.EjbLocalRefSection;
 import org.apache.geronimo.st.v21.ui.sections.EjbRefSection;
+import org.apache.geronimo.st.v21.ui.sections.EjbRelationSection;
 import org.apache.geronimo.st.v21.ui.sections.GBeanRefSection;
 import org.apache.geronimo.st.v21.ui.sections.MessageDestSection;
 import org.apache.geronimo.st.v21.ui.sections.PersContextRefSection;
@@ -74,6 +75,7 @@
         }
         else if (OpenejbJar.class.isInstance (getDeploymentPlan().getValue())){
             OpenejbJar ejbJar = (OpenejbJar)((AbstractGeronimoDeploymentPlanEditor) getEditor()).getDeploymentPlan().getValue();
+            managedForm.addPart(new EjbRelationSection(getDeploymentPlan(), body, toolkit, getStyle(), ejbJar.getRelationships()));
             managedForm.addPart(new MessageDestSection(getDeploymentPlan(), body, toolkit, getStyle(), ejbJar.getMessageDestination()));
         }
     }

Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/EjbRelationSection.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/EjbRelationSection.java?rev=705002&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/EjbRelationSection.java (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/EjbRelationSection.java Wed Oct 15 12:34:27 2008
@@ -0,0 +1,173 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.st.v21.ui.sections;
+
+import java.util.List;
+
+import javax.xml.bind.JAXBElement;
+
+import org.apache.geronimo.jee.openejb.EjbRelation;
+import org.apache.geronimo.jee.openejb.EjbRelationshipRole;
+import org.apache.geronimo.jee.openejb.Relationships;
+import org.apache.geronimo.st.ui.CommonMessages;
+import org.apache.geronimo.st.ui.sections.AbstractTreeSection;
+import org.apache.geronimo.st.v21.ui.Activator;
+import org.apache.geronimo.st.v21.ui.wizards.EjbRelationWizard;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class EjbRelationSection extends AbstractTreeSection {
+    public EjbRelationSection(JAXBElement plan, Composite parent, FormToolkit toolkit, int style, Relationships relationships) {
+        super(plan, parent, toolkit, style);
+        this.objectContainer = relationships == null ? null : relationships.getEjbRelation();
+        createClient();
+    }
+
+    @Override
+    public String getTitle() {
+        return CommonMessages.editorEjbRelationTitle;
+    }
+
+    @Override
+    public String getDescription() {
+        return CommonMessages.editorEjbRelationDescription;
+    }
+
+    @Override
+    public Wizard getWizard() {
+        return new EjbRelationWizard(this);
+    }
+
+    @Override
+    public Class getTableEntryObjectType() {
+        return EjbRelation.class;
+    }
+
+    @Override
+    protected void activateAddButton() {
+        if (tree.getSelectionCount() == 0 || tree.getSelection()[0].getParentItem() == null ||
+            tree.getSelection()[0].getParentItem().getParentItem() == null) {
+            addButton.setEnabled(true);
+        } else {
+            addButton.setEnabled(false);
+        }
+    }
+
+    public Object getSelectedObject () {
+        if (tree.getSelection().length == 0) {
+            return null;
+        }
+        return tree.getSelection()[0].getData();
+    }
+
+    @Override
+    public void removeItem(Object anItem) {
+        if (EjbRelation.class.isInstance(anItem)) {
+            getObjectContainer().remove(anItem);
+        }
+        else if (EjbRelationshipRole.class.isInstance(anItem)) {
+            EjbRelation relation = (EjbRelation)tree.getSelection()[0].getParentItem().getData();
+            relation.getEjbRelationshipRole().remove(anItem);
+        }
+        else if (EjbRelationshipRole.RoleMapping.CmrFieldMapping.class.isInstance(anItem)) {
+            EjbRelationshipRole role = (EjbRelationshipRole)tree.getSelection()[0].getParentItem().getData();
+            role.getRoleMapping().getCmrFieldMapping().remove(anItem);
+        }
+    }
+    
+    @Override
+    public Object getInput() {
+        if (objectContainer != null) {
+            return objectContainer;
+        }
+        return super.getInput();
+    }
+
+    public void resetInput (Relationships relationships) {
+        objectContainer = relationships.getEjbRelation();
+        getViewer().setInput(objectContainer);
+    }
+
+    @Override
+    public ITreeContentProvider getContentProvider() {
+        return new ContentProvider() {
+            @Override
+            public Object[] getElements(Object inputElement) {
+                return getChildren(inputElement);
+            }
+
+            @Override
+            public Object[] getChildren(Object parentElement) {
+                if (List.class.isInstance(parentElement)) {
+                    return ((List)parentElement).toArray();
+                }
+                if (EjbRelation.class.isInstance(parentElement)) {
+                    EjbRelation relation = (EjbRelation)parentElement;
+                    return relation.getEjbRelationshipRole().toArray();
+                }
+                if (EjbRelationshipRole.class.isInstance(parentElement)) {
+                    EjbRelationshipRole role = (EjbRelationshipRole)parentElement;
+                    if (role.getRoleMapping() != null) {
+                        return role.getRoleMapping().getCmrFieldMapping().toArray();
+                    }
+                }
+                return new String[] {};
+            }
+        };
+    }
+
+    @Override
+    public ILabelProvider getLabelProvider() {
+        return new LabelProvider() {
+            @Override
+            public String getText(Object element) {
+                if (EjbRelation.class.isInstance(element)) {
+                    EjbRelation relation = (EjbRelation)element;
+                    return "EJB Relation: name = \"" + relation.getEjbRelationName() +
+                            "\", MTM table name = \"" + relation.getManyToManyTableName() + "\"";
+                }
+                if (EjbRelationshipRole.class.isInstance(element)) {
+                    EjbRelationshipRole role = (EjbRelationshipRole)element;
+                    return "EJB Relationship Role: name = \"" + role.getEjbRelationshipRoleName() +
+                            "\", source = \"" + role.getRelationshipRoleSource().getEjbName() +
+                            "\", CMR field name = \"" + role.getCmrField().getCmrFieldName() + "\"";
+                }
+                if (EjbRelationshipRole.RoleMapping.CmrFieldMapping.class.isInstance(element)) {
+                    EjbRelationshipRole.RoleMapping.CmrFieldMapping fieldMapping =
+                            (EjbRelationshipRole.RoleMapping.CmrFieldMapping)element;
+                    return "CMR Field Mapping: key column = \"" + fieldMapping.getKeyColumn() +
+                            "\", foreign key column = \"" + fieldMapping.getForeignKeyColumn() + "\"";
+                }
+
+                return null;
+            }
+
+            @Override
+            public Image getImage(Object arg0) {
+                return Activator.imageDescriptorFromPlugin("org.eclipse.jst.j2ee",
+                        "icons/full/obj16/module_web_obj.gif").createImage();
+            }
+        };
+    }
+}

Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/EjbRelationSection.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/EjbRelationSection.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/EjbRelationSection.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/EjbRelationWizard.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/EjbRelationWizard.java?rev=705002&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/EjbRelationWizard.java (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/EjbRelationWizard.java Wed Oct 15 12:34:27 2008
@@ -0,0 +1,223 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.st.v21.ui.wizards;
+
+import javax.xml.bind.JAXBElement;
+
+import org.apache.geronimo.jee.openejb.EjbRelation;
+import org.apache.geronimo.jee.openejb.EjbRelationshipRole;
+import org.apache.geronimo.jee.openejb.Relationships;
+import org.apache.geronimo.st.core.jaxb.JAXBObjectFactory;
+import org.apache.geronimo.st.ui.CommonMessages;
+import org.apache.geronimo.st.ui.sections.AbstractTreeSection;
+import org.apache.geronimo.st.ui.wizards.AbstractTreeWizard;
+import org.apache.geronimo.st.v21.core.jaxb.JAXBModelUtils;
+import org.apache.geronimo.st.v21.core.jaxb.JAXBObjectFactoryImpl;
+import org.apache.geronimo.st.v21.ui.sections.EjbRelationSection;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class EjbRelationWizard extends AbstractTreeWizard {
+
+    private final int EJB_RELATION = 0;
+    private final int RELATIONSHIP_ROLE = 1;
+    private final int CMR_FIELD_MAPPING = 2;
+
+    public EjbRelationWizard(AbstractTreeSection section) {
+        super(section, 3, 3);
+        elementTypes[EJB_RELATION] = "EJB Relation";
+        elementTypes[RELATIONSHIP_ROLE] = "EJB Relationship Role";
+        elementTypes[CMR_FIELD_MAPPING] = "CMR Field Mapping";
+    }
+
+    public class EjbRelationWizardPage extends AbstractTreeWizardPage {
+
+        public EjbRelationWizardPage(String pageName) {
+            super(pageName);
+        }
+
+        protected void initControl () {
+            if (eObject == null) {
+                element.select(EJB_RELATION);
+                if (EjbRelation.class.isInstance(((EjbRelationSection)section).getSelectedObject())) {
+                    element.remove(elementTypes[CMR_FIELD_MAPPING]);
+                }
+                else if (EjbRelationshipRole.class.isInstance(((EjbRelationSection)section).getSelectedObject())) {
+                    element.select(CMR_FIELD_MAPPING);
+                    element.setEnabled(false);
+                }
+                else {
+                    element.setEnabled(false);
+                }
+            }
+            else {
+                if (EjbRelation.class.isInstance(eObject)) {
+                    textList.get(0).setText(((EjbRelation)eObject).getEjbRelationName());
+                    textList.get(1).setText(((EjbRelation)eObject).getManyToManyTableName());
+                    element.select(EJB_RELATION);
+                }
+                else if (EjbRelationshipRole.class.isInstance(eObject)) {
+                    EjbRelationshipRole role = (EjbRelationshipRole)eObject;
+                    textList.get(0).setText(role.getEjbRelationshipRoleName());
+                    textList.get(1).setText(role.getRelationshipRoleSource().getEjbName());
+                    textList.get(2).setText(role.getCmrField().getCmrFieldName());
+                    element.select(RELATIONSHIP_ROLE);
+                }
+                else if (EjbRelationshipRole.RoleMapping.CmrFieldMapping.class.isInstance(eObject)) {
+                    EjbRelationshipRole.RoleMapping.CmrFieldMapping fieldMapping =
+                            (EjbRelationshipRole.RoleMapping.CmrFieldMapping)eObject;
+                    textList.get(0).setText(fieldMapping.getKeyColumn());
+                    textList.get(1).setText(fieldMapping.getForeignKeyColumn());
+                    element.select(CMR_FIELD_MAPPING);
+                }
+                element.setEnabled(false);
+            }
+        }
+        
+        protected void toggleFields (boolean clearFields) {
+            if (element.getText().equals(elementTypes[EJB_RELATION])) {
+                for (int i = 0; i < maxTextFields; i++) {
+                    labelList.get(i).setVisible(i < 2 ? true : false);
+                    textList.get(i).setVisible(i < 2 ? true : false);
+                    if (clearFields == true) {
+                        textList.get(i).setText("");
+                    }
+                }
+                labelList.get(0).setText(CommonMessages.name);
+                labelList.get(1).setText(CommonMessages.mtmTableName);
+                // if we are doing an add, then we need to make sure that the longest
+                // text can be handled
+                labelList.get(2).setText(CommonMessages.foreignKeyColumn);
+            }
+            else if (element.getText().equals(elementTypes[RELATIONSHIP_ROLE])) {
+                for (int i = 0; i < maxTextFields; i++) {
+                    labelList.get(i).setVisible(true);
+                    textList.get(i).setVisible(true);
+                    if (clearFields == true) {
+                        textList.get(i).setText("");
+                    }
+                }
+                labelList.get(0).setText(CommonMessages.name);
+                labelList.get(1).setText(CommonMessages.ejbSourceName);
+                labelList.get(2).setText(CommonMessages.cmrFieldName);
+            }
+            else if (element.getText().equals(elementTypes[CMR_FIELD_MAPPING])) {
+                for (int i = 0; i < maxTextFields; i++) {
+                    labelList.get(i).setVisible(i < 2 ? true : false);
+                    textList.get(i).setVisible(i < 2 ? true : false);
+                    if (clearFields == true) {
+                        textList.get(i).setText("");
+                    }
+                }
+                labelList.get(0).setText(CommonMessages.keyColumn);
+                labelList.get(1).setText(CommonMessages.foreignKeyColumn);
+            }
+        }
+    }
+
+    @Override
+    public void addPages() {
+        addPage(new EjbRelationWizardPage("Page0"));
+    }
+
+    @Override
+    public boolean performFinish() {
+        EjbRelation relation;
+        if (element.getText().equals(elementTypes[EJB_RELATION])) {
+            relation = (EjbRelation)eObject;
+            if (relation == null) {
+                relation = (EjbRelation)getEFactory().create(EjbRelation.class);
+                JAXBElement plan = section.getPlan();
+                
+                if (JAXBModelUtils.getEjbRelationships(plan) == null) {
+                    Relationships relationships = (Relationships)getEFactory().create(Relationships.class);
+
+                    JAXBModelUtils.setEjbRelationships(plan, relationships);
+                    ((EjbRelationSection)section).resetInput(relationships);
+                }
+                JAXBModelUtils.getEjbRelationships(plan).add(relation);
+            }
+            relation.setEjbRelationName(textList.get(0).getText());
+            relation.setManyToManyTableName(textList.get(1).getText());
+        }
+        else if (element.getText().equals(elementTypes[RELATIONSHIP_ROLE])) {
+            if (isEmpty(textList.get(1).getText())) {
+                return false;
+            }
+            EjbRelationshipRole role = (EjbRelationshipRole)eObject;
+            if (role == null) {
+                role = (EjbRelationshipRole)getEFactory().create(EjbRelationshipRole.class);
+                relation = (EjbRelation)((EjbRelationSection)section).getSelectedObject();
+                relation.getEjbRelationshipRole().add(role);
+            }
+            role.setEjbRelationshipRoleName(textList.get(0).getText());
+            EjbRelationshipRole.RelationshipRoleSource source = role.getRelationshipRoleSource();
+            if (source == null) {
+                source = (EjbRelationshipRole.RelationshipRoleSource)getEFactory().create(EjbRelationshipRole.RelationshipRoleSource.class);
+                role.setRelationshipRoleSource(source);
+            }
+            source.setEjbName(textList.get(1).getText());
+            EjbRelationshipRole.CmrField cmrField = role.getCmrField();
+            if (cmrField == null) {
+                cmrField = (EjbRelationshipRole.CmrField)getEFactory().create(EjbRelationshipRole.CmrField.class);
+                role.setCmrField(cmrField);
+            }
+            cmrField.setCmrFieldName(textList.get(2).getText());
+        }
+        else if (element.getText().equals(elementTypes[CMR_FIELD_MAPPING])) { 
+            if (isEmpty(textList.get(0).getText()) || isEmpty(textList.get(1).getText())) {
+                return false;
+            }
+            EjbRelationshipRole.RoleMapping.CmrFieldMapping fieldMapping =
+                    (EjbRelationshipRole.RoleMapping.CmrFieldMapping)eObject;
+            if (fieldMapping == null) {
+                fieldMapping = (EjbRelationshipRole.RoleMapping.CmrFieldMapping)getEFactory().create(EjbRelationshipRole.RoleMapping.CmrFieldMapping.class);
+                EjbRelationshipRole role = (EjbRelationshipRole)((EjbRelationSection)section).getSelectedObject();
+                EjbRelationshipRole.RoleMapping roleMapping = role.getRoleMapping();
+                if (roleMapping == null) {
+                    roleMapping = (EjbRelationshipRole.RoleMapping)getEFactory().create(EjbRelationshipRole.RoleMapping.class);
+                    role.setRoleMapping(roleMapping);
+                }
+                role.getRoleMapping().getCmrFieldMapping().add(fieldMapping);
+            }
+            fieldMapping.setKeyColumn(textList.get(0).getText());
+            fieldMapping.setForeignKeyColumn(textList.get(1).getText());
+        }
+        return true;
+    }
+
+    public JAXBObjectFactory getEFactory() {
+        return JAXBObjectFactoryImpl.getInstance();
+    }
+
+    public String getAddWizardWindowTitle() {
+        return CommonMessages.wizardNewTitle_EjbRelation;
+    }
+
+    public String getEditWizardWindowTitle() {
+        return CommonMessages.wizardEditTitle_EjbRelation;
+    }
+
+    public String getWizardPageTitle() {
+        return CommonMessages.wizardPageTitle_EjbRelation;
+    }
+
+    public String getWizardPageDescription() {
+        return CommonMessages.wizardPageDescription_EjbRelation;
+    }
+}

Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/EjbRelationWizard.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/EjbRelationWizard.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/EjbRelationWizard.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain