Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.eclipse.emf.texo.store;
  
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
  
 import  org.eclipse.emf.common.util.URI;
 import  org.eclipse.emf.ecore.EClass;
 import  org.eclipse.emf.ecore.EObject;
 import  org.eclipse.emf.ecore.util.EcoreUtil;
An object store which keeps all the data in memory, only supports simple querying.

Author(s):
Martin Taal
 
 public class MemoryObjectStore extends ObjectStore {
 
   private static final String FROM = "from"//$NON-NLS-1$
   private static final int FROM_LENGTH = .length();
 
   private final Map<EClass, List<Object>> data = new HashMap<EClass, List<Object>>();
 
   public void addData(Collection<Objectobjects) {
     for (Object object : objects) {
       @SuppressWarnings("unchecked")
       final ModelObject<ObjectmodelObject = (ModelObject<Object>) ModelResolver.getInstance().getModelObject(object);
       final EClass eClass = modelObject.eClass();
       List<ObjectdataList = .get(eClass);
       if (dataList == null) {
         dataList = new ArrayList<Object>();
         .put(eClassdataList);
       }
       dataList.add(object);
     }
   }
 
   @Override
   public Object get(EClass eClassObject id) {
     final List<ObjectdataList = .get(eClass);
     if (dataList != null) {
       for (Object o : dataList) {
         final Object objectId = IdProvider.getInstance().getId(o);
         if (objectId != null && objectId.equals(id)) {
           return o;
         }
       }
     }
     return super.get(eClassid);
   }
 
   @Override
   public long countNamedQuery(String nameMap<StringObjectnamedParameters) {
     throw new UnsupportedOperationException();
   }
 
   /*
    * (non-Javadoc)
    * 
    * @see org.eclipse.emf.texo.server.store.ObjectStore#get(java.lang.Class, java.lang.Object)
    */
   @SuppressWarnings("unchecked")
   @Override
   public <T extends Object> T get(Class<T> clzObject id) {
     for (List<ObjectdataList : .values()) {
       for (Object o : dataList) {
         final Object objectId = IdProvider.getInstance().getId(o);
         if (clz.isAssignableFrom(o.getClass()) && objectId != null && objectId.equals(id)) {
           return (T) o;
         }
       }
     }
     return null;
   }
 
   @Override
   public <T extends Object> T update(T object) {
     return object;
   }
 
   @Override
   public <T extends Objectvoid remove(T object) {
     final ModelObject<?> modelObject = ModelResolver.getInstance().getModelObject(object);
     final List<ObjectdataList = .get(modelObject.eClass());
     if (dataList != null) {
       dataList.remove(object);
     }
   }
 
   @Override
   public <T extends Objectvoid refresh(T object) {
    // don't do anything
  }
  public <T extends Objectvoid insert(T object) {
    final ModelObject<?> modelObject = ModelResolver.getInstance().getModelObject(object);
    List<ObjectdataList = .get(modelObject.eClass());
    if (dataList != null && !dataList.contains(object)) {
      dataList.add(object);
    } else if (dataList == null) {
      dataList = new ArrayList<Object>();
      dataList.add(object);
    }
  }
  public List<?> query(String qryStrMap<StringObjectnamedParametersint firstResultint maxResults) {
    final int index = qryStr.indexOf();
    if (index != -1) {
      final String eClassName = qryStr.substring(index + );
      for (EClass eClass : .keySet()) {
        if (eClass.getName().equals(eClassName)) {
          return .get(eClass);
        }
      }
    }
    return Collections.emptyList();
  }
  public List<?> namedQuery(String nameMap<StringObjectnamedParametersint firstResultint maxResults) {
    throw new UnsupportedOperationException();
  }
  public long count(String qryStrMap<StringObjectnamedParameters) {
    final int index = qryStr.indexOf();
    if (index != -1) {
      final String eClassName = qryStr.substring(index + );
      for (EClass eClass : .keySet()) {
        if (eClass.getName().equals(eClassName)) {
          return .size();
        }
      }
    }
    return 0;
  }
  /*
   * (non-Javadoc)
   * 
   * @see org.eclipse.emf.texo.store.ObjectStore#query(org.eclipse.emf.ecore.EClass)
   */
  public List<?> query(EClass eClassint firstResultint maxResults) {
    List<?> result = .get(eClass);
    if (result == null) {
      return Collections.emptyList();
    }
    int from = 0;
    if (firstResult > -1) {
      from = firstResult;
    }
    int to = result.size();
    if (maxResults > -1) {
      to = from + maxResults;
    }
    if (from >= result.size()) {
      from = result.size();
      if (from == 0) {
        return Collections.emptyList();
      }
    }
    if (to > result.size()) {
      to = result.size();
    }
    return result.subList(fromto);
  }
  public Object getDelegate() {
    return ;
  }
  /*
   * (non-Javadoc)
   * 
   * @see org.eclipse.emf.texo.server.store.ObjectStore#getReferingObjects(java.lang.Object, int, boolean)
   */
  public List<ObjectgetReferingObjects(Object targetint maxResultboolean includeContainmentReferences) {
    return null;
  }
  public EObject getEObject(URI objectUri) {
    EObject eObject = super.getEObject(objectUri);
    if (eObject == null) {
      final TypeIdTuple tuple = ModelUtils.getTypeAndIdFromUri(isUseWebServiceUriFormat(), objectUri);
      eObject = (EObject) get(tuple.getEClass(), tuple.getId());
      if (eObject == null) {
        eObject = EcoreUtil.create(tuple.getEClass());
        eObject.eSet(IdProvider.getInstance().getIdEAttribute(tuple.getEClass()), tuple.getId());
      }
    }
    return eObject;
  }
New to GrepCode? Check out our FAQ X