com.neovisionaries.jdo.Dao Maven / Gradle / Ivy
/*
* Copyright (C) 2014-2015 Neo Visionaries Inc.
*
* Licensed 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 com.neovisionaries.jdo;
import java.util.Collection;
import java.util.List;
import javax.jdo.JDOObjectNotFoundException;
import javax.jdo.JDOUserException;
import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;
import javax.jdo.Query;
/**
* DAO based on JDO.
*
*
*
* // Persistence manager factory.
* PersistenceManagerFactory factory = ...;
*
* // Create a DAO with an entity class and the persistence manager factory.
* Dao<Customer> dao = new Dao<Customer>(Customer.class, factory);
*
* // Or using a static method.
* Dao<Customer> dao = Dao.{@link #create(Class) create}(Customer.class, factory);
*
* // Use the DAO.
* Customer customer = dao.{@link #getById(Object) getById}(customerId);
*
*
* @param
* The class that represents the entity.
*
* @since 1.2
*
* @author Takahiko Kawasaki
*/
public class Dao
{
private final Class entityClass;
private PersistenceManagerFactory factory;
/**
* Create a DAO for the specified entity.
*
*
* This method just does the following:
*
*
*
* return new Dao<TEntity>(entityClass);
*
*
* @param entityClass
* Entity class.
*
* @return
* A new DAO.
*/
public static Dao create(Class entityClass)
{
return new Dao(entityClass);
}
/**
* Create a DAO for the specified entity.
*
*
* This method just does the following:
*
*
*
* return new Dao<TEntity>(entityClass, factory);
*
*
* @param entityClass
* Entity class.
*
* @param factory
* A persistence manager factory.
*
* @return
* A new DAO.
*/
public static Dao create(Class entityClass, PersistenceManagerFactory factory)
{
return new Dao(entityClass, factory);
}
/**
* Constructor. This constructor is an alias of
* {@link #Dao(Class, PersistenceManagerFactory)
* Dao(entityClass, null)}.
*
* @param entityClass
* The class of entities handled by this DAO.
*/
public Dao(Class entityClass)
{
this(entityClass, null);
}
/**
* Constructor.
*
* @param entityClass
* The class of entities handled by this DAO.
*
* @param factory
* A persistence manager factory.
*/
public Dao(Class entityClass, PersistenceManagerFactory factory)
{
this.entityClass = entityClass;
this.factory = factory;
}
/**
* Check if the given object is {@code null}.
*
* @param object
* Object to be checked.
*
* @param name
* Name of the object.
*
* @throws IllegalArgumentException
* The object is {@code null}.
*/
private void checkNonNull(Object object, String name) throws IllegalArgumentException
{
if (object == null)
{
throw new IllegalArgumentException(name + " is null.");
}
}
/**
* Check if a persistence manager factory is set.
*
* @throws IllegalStateException
* A persistence manager factory is not set.
*/
private void checkFactory() throws IllegalStateException
{
if (factory == null)
{
throw new IllegalStateException("PersistenceManagerFactory is not set.");
}
}
/**
* Create a persistence manager by calling
* {@code factory.}{@link PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManagerFactory()}.
*
* @param factory
* A persistence manager factory.
*
* @return
* A persistence manager.
*
* @throws IllegalStateException
* {@code factory.}{@link PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManagerFactory()} threw an exception. Or,
* {@code getPersistenceManager()} returned {@code null}.
*/
private PersistenceManager createManager(PersistenceManagerFactory factory)
throws IllegalArgumentException
{
PersistenceManager manager = null;
try
{
manager = factory.getPersistenceManager();
}
catch (Throwable t)
{
throw new IllegalStateException("getPersistenceManager() failed.", t);
}
if (manager == null)
{
throw new IllegalStateException("getPersistenceManager() returned null.");
}
return manager;
}
/**
* Get the persistence manager factory that this instance currently holds.
*
* @return
* Persistence manager factory.
*/
public PersistenceManagerFactory getPersistenceManagerFactory()
{
return factory;
}
/**
* Set a persistence manager factory.
*
* @param factory
* Persistence manager factory.
*
* @return
* {@code this} object.
*/
public Dao setPersistenceManagerFactory(PersistenceManagerFactory factory)
{
this.factory = factory;
return this;
}
/**
* Delete an entity. A persistence manager factory must be set
* before this method is called.
*
* @param entity
* An entity to be deleted.
*
* @throws IllegalArgumentException
* {@code entity} is {@code null}.
*
* @throws IllegalStateException
* A persistence manager factory is not set. Or,
* failed to create a persistence manager from the
* persistence manager factory that this instance holds
* (= {@code PersistenceManagerFactory.}{@link
* PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed).
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#deletePersistent(Object)
* deletePersistent(entity)} failed.
*/
public void delete(TEntity entity)
throws IllegalArgumentException, IllegalStateException, JDOUserException
{
checkNonNull(entity, "entity");
checkFactory();
delete(factory, entity);
}
/**
* Delete an entity.
*
* @param factory
* A persistence manager factory.
*
* @param entity
* An entity to be deleted.
*
* @throws IllegalArgumentException
* {@code factory} is {@code null}, or {@code entity} is {@code null}.
*
* @throws IllegalStateException
* {@code factory.}{@link PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed.
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#deletePersistent(Object)
* deletePersistent(entity)} failed.
*
* @since 1.6
*/
public void delete(PersistenceManagerFactory factory, TEntity entity)
throws IllegalArgumentException, IllegalStateException, JDOUserException
{
checkNonNull(factory, "factory");
checkNonNull(entity, "entity");
PersistenceManager manager = createManager(factory);
try
{
delete(manager, entity);
}
finally
{
manager.close();
}
}
/**
* Delete an entity.
*
* @param manager
* A persistence manager.
*
* @param entity
* An entity to be deleted.
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}, or {@code entity} is {@code null}.
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#deletePersistent(Object)
* deletePersistent(entity)} failed.
*
* @since 1.6
*/
public void delete(PersistenceManager manager, TEntity entity)
throws IllegalArgumentException, JDOUserException
{
checkNonNull(manager, "manager");
checkNonNull(entity, "entity");
manager.deletePersistent(entity);
}
/**
* Delete an entity. If there is no entity having the ID,
* no change is made. A persistence manager factory must
* be set before this method is called.
*
* @param id
* Entity ID.
*
* @throws IllegalArgumentException
* {@code id} is {@code null}.
*
* @throws IllegalStateException
* A persistence manager factory is not set. Or,
* failed to create a persistence manager from the
* persistence manager factory that this instance holds
* (= {@code PersistenceManagerFactory.}{@link
* PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed). Or,
* {@code PersistenceManager.}{@link PersistenceManager#getObjectById(Class, Object)
* getObjectById(entityClass, id)} threw an exception other than
* {@link JDOObjectNotFoundException}.
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#deletePersistent(Object)
* deletePersistent(entity)} failed.
*/
public void deleteById(Object id)
throws IllegalArgumentException, IllegalStateException, JDOUserException
{
checkNonNull(id, "id");
checkFactory();
deleteById(factory, id);
}
/**
* Delete an entity by ID. If there is no entity having the ID,
* no change is made.
*
* @param factory
* A persistence manager factory.
*
* @param id
* Entity ID.
*
* @throws IllegalArgumentException
* {@code factory} is {@code null}, or {@code id} is {@code null}.
*
* @throws IllegalStateException
* {@code factory.}{@link PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed. Or,
* {@code PersistenceManager.}{@link PersistenceManager#getObjectById(Class, Object)
* getObjectById(entityClass, id)} threw an exception other than
* {@link JDOObjectNotFoundException}.
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#deletePersistent(Object)
* deletePersistent(entity)} failed.
*
* @since 1.6
*/
public void deleteById(PersistenceManagerFactory factory, Object id)
throws IllegalArgumentException, IllegalStateException, JDOUserException
{
checkNonNull(factory, "factory");
checkNonNull(id, "id");
PersistenceManager manager = createManager(factory);
try
{
deleteById(manager, id);
}
finally
{
manager.close();
}
}
/**
* Delete an entity by ID. If there is no entity having the ID,
* no change is made.
*
* @param manager
* A persistence manager.
*
* @param id
* Entity ID.
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}, or {@code id} is {@code null}.
*
* @throws IllegalStateException
* {@code PersistenceManager.}{@link PersistenceManager#getObjectById(Class, Object)
* getObjectById(entityClass, id)} threw an exception other than
* {@link JDOObjectNotFoundException}.
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#deletePersistent(Object)
* deletePersistent(entity)} failed.
*
* @since 1.6
*/
public void deleteById(PersistenceManager manager, Object id)
throws IllegalArgumentException, IllegalStateException, JDOUserException
{
checkNonNull(manager, "manager");
checkNonNull(id, "id");
TEntity entity = getById(manager, id);
if (entity != null)
{
delete(manager, entity);
}
}
/**
* Delete entities. A persistence manager factory must be set
* before this method is called.
*
* @param entities
* Entities to be deleted.
*
* @throws IllegalArgumentException
* {@code entities} is {@code null}.
*
* @throws IllegalStateException
* A persistence manager factory is not set. Or,
* failed to create a persistence manager from the
* persistence manager factory that this instance holds
* (= {@code PersistenceManagerFactory.}{@link
* PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed).
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#deletePersistentAll(Collection)
* deletePersistentAll(entities)} failed.
*
* @since 1.6
*/
public void deleteAll(Collection entities)
throws IllegalArgumentException, IllegalStateException, JDOUserException
{
checkNonNull(entities, "entities");
checkFactory();
deleteAll(factory, entities);
}
/**
* Delete entities.
*
* @param factory
* A persistence manager factory.
*
* @param entities
* Entities to be deleted.
*
* @throws IllegalArgumentException
* {@code factory} is {@code null}, or {@code entities} is {@code null}.
*
* @throws IllegalStateException
* {@code factory.}{@link PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed.
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#deletePersistentAll(Collection)
* deletePersistentAll(Collection)} failed.
*
* @since 1.6
*/
public void deleteAll(PersistenceManagerFactory factory, Collection entities)
throws IllegalArgumentException, IllegalStateException, JDOUserException
{
checkNonNull(factory, "factory");
checkNonNull(entities, "entities");
PersistenceManager manager = createManager(factory);
try
{
deleteAll(manager, entities);
}
finally
{
manager.close();
}
}
/**
* Delete entities.
*
* @param manager
* A persistence manager.
*
* @param entities
* Entities to be deleted.
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}, or {@code entities} is {@code null}.
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#deletePersistentAll(Collection)
* deletePersistentAll(entities)} failed.
*
* @since 1.6
*/
public void deleteAll(PersistenceManager manager, Collection entities)
throws IllegalArgumentException, JDOUserException
{
checkNonNull(manager, "manager");
checkNonNull(entities, "entities");
manager.deletePersistentAll(entities);
}
/**
* Delete entities. A persistence manager factory must be set
* before this method is called.
*
* @param entities
* Entities to be deleted.
*
* @throws IllegalArgumentException
* {@code entities} is {@code null}.
*
* @throws IllegalStateException
* A persistence manager factory is not set. Or,
* failed to create a persistence manager from the
* persistence manager factory that this instance holds
* (= {@code PersistenceManagerFactory.}{@link
* PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed).
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#deletePersistentAll(Object...)
* deletePersistentAll(entities)} failed.
*
* @since 1.6
*/
public void deleteAll(TEntity... entities)
throws IllegalArgumentException, IllegalStateException, JDOUserException
{
checkNonNull(entities, "entities");
checkFactory();
deleteAll(factory, entities);
}
/**
* Delete entities.
*
* @param factory
* A persistence manager factory.
*
* @param entities
* Entities to be deleted.
*
* @throws IllegalArgumentException
* {@code factory} is {@code null}, or {@code entities} is {@code null}.
*
* @throws IllegalStateException
* {@code factory.}{@link PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed.
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#deletePersistentAll(Object...)
* deletePersistentAll(Collection)} failed.
*
* @since 1.6
*/
public void deleteAll(PersistenceManagerFactory factory, TEntity... entities)
throws IllegalArgumentException, IllegalStateException, JDOUserException
{
checkNonNull(factory, "factory");
checkNonNull(entities, "entities");
PersistenceManager manager = createManager(factory);
try
{
deleteAll(manager, entities);
}
finally
{
manager.close();
}
}
/**
* Delete entities.
*
* @param manager
* A persistence manager.
*
* @param entities
* Entities to be deleted.
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}, or {@code entities} is {@code null}.
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#deletePersistentAll(Object...)
* deletePersistentAll(entities)} failed.
*
* @since 1.6
*/
public void deleteAll(PersistenceManager manager, TEntity... entities)
throws IllegalArgumentException, JDOUserException
{
checkNonNull(manager, "manager");
checkNonNull(entities, "entities");
manager.deletePersistentAll(entities);
}
/**
* Delete entities using JDOQL.
* A persistence manager factory must be set before this method is called.
*
* @param jdoql
* JDOQL.
*
* @param parameters
* Parameters of the JDOQL.
*
* @return
* The number of deleted instances. This is the value
* returned from {@link Query#deletePersistentAll(Object...)}
* method.
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}, or {@code jdoql} is {@code null}.
*
* @throws IllegalStateException
* A persistence manager factory is not set. Or,
* failed to create a persistence manager from the
* persistence manager factory that this instance holds
* (= {@code PersistenceManagerFactory.}{@link
* PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed).
*
* @since 1.10
*/
public long deleteByQuery(String jdoql, Object... parameters)
throws IllegalArgumentException, IllegalStateException
{
checkNonNull(jdoql, "jdoql");
checkFactory();
return deleteByQuery(factory, jdoql, parameters);
}
/**
* Delete entities using JDOQL.
*
* @param factory
* A persistence manager factory.
*
* @param jdoql
* JDOQL.
*
* @param parameters
* Parameters of the JDOQL.
*
* @return
* The number of deleted instances. This is the value
* returned from {@link Query#deletePersistentAll(Object...)}
* method.
*
* @throws IllegalArgumentException
* {@code factory} is {@code null}, or {@code jdoql} is {@code null}.
*
* @throws IllegalStateException
* {@code factory.}{@link PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed.
*
* @since 1.10
*/
public long deleteByQuery(PersistenceManagerFactory factory, String jdoql, Object... parameters)
throws IllegalArgumentException, IllegalStateException
{
checkNonNull(factory, "factory");
checkNonNull(jdoql, "jdoql");
PersistenceManager manager = createManager(factory);
try
{
return deleteByQuery(manager, jdoql, parameters);
}
finally
{
manager.close();
}
}
/**
* Delete entities using JDOQL.
*
* @param manager
* A persistence manager.
*
* @param jdoql
* JDOQL.
*
* @param parameters
* Parameters of the JDOQL.
*
* @return
* The number of deleted instances. This is the value
* returned from {@link Query#deletePersistentAll(Object...)}
* method.
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}, or {@code jdoql} is {@code null}.
*
* @since 1.10
*/
public long deleteByQuery(PersistenceManager manager, String jdoql, Object... parameters)
throws IllegalArgumentException
{
checkNonNull(manager, "manager");
checkNonNull(jdoql, "jdoql");
Query query = manager.newQuery(jdoql);
query.setClass(entityClass);
return query.deletePersistentAll(parameters);
}
/**
* Get an entity having the specified ID.
* A persistence manager factory must be set
* before this method is called.
*
* @param id
* Entity ID.
*
* @return
* An entity, or {@code null} if not found.
*
* @throws IllegalArgumentException
* {@code id} is {@code null}.
*
* @throws IllegalStateException
* A persistence manager factory is not set.
*/
public TEntity getById(Object id)
throws IllegalArgumentException, IllegalStateException
{
checkNonNull(id, "id");
checkFactory();
return getById(factory, id);
}
/**
* Get an entity having the specified ID.
*
* @param factory
* A persistence manager factory.
*
* @param id
* Entity ID.
*
* @return
* An entity, or {@code null} if not found.
*
* @throws IllegalArgumentException
* {@code factory} is {@code null}, or {@code id} is {@code null}.
*
* @throws IllegalStateException
* {@code factory.}{@link PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed. Or,
* {@code PersistenceManager.}{@link PersistenceManager#getObjectById(Class, Object)
* getObjectById(entityClass, id)} threw an exception other than
* {@link JDOObjectNotFoundException}.
*
* @since 1.6
*/
public TEntity getById(PersistenceManagerFactory factory, Object id)
throws IllegalArgumentException, IllegalStateException
{
checkNonNull(factory, "factory");
checkNonNull(id, "id");
PersistenceManager manager = createManager(factory);
try
{
return getById(manager, id);
}
finally
{
manager.close();
}
}
/**
* Get an entity having the specified ID.
*
* @param manager
* A persistence manager.
*
* @param id
* Entity ID.
*
* @return
* An entity, or {@code null} if not found.
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}, or {@code id} is {@code null}.
*
* @throws IllegalStateException
* {@code PersistenceManager.}{@link PersistenceManager#getObjectById(Class, Object)
* getObjectById(entityClass, id)} threw an exception other than
* {@link JDOObjectNotFoundException}.
*
* @since 1.6
*/
public TEntity getById(PersistenceManager manager, Object id)
throws IllegalArgumentException , IllegalStateException
{
checkNonNull(manager, "manager");
checkNonNull(id, "id");
try
{
return manager.getObjectById(entityClass, id);
}
catch (JDOObjectNotFoundException e)
{
// Not found.
return null;
}
catch (Throwable t)
{
throw new IllegalStateException("getObjectById() failed.", t);
}
}
/**
* Make an entity persistent.
* A persistence manager factory must be set
* before this method is called.
*
* @param entity
* An entity to be made persistent.
*
* @throws IllegalArgumentException
* {@code entity} is {@code null}.
*
* @throws IllegalStateException
* A persistence manager factory is not set. Or,
* failed to create a persistence manager from the
* persistence manager factory that this instance holds
* (= {@code PersistenceManagerFactory.}{@link
* PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed).
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#makePersistent(Object)
* makePersistent(entity)} failed.
*/
public void put(TEntity entity)
throws IllegalArgumentException, IllegalStateException, JDOUserException
{
checkNonNull(entity, "entity");
checkFactory();
put(factory, entity);
}
/**
* Make an entity persistent.
*
* @param factory
* An persistence manager factory.
*
* @param entity
* An entity to be made persistent.
*
* @throws IllegalArgumentException
* {@code factory} is {@code null}, or {@code entity} is {@code null}.
*
* @throws IllegalStateException
* {@code factory.}{@link PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed.
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#makePersistent(Object)
* makePersistent(entity)} failed.
*
* @since 1.6
*/
public void put(PersistenceManagerFactory factory, TEntity entity)
throws IllegalArgumentException, IllegalStateException, JDOUserException
{
checkNonNull(factory, "factory");
checkNonNull(entity, "entity");
PersistenceManager manager = createManager(factory);
try
{
put(manager, entity);
}
finally
{
manager.close();
}
}
/**
* Make an entity persistent.
*
* @param manager
* A persistence manager.
*
* @param entity
* An entity to be made persistent.
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}, or {@code entity} is {@code null}.
*
* @throws JDOUserException
* {@code manager.}{@link PersistenceManager#makePersistent(Object)
* makePersistent(entity)} failed.
*
* @since 1.6
*/
public void put(PersistenceManager manager, TEntity entity)
throws IllegalArgumentException, JDOUserException
{
checkNonNull(manager, "manager");
checkNonNull(entity, "entity");
manager.makePersistent(entity);
}
/**
* Make entities persistent.
* A persistence manager factory must be set
* before this method is called.
*
* @param entities
* Entities to be made persistent.
*
* @return
* The parameter instance for parameters in the transient or persistent
* state, or the corresponding persistent instance for detached parameter
* instances, with an iteration in the same order as in the parameter
* collection. (= The value returned from {@link
* PersistenceManager#makePersistentAll(Collection)}).
*
* @throws IllegalArgumentException
* {@code entities} is {@code null}.
*
* @throws IllegalStateException
* A persistence manager factory is not set. Or,
* failed to create a persistence manager from the
* persistence manager factory that this instance holds
* (= {@code PersistenceManagerFactory.}{@link
* PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed).
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#makePersistentAll(Collection)
* makePersistentAll(entities)} failed.
*
* @since 1.6
*/
public Collection putAll(Collection entities)
throws IllegalArgumentException, IllegalStateException, JDOUserException
{
checkNonNull(entities, "entities");
checkFactory();
return putAll(factory, entities);
}
/**
* Make entities persistent.
*
* @param factory
* An persistence manager factory.
*
* @param entities
* Entities to be made persistent.
*
* @return
* The parameter instance for parameters in the transient or persistent
* state, or the corresponding persistent instance for detached parameter
* instances, with an iteration in the same order as in the parameter
* collection. (= The value returned from {@link
* PersistenceManager#makePersistentAll(Collection)}).
*
* @throws IllegalArgumentException
* {@code factory} is {@code null}, or {@code entities} is {@code null}.
*
* @throws IllegalStateException
* {@code factory.}{@link PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed.
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#makePersistentAll(Collection)
* makePersistentAll(entities)} failed.
*
* @since 1.6
*/
public Collection putAll(PersistenceManagerFactory factory, Collection entities)
throws IllegalArgumentException, IllegalStateException, JDOUserException
{
checkNonNull(factory, "factory");
checkNonNull(entities, "entities");
PersistenceManager manager = createManager(factory);
try
{
return putAll(manager, entities);
}
finally
{
manager.close();
}
}
/**
* Make entities persistent.
*
* @param manager
* A persistence manager.
*
* @param entities
* Entities to be made persistent.
*
* @return
* The parameter instance for parameters in the transient or persistent
* state, or the corresponding persistent instance for detached parameter
* instances, with an iteration in the same order as in the parameter
* collection. (= The value returned from {@link
* PersistenceManager#makePersistentAll(Collection)}).
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}, or {@code entities} is {@code null}.
*
* @throws JDOUserException
* {@code manager.}{@link PersistenceManager#makePersistentAll(Collection)
* makePersistentAll(entities)} failed.
*
* @since 1.6
*/
public Collection putAll(PersistenceManager manager, Collection entities)
throws IllegalArgumentException, JDOUserException
{
checkNonNull(manager, "manager");
checkNonNull(entities, "entities");
return manager.makePersistentAll(entities);
}
/**
* Make entities persistent.
* A persistence manager factory must be set
* before this method is called.
*
* @param entities
* Entities to be made persistent.
*
* @return
* The parameter instances for parameters in the transient or persistent state,
* or the corresponding persistent instance for detached parameter instances,
* in the same order as in the parameter array. (= The value returned from
* {@link PersistenceManager#makePersistentAll(Object...)}).
*
* @throws IllegalArgumentException
* {@code entities} is {@code null}.
*
* @throws IllegalStateException
* A persistence manager factory is not set. Or,
* failed to create a persistence manager from the
* persistence manager factory that this instance holds
* (= {@code PersistenceManagerFactory.}{@link
* PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed).
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#makePersistentAll(Object...)
* makePersistentAll(entities)} failed.
*
* @since 1.6
*/
public TEntity[] putAll(TEntity... entities)
{
checkNonNull(entities, "entities");
checkFactory();
return putAll(factory, entities);
}
/**
* Make entities persistent.
*
* @param factory
* An persistence manager factory.
*
* @param entities
* Entities to be made persistent.
*
* @return
* The parameter instances for parameters in the transient or persistent state,
* or the corresponding persistent instance for detached parameter instances,
* in the same order as in the parameter array. (= The value returned from
* {@link PersistenceManager#makePersistentAll(Object...)}).
*
* @throws IllegalArgumentException
* {@code factory} is {@code null}, or {@code entities} is {@code null}.
*
* @throws IllegalStateException
* {@code factory.}{@link PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed.
*
* @throws JDOUserException
* {@code PersistenceManager.}{@link PersistenceManager#makePersistentAll(Object...)
* makePersistentAll(entities)} failed.
*
* @since 1.6
*/
public TEntity[] putAll(PersistenceManagerFactory factory, TEntity... entities)
{
checkNonNull(factory, "factory");
checkNonNull(entities, "entities");
PersistenceManager manager = createManager(factory);
try
{
return putAll(manager, entities);
}
finally
{
manager.close();
}
}
/**
* Make entities persistent.
*
* @param manager
* A persistence manager.
*
* @param entities
* Entities to be made persistent.
*
* @return
* The parameter instances for parameters in the transient or persistent state,
* or the corresponding persistent instance for detached parameter instances,
* in the same order as in the parameter array. (= The value returned from
* {@link PersistenceManager#makePersistentAll(Object...)}).
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}, or {@code entities} is {@code null}.
*
* @throws JDOUserException
* {@code manager.}{@link PersistenceManager#makePersistentAll(Object...)
* makePersistentAll(entities)} failed.
*
* @since 1.6
*/
public TEntity[] putAll(PersistenceManager manager, TEntity... entities)
{
checkNonNull(manager, "manager");
checkNonNull(entities, "entities");
return manager.makePersistentAll(entities);
}
/**
* Get all entities.
* A persistence manager factory must be set before this method is called.
*
* @return
* Entity list.
*
* @throws IllegalStateException
* A persistence manager factory is not set. Or,
* failed to create a persistence manager from the
* persistence manager factory that this instance holds
* (= {@code PersistenceManagerFactory.}{@link
* PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed).
*
* @since 1.11
*/
public List getAll() throws IllegalStateException
{
checkFactory();
return getAll(factory);
}
/**
* Get all entities.
*
* @param factory
* A persistence manager factory.
*
* @return
* Entity list.
*
* @throws IllegalArgumentException
* {@code factory} is {@code null}.
*
* @throws IllegalStateException
* {@code factory.}{@link PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed.
*
* @since 1.11
*/
public List getAll(PersistenceManagerFactory factory)
throws IllegalArgumentException, IllegalStateException
{
checkNonNull(factory, "factory");
PersistenceManager manager = createManager(factory);
try
{
return getAll(manager);
}
finally
{
manager.close();
}
}
/**
* Get all entities.
*
* @param manager
* A persistence manager.
*
* @return
* Entity list.
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}.
*
* @since 1.11
*/
@SuppressWarnings("unchecked")
public List getAll(PersistenceManager manager) throws IllegalArgumentException
{
checkNonNull(manager, "manager");
Query query = manager.newQuery(entityClass);
return (List)query.execute();
}
/**
* Get an entity using a condition that identifies the unique entity.
* A persistence manager factory must be set before this method is called.
*
* @param field
* A database column name which has UNIQUE constraint.
*
* @param value
* A value of the data field which identifies the unique entity.
*
* @return
* A unique entity, or {@code null} if not found.
*
* @throws IllegalArgumentException
* {@code field} is {@code null} or {@code value} is {@code null}.
*
* @throws IllegalStateException
* A persistence manager factory is not set. Or,
* failed to create a persistence manager from the
* persistence manager factory that this instance holds
* (= {@code PersistenceManagerFactory.}{@link
* PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed).
*
* @since 1.5
*/
public TEntity getUnique(String field, Object value)
throws IllegalArgumentException, IllegalStateException
{
checkNonNull(field, "field");
checkNonNull(value, "value");
checkFactory();
return getUnique(factory, field, value);
}
/**
* Get an entity using a condition that identifies the unique entity.
*
* @param factory
* A persistence manager factory.
*
* @param field
* A database column name which has UNIQUE constraint.
*
* @param value
* A value of the data field which identifies the unique entity.
*
* @return
* A unique entity, or {@code null} if not found.
*
* @throws IllegalArgumentException
* {@code factory} is {@code null}, {@code field} is {@code null},
* or {@code value} is {@code null}.
*
* @throws IllegalStateException
* {@code factory.}{@link PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed.
*
* @since 1.6
*/
public TEntity getUnique(PersistenceManagerFactory factory, String field, Object value)
throws IllegalArgumentException, IllegalStateException
{
checkNonNull(factory, "factory");
checkNonNull(field, "field");
checkNonNull(value, "value");
PersistenceManager manager = createManager(factory);
try
{
return getUnique(manager, field, value);
}
finally
{
manager.close();
}
}
/**
* Get an entity using a condition that identifies the unique entity.
*
* @param manager
* A persistence manager.
*
* @param field
* A database column name which has UNIQUE constraint.
*
* @param value
* A value of the data field which identifies the unique entity.
*
* @return
* A unique entity, or {@code null} if not found.
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}, {@code field} is {@code null},
* or {@code value} is {@code null}.
*
* @since 1.6
*/
@SuppressWarnings("unchecked")
public TEntity getUnique(PersistenceManager manager, String field, Object value)
throws IllegalArgumentException
{
checkNonNull(manager, "manager");
checkNonNull(field, "field");
checkNonNull(value, "value");
Query query = manager.newQuery(entityClass);
query.setUnique(true);
query.setFilter(field + " == :value");
return (TEntity)query.execute(value);
}
/**
* Get entities using a condition that filters them.
* A persistence manager factory must be set before this method is called.
*
* @param field
* A database column name.
*
* @param value
* A value of the data field which filters entities.
*
* @return
* Entity list.
*
* @throws IllegalArgumentException
* {@code field} is {@code null} or {@code value} is {@code null}.
*
* @throws IllegalStateException
* A persistence manager factory is not set. Or,
* failed to create a persistence manager from the
* persistence manager factory that this instance holds
* (= {@code PersistenceManagerFactory.}{@link
* PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed).
*
* @since 1.7
*/
public List getList(String field, Object value)
throws IllegalArgumentException, IllegalStateException
{
checkNonNull(field, "field");
checkNonNull(value, "value");
checkFactory();
return getList(factory, field, value);
}
/**
* Get entities using a condition that filters them.
*
* @param factory
* A persistence manager factory.
*
* @param field
* A database column name.
*
* @param value
* A value of the data field which filters entities.
*
* @return
* Entity list.
*
* @throws IllegalArgumentException
* {@code factory} is {@code null}, {@code field} is {@code null},
* or {@code value} is {@code null}.
*
* @throws IllegalStateException
* {@code factory.}{@link PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed.
*
* @since 1.7
*/
public List getList(PersistenceManagerFactory factory, String field, Object value)
throws IllegalArgumentException, IllegalStateException
{
checkNonNull(factory, "factory");
checkNonNull(field, "field");
checkNonNull(value, "value");
PersistenceManager manager = createManager(factory);
try
{
return getList(manager, field, value);
}
finally
{
manager.close();
}
}
/**
* Get entities using a condition that filters them.
*
* @param manager
* A persistence manager.
*
* @param field
* A database column name.
*
* @param value
* A value of the data field which filters entities.
*
* @return
* Entity list.
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}, {@code field} is {@code null},
* or {@code value} is {@code null}.
*
* @since 1.7
*/
@SuppressWarnings("unchecked")
public List getList(PersistenceManager manager, String field, Object value)
throws IllegalArgumentException
{
checkNonNull(manager, "manager");
checkNonNull(field, "field");
checkNonNull(value, "value");
Query query = manager.newQuery(entityClass);
query.setFilter(field + " == :value");
return (List)query.execute(value);
}
/**
* Get entities using JDOQL.
* A persistence manager factory must be set before this method is called.
*
* @param jdoql
* JDOQL.
*
* @param parameters
* Parameters of the JDOQL.
*
* @return
* Entities.
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}, or {@code jdoql} is {@code null}.
*
* @throws IllegalStateException
* A persistence manager factory is not set. Or,
* failed to create a persistence manager from the
* persistence manager factory that this instance holds
* (= {@code PersistenceManagerFactory.}{@link
* PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed).
*
* @since 1.7
*/
public List getListByQuery(String jdoql, Object... parameters)
throws IllegalArgumentException, IllegalStateException
{
checkNonNull(jdoql, "jdoql");
checkFactory();
return getListByQuery(factory, jdoql, parameters);
}
/**
* Get entities using JDOQL.
*
* @param factory
* A persistence manager factory.
*
* @param jdoql
* JDOQL.
*
* @param parameters
* Parameters of the JDOQL.
*
* @return
* Entities.
*
* @throws IllegalArgumentException
* {@code factory} is {@code null}, or {@code jdoql} is {@code null}.
*
* @throws IllegalStateException
* {@code factory.}{@link PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed.
*
* @since 1.7
*/
public List getListByQuery(PersistenceManagerFactory factory, String jdoql, Object... parameters)
throws IllegalArgumentException, IllegalStateException
{
checkNonNull(factory, "factory");
checkNonNull(jdoql, "jdoql");
PersistenceManager manager = createManager(factory);
try
{
return getListByQuery(manager, jdoql, parameters);
}
finally
{
manager.close();
}
}
/**
* Get entities using JDOQL.
*
* @param manager
* A persistence manager.
*
* @param jdoql
* JDOQL.
*
* @param parameters
* Parameters of the JDOQL.
*
* @return
* Entities.
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}, or {@code jdoql} is {@code null}.
*
* @since 1.7
*/
@SuppressWarnings("unchecked")
public List getListByQuery(PersistenceManager manager, String jdoql, Object... parameters)
throws IllegalArgumentException
{
checkNonNull(manager, "manager");
checkNonNull(jdoql, "jdoql");
Query query = manager.newQuery(jdoql);
query.setClass(entityClass);
return (List)query.executeWithArray(parameters);
}
/**
* Get an entity using JDOQL. If there are multiple entities that
* match the query, the first one in the query result is returned.
* A persistence manager factory must be set before this method is called.
*
* @param jdoql
* JDOQL.
*
* @param parameters
* Parameters of the JDOQL.
*
* @return
* An entity. {@code null} if no entity matches the given query.
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}, or {@code jdoql} is {@code null}.
*
* @throws IllegalStateException
* A persistence manager factory is not set. Or,
* failed to create a persistence manager from the
* persistence manager factory that this instance holds
* (= {@code PersistenceManagerFactory.}{@link
* PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed).
*
* @since 1.8
*/
public TEntity getByQuery(String jdoql, Object... parameters)
throws IllegalArgumentException, IllegalStateException
{
checkNonNull(jdoql, "jdoql");
checkFactory();
return getByQuery(factory, jdoql, parameters);
}
/**
* Get an entity using JDOQL. If there are multiple entities that
* match the query, the first one in the query result is returned.
*
* @param factory
* A persistence manager factory.
*
* @param jdoql
* JDOQL.
*
* @param parameters
* Parameters of the JDOQL.
*
* @return
* An entity. {@code null} if no entity matches the given query.
*
* @throws IllegalArgumentException
* {@code factory} is {@code null}, or {@code jdoql} is {@code null}.
*
* @throws IllegalStateException
* {@code factory.}{@link PersistenceManagerFactory#getPersistenceManager()
* getPersistenceManager()} failed.
*
* @since 1.8
*/
public TEntity getByQuery(PersistenceManagerFactory factory, String jdoql, Object... parameters)
throws IllegalArgumentException, IllegalStateException
{
checkNonNull(factory, "factory");
checkNonNull(jdoql, "jdoql");
PersistenceManager manager = createManager(factory);
try
{
return getByQuery(manager, jdoql, parameters);
}
finally
{
manager.close();
}
}
/**
* Get an entity using JDOQL. If there are multiple entities that
* match the query, the first one in the query result is returned.
*
* @param manager
* A persistence manager.
*
* @param jdoql
* JDOQL.
*
* @param parameters
* Parameters of the JDOQL.
*
* @return
* An entity. {@code null} if no entity matches the given query.
*
* @throws IllegalArgumentException
* {@code manager} is {@code null}, or {@code jdoql} is {@code null}.
*
* @since 1.8
*/
@SuppressWarnings("unchecked")
public TEntity getByQuery(PersistenceManager manager, String jdoql, Object... parameters)
throws IllegalArgumentException
{
checkNonNull(manager, "manager");
checkNonNull(jdoql, "jdoql");
Query query = manager.newQuery(jdoql);
query.setClass(entityClass);
List list = (List)query.executeWithArray(parameters);
if (list == null || list.size() == 0)
{
return null;
}
return list.get(0);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy