CleanUtil.java

  1. /*
  2.  * Copyright (C) 2016 B3Partners B.V.
  3.  */
  4. package nl.b3p.brmo.test.util.database.dbunit;

  5. import java.sql.SQLException;
  6. import org.dbunit.DatabaseUnitException;
  7. import org.dbunit.database.IDatabaseConnection;
  8. import org.dbunit.dataset.DefaultDataSet;
  9. import org.dbunit.dataset.DefaultTable;
  10. import org.dbunit.operation.DatabaseOperation;

  11. /**
  12.  * DBunit utility om databases leeg te maken.
  13.  *
  14.  * @author mprins
  15.  */
  16. public final class CleanUtil {

  17.   /** private by design. */
  18.   private CleanUtil() {}

  19.   /**
  20.    * leegt de BRK 2 tabellen in het BRK schema. kan worden gebruikt in een {@code @After} van een
  21.    * test case.
  22.    *
  23.    * @param rsgbbrk database welke geleegd moet worden moeten worden
  24.    * @throws org.dbunit.DatabaseUnitException als er een DBunit fout optreedt
  25.    * @throws java.sql.SQLException als er iets misgaat in de database
  26.    */
  27.   public static void cleanRSGB_BRK2(final IDatabaseConnection rsgbbrk)
  28.       throws DatabaseUnitException, SQLException {

  29.     DatabaseOperation.DELETE_ALL.execute(
  30.         rsgbbrk,
  31.         new DefaultDataSet(
  32.             new DefaultTable[] {
  33.               // TODO mogelijk de volgorde nog aanpassen
  34.               new DefaultTable("onroerendezaak"),
  35.               new DefaultTable("nietnatuurlijkpersoon"),
  36.               new DefaultTable("adres"),
  37.               new DefaultTable("natuurlijkpersoon"),
  38.               new DefaultTable("stuk"),
  39.               new DefaultTable("stukdeel"),
  40.               new DefaultTable("persoon"),
  41.               new DefaultTable("recht"),
  42.               new DefaultTable("publiekrechtelijkebeperking"),
  43.               new DefaultTable("onroerendezaakbeperking_archief"),
  44.               new DefaultTable("onroerendezaakfiliatie"),
  45.               new DefaultTable("recht_isbeperkttot"),
  46.               new DefaultTable("objectlocatie"),
  47.               new DefaultTable("onroerendezaakbeperking"),
  48.               new DefaultTable("recht_aantekeningrecht"),
  49.               new DefaultTable("recht_archief"),
  50.               new DefaultTable("recht_isbelastmet"),
  51.               new DefaultTable("appartementsrecht"),
  52.               new DefaultTable("appartementsrecht_archief"),
  53.               new DefaultTable("objectlocatie_archief"),
  54.               new DefaultTable("onroerendezaak_archief"),
  55.               new DefaultTable("perceel"),
  56.               new DefaultTable("perceel_archief"),
  57.               new DefaultTable("recht_aantekeningrecht_archief"),
  58.               new DefaultTable("recht_isbelastmet_archief"),
  59.               new DefaultTable("recht_isbeperkttot_archief"),
  60.             }));
  61.   }

  62.   /**
  63.    * Leeg de subject en onderliggende tabellen die betrokken zijn bij BRP.
  64.    *
  65.    * @param rsgb database welke geleegd moet worden
  66.    * @throws org.dbunit.DatabaseUnitException als er een DBunit fout optreedt
  67.    * @throws java.sql.SQLException als er iets misgaat in de database
  68.    */
  69.   public static void cleanRSGB_BRP(final IDatabaseConnection rsgb)
  70.       throws DatabaseUnitException, SQLException {
  71.     CleanUtil.cleanRSGB_BRP(rsgb, true);
  72.   }

  73.   /**
  74.    * Leeg de subject en onderliggende tabellen die betrokken zijn bij BRP. NB. deze cleanup is niet
  75.    * bijzonder slim, alle (natuurlijke) personen worden verwijderd, dus ook uit brk.
  76.    *
  77.    * @param rsgb database welke geleegd moet worden
  78.    * @param deleteBrondocument {@code true} als brondocumenten ook verwijderd moeten worden
  79.    * @throws org.dbunit.DatabaseUnitException als er een DBunit fout optreedt
  80.    * @throws java.sql.SQLException als er iets misgaat in de database
  81.    */
  82.   public static void cleanRSGB_BRP(final IDatabaseConnection rsgb, final boolean deleteBrondocument)
  83.       throws DatabaseUnitException, SQLException {
  84.     if (deleteBrondocument) {
  85.       DatabaseOperation.DELETE_ALL.execute(
  86.           rsgb, new DefaultDataSet(new DefaultTable[] {new DefaultTable("brondocument")}));
  87.     }
  88.     /* cleanup rsgb, doet:

  89.      DELETE FROM herkomst_metadata;
  90.      ...
  91.      DELETE FROM subject;
  92.     dus omgekeerde volgorde tov. onderstaande array
  93.      */
  94.     DatabaseOperation.DELETE_ALL.execute(
  95.         rsgb,
  96.         new DefaultDataSet(
  97.             new DefaultTable[] {
  98.               new DefaultTable("subject"),
  99.               new DefaultTable("prs"),
  100.               new DefaultTable("nat_prs"),
  101.               new DefaultTable("ingeschr_nat_prs"),
  102.               new DefaultTable("niet_ingezetene"),
  103.               new DefaultTable("ander_nat_prs"),
  104.               new DefaultTable("niet_nat_prs"),
  105.               new DefaultTable("ingeschr_niet_nat_prs"),
  106.               new DefaultTable("ouder_kind_rel"),
  107.               new DefaultTable("huw_ger_partn"),
  108.               new DefaultTable("herkomst_metadata")
  109.             }));
  110.   }

  111.   /**
  112.    * ruimt personen en kvk tabellen op.
  113.    *
  114.    * @param rsgb database welke opgeruimd moet worden
  115.    * @throws DatabaseUnitException als er een DBunit fout optreedt
  116.    * @throws SQLException als er iets misgaat in de database
  117.    */
  118.   public static void cleanRSGB_NHR(final IDatabaseConnection rsgb)
  119.       throws DatabaseUnitException, SQLException {
  120.     cleanRSGB_NHR(rsgb, true);
  121.   }

  122.   /**
  123.    * ruimt personen en kvk tabellen op (en ook BRP tabellen).
  124.    *
  125.    * @param rsgb database welke opgeruimd moet worden
  126.    * @param deleteBrondocument {@code true} als brondocumenten ook verwijderd
  127.    * @throws DatabaseUnitException als er iets mis gaat met DBunit, bijv verkeerde volgorde van
  128.    *     verwijderen
  129.    * @throws SQLException als er iets mis gaat met uitvieren van de deletes
  130.    */
  131.   public static void cleanRSGB_NHR(final IDatabaseConnection rsgb, final boolean deleteBrondocument)
  132.       throws DatabaseUnitException, SQLException {

  133.     DatabaseOperation.DELETE_ALL.execute(
  134.         rsgb,
  135.         new DefaultDataSet(
  136.             new DefaultTable[] {
  137.               new DefaultTable("sbi_activiteit"),
  138.               new DefaultTable("functionaris"),
  139.               new DefaultTable("ondrnmng"),
  140.               new DefaultTable("maatschapp_activiteit"),
  141.               new DefaultTable("vestg"),
  142.               new DefaultTable("vestg_activiteit"),
  143.               new DefaultTable("vestg_naam"),
  144.               new DefaultTable("ander_btnlnds_niet_nat_prs"),
  145.             }));
  146.     cleanRSGB_BRP(rsgb, deleteBrondocument);
  147.   }

  148.   /**
  149.    * ruimt WOZ en subject tabellen op (dus ook BRP tabellen).
  150.    *
  151.    * @param rsgb database welke opgeruimd moet worden
  152.    * @param deleteBrondocument {@code true} als alle brondocumenten ook verwijderd moeten worden
  153.    * @throws DatabaseUnitException als er iets mis gaat met DBunit, bijv verkeerde volgorde van
  154.    *     verwijderen
  155.    * @throws SQLException als er iets mis gaat met uitvieren van de deletes
  156.    */
  157.   public static void cleanRSGB_WOZ(final IDatabaseConnection rsgb, final boolean deleteBrondocument)
  158.       throws DatabaseUnitException, SQLException {

  159.     DatabaseOperation.DELETE_ALL.execute(
  160.         rsgb,
  161.         new DefaultDataSet(
  162.             new DefaultTable[] {
  163.               new DefaultTable("woz_obj"),
  164.               new DefaultTable("woz_deelobj"),
  165.               new DefaultTable("woz_waarde"),
  166.               new DefaultTable("woz_omvat"),
  167.               new DefaultTable("woz_belang"),
  168.               new DefaultTable("woz_deelobj_archief"),
  169.               new DefaultTable("woz_obj_archief"),
  170.               new DefaultTable("woz_waarde_archief"),
  171.               new DefaultTable("locaand_adres"),
  172.               new DefaultTable("locaand_openb_rmte"),
  173.             }));
  174.     // WOZ bevat ook vestigingen, NHR leegt ook BRP
  175.     cleanRSGB_NHR(rsgb, deleteBrondocument);
  176.   }

  177.   /**
  178.    * leegt de bericht, laadproces en job tabellen en de automatsiche processen in het staging
  179.    * schema. kan worden gebruikt in een {@code @After} van een test case.
  180.    *
  181.    * @param staging database welke geleegd moet worden
  182.    * @param includeProcessen {@code true} als alle automatische processen ook verwijderd moeten
  183.    *     worden
  184.    * @throws org.dbunit.DatabaseUnitException als er een DBunit fout optreedt
  185.    * @throws java.sql.SQLException als er iets misgaat in de database
  186.    */
  187.   public static void cleanSTAGING(final IDatabaseConnection staging, final boolean includeProcessen)
  188.       throws DatabaseUnitException, SQLException {
  189.     if (includeProcessen) {
  190.       DatabaseOperation.DELETE_ALL.execute(
  191.           staging,
  192.           new DefaultDataSet(
  193.               new DefaultTable[] {
  194.                 new DefaultTable("automatisch_proces"),
  195.                 new DefaultTable("automatisch_proces_config")
  196.               }));
  197.     }
  198.     DatabaseOperation.DELETE_ALL.execute(
  199.         staging,
  200.         new DefaultDataSet(
  201.             new DefaultTable[] {
  202.               new DefaultTable("laadproces"), new DefaultTable("bericht"), new DefaultTable("job")
  203.             }));
  204.   }
  205. }