package nl.ipo.cds.dao; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import junit.framework.Assert; import nl.ipo.cds.domain.Bronhouder; import nl.ipo.cds.domain.BronhouderThema; import nl.ipo.cds.domain.Dataset; import nl.ipo.cds.domain.DatasetType; import nl.ipo.cds.domain.JobType; import nl.ipo.cds.domain.Thema; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; import org.springframework.test.context.transaction.TransactionConfiguration; @ContextConfiguration({ "classpath:/nl/ipo/cds/dao/dao-applicationContext.xml", "classpath:/nl/ipo/cds/dao/dataSource-applicationContext.xml", "classpath:/nl/ipo/cds/context/propertyConfigurer-test.xml" }) @TransactionConfiguration(transactionManager = "transactionManager") public abstract class BaseManagerDaoTest extends AbstractTransactionalJUnit4SpringContextTests { @Autowired protected ManagerDao managerDao; @PersistenceContext protected EntityManager entityManager; protected JobType jobTypeV, jobTypeI, jobTypeT; protected Bronhouder bronhouderDR, bronhouderLI, bronhouderNH, bronhouderOV; protected Thema thema, thema2 ; protected DatasetType datasetType1, datasetType2, datasetType3; protected Dataset dataset1; /** * build up a database with base tables to be used in the testcases * @throws Exception */ public void buildDB () throws Exception { Assert.assertNotNull(managerDao); // STAMTABEL JOBTYPE // check if tables exists if (managerDao.getJobTypeByName("VALIDATE") == null){ // make new tables jobTypeV = new JobType(); jobTypeV.setNaam("VALIDATE"); jobTypeV.setPrioriteit(300); managerDao.create(jobTypeV); jobTypeI = new JobType(); jobTypeI.setNaam("IMPORT"); jobTypeI.setPrioriteit(200); managerDao.create(jobTypeI); jobTypeT = new JobType(); jobTypeT.setNaam("TRANSFORM"); jobTypeT.setPrioriteit(100); managerDao.create(jobTypeT); } else { // get from existing tables jobTypeV = managerDao.getJobTypeByName("VALIDATE"); jobTypeI = managerDao.getJobTypeByName("IMPORT"); jobTypeT = managerDao.getJobTypeByName("TRANSFORM"); } // STAMTABEL BRONHOUDER if (managerDao.getBronhouderByContactNaam("IDgis") == null){ /* CBS Provincie codes 20 Groningen 21 Friesland 22 Drenthe 23 Overijssel 24 Flevoland 25 Gelderland 26 Utrecht 27 Noord-Holland 28 Zuid-Holland 29 Zeeland 30 Noord-Brabant 31 Limburg */ bronhouderDR = new Bronhouder(); bronhouderDR.setContactNaam("D. Rent"); bronhouderDR.setNaam("Drenthe"); bronhouderDR.setCode("9922"); bronhouderDR.setContactEmailadres("mail@drenthe.nl"); bronhouderDR.setCommonName ("drenthe"); managerDao.create(bronhouderDR); bronhouderLI = new Bronhouder(); bronhouderLI.setContactNaam("L. Imburg"); bronhouderLI.setNaam("Limburg"); bronhouderLI.setCode("9931"); bronhouderLI.setContactEmailadres("mail@limburg.nl"); bronhouderLI.setCommonName ("limburg"); managerDao.create(bronhouderLI); bronhouderNH = new Bronhouder(); bronhouderNH.setContactNaam("N. Holland"); bronhouderNH.setNaam("Noord-Holland"); bronhouderNH.setCode("9927"); bronhouderNH.setContactEmailadres("mail@nh.nl"); bronhouderNH.setCommonName ("noordholland"); managerDao.create(bronhouderNH); bronhouderOV = new Bronhouder(); bronhouderOV.setContactNaam("IDgis"); bronhouderOV.setContactPlaats("Rijssen"); bronhouderOV.setNaam("Overijssel"); bronhouderOV.setCode("9923"); bronhouderOV.setContactEmailadres("mail@overijssel.nl"); bronhouderOV.setCommonName ("overijssel"); managerDao.create(bronhouderOV); }else{ bronhouderDR = managerDao.getBronhouderByContactNaam("D. Rent"); bronhouderLI = managerDao.getBronhouderByContactNaam("L. Imburg"); bronhouderNH = managerDao.getBronhouderByContactNaam("N. Holland"); bronhouderOV = managerDao.getBronhouderByContactNaam("IDgis"); } // STAMTABEL THEMA thema = createThema ("Protected sites", "Drenthe", "Limburg"); thema2 = createThema ("Thema 2", "Noord-Holland", "Overijssel"); // STAMTABEL DATASET_TYPE if (managerDao.getDatasetTypeByName("EHS") == null){ datasetType1 = new DatasetType(); datasetType1.setThema(thema); datasetType1.setNaam("EHS"); managerDao.create(datasetType1); datasetType2 = new DatasetType(); datasetType2.setThema(thema); datasetType2.setNaam("WAV"); managerDao.create(datasetType2); datasetType3 = new DatasetType(); datasetType3.setThema(thema); datasetType3.setNaam("ST"); managerDao.create(datasetType3); }else{ datasetType1 = managerDao.getDatasetTypeByName("EHS"); datasetType2 = managerDao.getDatasetTypeByName("WAV"); datasetType3 = managerDao.getDatasetTypeByName("ST"); } if (managerDao.getDatasetsByBronhouder (bronhouderOV).size () == 0) { dataset1 = new Dataset (); dataset1.setBronhouder(bronhouderOV); dataset1.setDatasetType(datasetType1); dataset1.setUuid("{1234-5678}"); managerDao.create(dataset1); } } private Thema createThema (final String themaName, final String ... bronhouderNames) { final Thema existing = managerDao.getThemaByName (themaName); if (existing != null) { return existing; } final Thema thema = new Thema (); thema.setNaam (themaName); managerDao.create (thema); // Add BronhouderThemas: for (final String bronhouderName: bronhouderNames) { final Bronhouder bronhouder = managerDao.getBronhouderByNaam (bronhouderName); final BronhouderThema bronhouderThema = new BronhouderThema (thema, bronhouder); entityManager.persist (bronhouderThema); } return thema; } }