Skip to content
This repository has been archived by the owner on Jan 19, 2022. It is now read-only.

Commit

Permalink
ability to add several persistent entity instances in one go
Browse files Browse the repository at this point in the history
  • Loading branch information
graemerocher committed Feb 15, 2013
1 parent cd5126c commit f855593
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
*/
package org.grails.datastore.mapping.model;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
Expand Down Expand Up @@ -166,6 +167,31 @@ public PersistentEntity addPersistentEntity(Class javaClass, boolean override) {
return addPersistentEntity(javaClass);
}

@Override
public Collection<PersistentEntity> addPersistentEntities(Class... javaClasses) {
Collection<PersistentEntity> entities = new ArrayList<PersistentEntity>();

for (Class javaClass : javaClasses) {
PersistentEntity entity = createPersistentEntity(javaClass);
if(entity == null) continue;

registerEntityWithContext(entity);
entities.add(entity);

}
if(canInitializeEntities) {
for (PersistentEntity entity : entities) {
initializePersistentEntity(entity);
}
}
for (Listener eventListener : eventListeners) {
for (PersistentEntity entity : entities) {
eventListener.persistentEntityAdded(entity);
}
}
return entities;
}

/**
* Adds a PersistentEntity instance
*
Expand All @@ -191,8 +217,7 @@ private PersistentEntity addPersistentEntityInternal(Class javaClass, boolean is
}
entity.setExternal(isExternal);

persistentEntities.remove(entity); persistentEntities.add(entity);
persistentEntitiesByName.put(entity.getName(), entity);
registerEntityWithContext(entity);

if(isInitialize) {
initializePersistentEntity(entity);
Expand All @@ -204,6 +229,12 @@ private PersistentEntity addPersistentEntityInternal(Class javaClass, boolean is
return entity;
}

private void registerEntityWithContext(PersistentEntity entity) {
persistentEntities.remove(entity);
persistentEntities.add(entity);
persistentEntitiesByName.put(entity.getName(), entity);
}

@Override
public void initialize() {
for(PersistentEntity entity : persistentEntities) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,13 @@ public interface MappingContext {
*/
PersistentEntity getChildEntityByDiscriminator(PersistentEntity root, String discriminator);

/**
* Adds several PersistentEntity instances
*
* @param javaClasses The Java class representing the entity
* @return The PersistentEntity instance
*/
Collection<PersistentEntity> addPersistentEntities(Class...javaClasses);
/**
* Adds a PersistentEntity instance
*
Expand Down

0 comments on commit f855593

Please sign in to comment.