Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
<copyright> Copyright (c) 2009, 2010 Springsite BV (The Netherlands) 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: Martin Taal - Initial API and implementation </copyright> $Id: DynamicModelObject.java,v 1.4 2011/08/25 12:32:37 mtaal Exp $
 
 
 package org.eclipse.emf.texo.model;
 
 import java.util.List;
 
 import  org.eclipse.emf.ecore.EAttribute;
 import  org.eclipse.emf.ecore.EClass;
 import  org.eclipse.emf.ecore.EStructuralFeature;
A dynamic representation of the ModelObject. Stores its values internally in an ArrayList.

Author(s):
Martin Taal
 
 
   private EClass eClass;
   private List<Objectvalues = new ArrayList<Object>();
 
   public void setData(DynamicModelObject source) {
      = source.eClass;
     .addAll(source.values);
   }
 
   public Class<?> getTargetClass() {
     return Object.class;
   }
 
   /*
    * (non-Javadoc)
    * 
    * @see org.eclipse.emf.texo.model.ModelObject#getModelPackage()
    */
   public ModelPackage getModelPackage() {
     // // TODO: maybe auto-create dynamic packages?
     return ModelResolver.getInstance().getModelPackage(eClass().getEPackage().getNsURI());
   }
 
   /*
    * (non-Javadoc)
    * 
    * @see org.eclipse.emf.texo.model.ModelObject#setTarget(java.lang.Object)
    */
   public void setTarget(DynamicModelObject target) {
   }
 
   /*
    * (non-Javadoc)
    * 
    * @see org.eclipse.emf.texo.model.ModelObject#getTarget()
    */
   public DynamicModelObject getTarget() {
     return this;
   }

  

Returns:
the EClass represented by this object
 
   public EClass eClass() {
     return ;
   }
 
   public void setEClass(EClass eClass) {
     this. = eClass;
   }
 
   /*
    * (non-Javadoc)
    * 
    * @see org.eclipse.emf.texo.model.ModelObject#eGet(org.eclipse.emf.ecore.EStructuralFeature)
    */
   public Object eGet(EStructuralFeature eStructuralFeature) {
     final int featureId = eClass().getFeatureID(eStructuralFeature);
     if (featureId > .size() - 1) {
       checkIncreaseValues(featureId);
     }
     final Object value = .get(featureId);
     if (eStructuralFeature.isMany() && value == null) {
       final List<ObjectnewValue = new ArrayList<Object>();
       eSet(eStructuralFeaturenewValue);
      return newValue;
    }
    return value;
  }
  /*
   * (non-Javadoc)
   * 
   * @see org.eclipse.emf.texo.model.ModelObject#eSet(org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object)
   */
  public void eSet(EStructuralFeature eStructuralFeatureObject value) {
    final int featureId = eClass().getFeatureID(eStructuralFeature);
    if (featureId > .size() - 1) {
      checkIncreaseValues(featureId);
    }
    // TODO: add some class checking....
    .set(featureIdvalue);
  }
  /*
   * (non-Javadoc)
   * 
   * @see org.eclipse.emf.texo.model.ModelObject#eSet(org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object)
   */
  public boolean eAddTo(EStructuralFeature eStructuralFeatureObject value) {
    final int featureId = eClass().getFeatureID(eStructuralFeature);
    if (featureId > .size() - 1) {
      checkIncreaseValues(featureId);
    }
    @SuppressWarnings("unchecked")
    final Collection<ObjectlocalValues = (Collection<Object>) eGet(eStructuralFeature);
    if (!localValues.contains(value)) {
      return localValues.add(value);
    }
    return false;
  }
  /*
   * (non-Javadoc)
   * 
   * @see org.eclipse.emf.texo.model.ModelObject#eRemoveFrom(org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object)
   */
  public boolean eRemoveFrom(EStructuralFeature eStructuralFeatureObject value) {
    final int featureId = eClass().getFeatureID(eStructuralFeature);
    if (featureId > .size() - 1) {
      checkIncreaseValues(featureId);
    }
    @SuppressWarnings("unchecked")
    final Collection<ObjectlocalValues = (Collection<Object>) eGet(eStructuralFeature);
    if (localValues.contains(value)) {
      return localValues.remove(value);
    }
    return false;
  }
  private synchronized void checkIncreaseValues(int featureId) {
    final int increaseBy = featureId - .size() + 1;
    for (int i = 0; i < increaseByi++) {
      .add(null);
    }
  }
  public String toString() {
    final StringBuilder sb = new StringBuilder();
    sb.append(.getName());
    sb.append("{"); //$NON-NLS-1$
    boolean added = false;
    for (EAttribute eAttribute : .getEAllAttributes()) {
      final int featureId = eClass().getFeatureID(eAttribute);
      if (.size() > featureId && .get(featureId) != null) {
        if (added) {
          sb.append(", "); //$NON-NLS-1$
        }
        sb.append(eAttribute.getName() + ": " + .get(featureId)); //$NON-NLS-1$
      }
    }
    sb.append("}"); //$NON-NLS-1$
    return sb.toString();
  }
New to GrepCode? Check out our FAQ X