Skip to main content
summaryrefslogblamecommitdiffstats
blob: 1ed79927a6a7ebddb8b95348a7c7842a4ad14c27 (plain) (tree)


















                                                                                         

                                                     


















































































































































                                                                                                                                             
/*******************************************************************************
 * Copyright (c) 2000, 2004 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.ws.internal.consumption.datamodel.beanmodel;

import org.eclipse.jem.java.Field;
import org.eclipse.jem.java.JavaClass;
import org.eclipse.jem.java.JavaHelpers;
import org.eclipse.jem.java.JavaParameter;
import org.eclipse.jem.java.Method;
import org.eclipse.jst.ws.internal.consumption.sampleapp.common.SamplePropertyDescriptor;
import org.eclipse.wst.ws.internal.datamodel.Element;
import org.eclipse.wst.ws.internal.datamodel.Model;

/**
 * TypeFactory
 * Creation date: (4/10/2001 12:41:48 PM)
 * @author: Gilbert Andrews
 */
public class BeanModelElementsFactory 
{

  // Copyright
  public static final String copyright = "(c) Copyright IBM Corporation 2000, 2002.";
  public static final String RETURN_PARAM_NAME="returnp";

  private BeanModelElementsFactory(){}

  public static Element getBeanModelElement(Object object)
  {
    return BeanModelElementsFactory.getBeanModelElement(object,null,null);
  }

  public static Element getBeanModelElement(Object object,Element parentElement)
  {
    return BeanModelElementsFactory.getBeanModelElement(object,parentElement,null);
  }
  
 /*
  * Take in an object and return an element depending on what 
  * type we are dealing with from the javamof
  **/
  public static Element getBeanModelElement(Object object,Element parentElement, Model model)
  {
    Element returnElement = null;

    if (object instanceof JavaClass){
      JavaClass javaClass = (JavaClass)object;
      String javaName = javaClass.getJavaName();
      if (!javaClass.isArray()){ 
	      if(parentElement == null && model ==null) returnElement = new BeanElement(javaName);
	      else if(parentElement == null && model !=null) returnElement = new BeanElement(javaName,model,false);
	      else{
	        if(parentElement instanceof ParameterElement){ 
	           ParameterElement tempElement = (ParameterElement)parentElement;
	           returnElement = new BeanElement(tempElement,javaName);
	        }
	        else if(parentElement instanceof AttributeElement){
	           AttributeElement tempElement = (AttributeElement)parentElement;
	           returnElement = new BeanElement(tempElement,javaName);
	        }
            else if(parentElement instanceof FieldElement){
               FieldElement tempElement = (FieldElement)parentElement;
	           returnElement = new BeanElement(tempElement,javaName);
            }
            else if(parentElement instanceof MethodElement){
               returnElement = new ParameterElement((MethodElement)parentElement,RETURN_PARAM_NAME,MethodElement.REL_RETURN_PARAMETERS,true);
            }	         
	      }
      } 
      else{
          if(parentElement == null && model ==null) returnElement = new ArrayElement(javaName);
	      else if(parentElement == null && model !=null) returnElement = new ArrayElement(javaName,model,false);
	      else{
	        if(parentElement instanceof ParameterElement){ 
	           ParameterElement tempElement = (ParameterElement)parentElement;
	           returnElement = new ArrayElement(tempElement,javaName);
	        }
	        else if(parentElement instanceof AttributeElement){
	           AttributeElement tempElement = (AttributeElement)parentElement;
	           returnElement = new ArrayElement(tempElement,javaName);
	        }
            else if(parentElement instanceof FieldElement){
               FieldElement tempElement = (FieldElement)parentElement;
	           returnElement = new ArrayElement(tempElement,javaName);
	        }
            else if(parentElement instanceof MethodElement){
               returnElement = new ParameterElement((MethodElement)parentElement,RETURN_PARAM_NAME,MethodElement.REL_RETURN_PARAMETERS,true);
            }

	      }
       }

    }
    else if(object instanceof SamplePropertyDescriptor){
      SamplePropertyDescriptor pd = (SamplePropertyDescriptor)object;
      returnElement = new AttributeElement((BeanElement)parentElement,pd.getName());  
    }
    else if(object instanceof Field){
      Field field = (Field)object;
      returnElement = new FieldElement((BeanElement)parentElement,field.getName());
    }
    else if (object instanceof Method){
      Method method = (Method)object;
      returnElement = new MethodElement((BeanElement)parentElement,method.getName(), method.getMethodElementSignature());
    }
    //non beaninfo
    else if (object instanceof String){
      String name = (String)object;  
      returnElement = new AttributeElement((BeanElement)parentElement,name);
    }
    else if (object instanceof JavaParameter){
      JavaParameter javaParameter = (JavaParameter)object;

      
      if (javaParameter.isReturn()) 
         returnElement = new ParameterElement((MethodElement)parentElement,RETURN_PARAM_NAME,MethodElement.REL_RETURN_PARAMETERS,true); 
      else{ 
         //a java parameter gives us the qualified name we dont want this
         String name = javaParameter.getQualifiedName();
         String shortName;
         int index = name.lastIndexOf(".");
         if (index != -1){
           index++;
           shortName = name.substring(index);
         }
      else shortName = name;

         returnElement = new ParameterElement((MethodElement)parentElement,shortName,MethodElement.REL_PARAMETERS,false); 

      }
     
    }
    else if (object instanceof JavaHelpers){
      JavaHelpers javaHelper = (JavaHelpers)object;
      String javaName; 
      if (javaHelper.isArray()) javaName = TypeFactory.ARRAY_NAME;
      else javaName = javaHelper.getJavaName();
      if (parentElement instanceof ParameterElement){
          returnElement = new SimpleElement((ParameterElement)parentElement,javaName,javaHelper.isPrimitive());
      }
      else if(parentElement instanceof AttributeElement){
          returnElement = new SimpleElement((AttributeElement)parentElement,javaName,javaHelper.isPrimitive());
      }
      else if(parentElement instanceof FieldElement){
          returnElement = new SimpleElement((FieldElement)parentElement,javaName,javaHelper.isPrimitive());
      }
      else if(parentElement instanceof MethodElement){
      	returnElement = new ParameterElement((MethodElement)parentElement,RETURN_PARAM_NAME,MethodElement.REL_RETURN_PARAMETERS,true);
      }
    }
    return returnElement;
  }
  
  
  


}

Back to the top