/* * #%L * BroadleafCommerce Open Admin Platform * %% * Copyright (C) 2009 - 2013 Broadleaf Commerce * %% * 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. * #L% */ package org.broadleafcommerce.openadmin.server.dao; import org.broadleafcommerce.common.persistence.EntityConfiguration; import org.broadleafcommerce.common.util.dao.DynamicDaoHelper; import org.broadleafcommerce.common.util.dao.EJB3ConfigurationDao; import org.broadleafcommerce.openadmin.dto.ClassTree; import org.broadleafcommerce.openadmin.dto.FieldMetadata; import org.broadleafcommerce.openadmin.dto.ForeignKey; import org.broadleafcommerce.openadmin.dto.MergedPropertyType; import org.broadleafcommerce.openadmin.dto.PersistencePerspective; import org.broadleafcommerce.openadmin.server.dao.provider.metadata.FieldMetadataProvider; import org.broadleafcommerce.openadmin.server.service.persistence.module.FieldManager; import org.hibernate.Criteria; import org.hibernate.SessionFactory; import org.hibernate.mapping.PersistentClass; import org.hibernate.type.Type; import java.io.Serializable; import java.lang.reflect.Field; import java.util.List; import java.util.Map; import javax.annotation.Nonnull; import javax.persistence.EntityManager; /** * * @author jfischer * */ public interface DynamicEntityDao { Class<?>[] getAllPolymorphicEntitiesFromCeiling(Class<?> ceilingClass); Class<?>[] getAllPolymorphicEntitiesFromCeiling(Class<?> ceilingClass, boolean includeUnqualifiedPolymorphicEntities); Class<?>[] getUpDownInheritance(Class<?> testClass); ClassTree getClassTreeFromCeiling(Class<?> ceilingClass); ClassTree getClassTree(Class<?>[] polymorphicClasses); Map<String, FieldMetadata> getPropertiesForPrimitiveClass(String propertyName, String friendlyPropertyName, Class<?> targetClass, Class<?> parentClass, MergedPropertyType mergedPropertyType); Map<String, FieldMetadata> getMergedProperties(String ceilingEntityFullyQualifiedClassname, Class<?>[] entities, ForeignKey foreignField, String[] additionalNonPersistentProperties, ForeignKey[] additionalForeignFields, MergedPropertyType mergedPropertyType, Boolean populateManyToOneFields, String[] includeManyToOneFields, String[] excludeManyToOneFields, String configurationKey, String prefix); /** * Convenience method that obtains all of the {@link MergedPropertyType#PRIMARY} properties for a given class. Delegates to * {@link #getMergedProperties(String, Class[], ForeignKey, String[], ForeignKey[], MergedPropertyType, Boolean, String[], String[], String, String)} * @param cls * @return */ Map<String, FieldMetadata> getMergedProperties(@Nonnull Class<?> cls); <T> T persist(T entity); <T> T merge(T entity); Serializable retrieve(Class<?> entityClass, Object primaryKey); void remove(Serializable entity); void clear(); void flush(); void detach(Serializable entity); void refresh(Serializable entity); Object find(Class<?> entityClass, Object key); EntityManager getStandardEntityManager(); void setStandardEntityManager(EntityManager entityManager); /** * Get the Hibernate PersistentClass instance associated with the fully-qualified * class name. Will return null if no persistent class is associated with this name. * * @param targetClassName * @return The PersistentClass instance */ PersistentClass getPersistentClass(String targetClassName); Map<String, FieldMetadata> getSimpleMergedProperties(String entityName, PersistencePerspective persistencePerspective); FieldManager getFieldManager(); EntityConfiguration getEntityConfiguration(); void setEntityConfiguration(EntityConfiguration entityConfiguration); Map<String, Object> getIdMetadata(Class<?> entityClass); List<Type> getPropertyTypes(Class<?> entityClass); List<String> getPropertyNames(Class<?> entityClass); Criteria createCriteria(Class<?> entityClass); Field[] getAllFields(Class<?> targetClass); Metadata getMetadata(); void setMetadata(Metadata metadata); FieldMetadataProvider getDefaultFieldMetadataProvider(); SessionFactory getSessionFactory(); boolean useCache(); EJB3ConfigurationDao getEjb3ConfigurationDao(); DynamicDaoHelper getDynamicDaoHelper(); }