package dao; import java.util.HashMap; import java.util.Map; import dao.entities.DMPDaoImpl; import dao.entities.DMPProfileDaoImpl; import dao.entities.DMPResearcherDaoImpl; import dao.entities.DataRepositoryDaoImpl; import dao.entities.DatasetDaoImpl; import dao.entities.DatasetProfileDaoImpl; import dao.entities.DatasetProfileRulesetDaoImpl; import dao.entities.DatasetProfileViewstyleDaoImpl; import dao.entities.DatasetRegistryDaoImpl; import dao.entities.DatasetServiceDaoImpl; import dao.entities.OrganisationDaoImpl; import dao.entities.ProjectDaoImpl; import dao.entities.RegistryDaoImpl; import dao.entities.ResearcherDaoImpl; import dao.entities.ServiceDaoImpl; import entities.DMP; import entities.DMPProfile; import entities.DMPResearcher; import entities.DataRepository; import entities.Dataset; import entities.DatasetProfile; import entities.DatasetProfileRuleset; import entities.DatasetProfileViewstyle; import entities.DatasetRegistry; import entities.DatasetService; import entities.Organisation; import entities.Project; import entities.Registry; import entities.Researcher; import entities.Service; /** * A DAO factory for non-managed environments */ public class JpaDaoFactory implements DaoFactory { private static String persistenceUnit = null; private static Map daoImpls = null; public static void setPersistenceContext(String persistenceUnit) { JpaDaoFactory.persistenceUnit = persistenceUnit; } private static void populateMappings() { daoImpls = new HashMap(); daoImpls.put(Organisation.class.getName(), OrganisationDaoImpl.class.getName()); daoImpls.put(DataRepository.class.getName(), (DataRepositoryDaoImpl.class.getName())); daoImpls.put(Dataset.class.getName(), (DatasetDaoImpl.class.getName())); daoImpls.put(DatasetProfile.class.getName(), (DatasetProfileDaoImpl.class.getName())); daoImpls.put(DatasetProfileRuleset.class.getName(), (DatasetProfileRulesetDaoImpl.class.getName())); daoImpls.put(DatasetProfileViewstyle.class.getName(), (DatasetProfileViewstyleDaoImpl.class.getName())); daoImpls.put(DatasetRegistry.class.getName(), (DatasetRegistryDaoImpl.class.getName())); daoImpls.put(DatasetService.class.getName(), (DatasetServiceDaoImpl.class.getName())); daoImpls.put(DMP.class.getName(), (DMPDaoImpl.class.getName())); daoImpls.put(DMPProfile.class.getName(), (DMPProfileDaoImpl.class.getName())); daoImpls.put(DMPResearcher.class.getName(), (DMPResearcherDaoImpl.class.getName())); daoImpls.put(Organisation.class.getName(), (OrganisationDaoImpl.class.getName())); daoImpls.put(Project.class.getName(), (ProjectDaoImpl.class.getName())); daoImpls.put(Registry.class.getName(), (RegistryDaoImpl.class.getName())); daoImpls.put(Researcher.class.getName(), (ResearcherDaoImpl.class.getName())); daoImpls.put(Service.class.getName(), (ServiceDaoImpl.class.getName())); } @SuppressWarnings("rawtypes") public Dao getDao(Class type) throws Exception { if(daoImpls == null) populateMappings(); return (Dao)Class.forName(daoImpls.get(type.getName())).newInstance(); } public void overrideMappings(Map mappings) { populateMappings(); daoImpls.putAll(mappings); } }