Java tutorial
/** * Copyright 2013 Ordina * * 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 nl.ordina.bag.etl.dao; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Timestamp; import java.sql.Types; import java.util.ArrayList; import java.util.List; import nl.kadaster.schemas.imbag.imbag_types.v20090901.TypeAdresseerbaarObject; import nl.ordina.bag.etl.Constants.BAGObjectType; import nl.ordina.bag.etl.model.BAGAdresseerbaarObject; import nl.ordina.bag.etl.model.Gebruiksdoel; import nl.ordina.bag.etl.model.GerelateerdPand; import nl.ordina.bag.etl.model.Ligplaats; import nl.ordina.bag.etl.model.NevenAdres; import nl.ordina.bag.etl.model.Nummeraanduiding; import nl.ordina.bag.etl.model.OpenbareRuimte; import nl.ordina.bag.etl.model.Pand; import nl.ordina.bag.etl.model.Standplaats; import nl.ordina.bag.etl.model.Verblijfsobject; import nl.ordina.bag.etl.model.Woonplaats; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.PreparedStatementCreator; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.TransactionCallbackWithoutResult; import org.springframework.transaction.support.TransactionTemplate; public abstract class AbstractBAGDAO implements BAGDAO { protected transient Log logger = LogFactory.getLog(this.getClass()); protected TransactionTemplate transactionTemplate; protected JdbcTemplate jdbcTemplate; public AbstractBAGDAO(TransactionTemplate transactionTemplate, JdbcTemplate jdbcTemplate) { this.transactionTemplate = transactionTemplate; this.jdbcTemplate = jdbcTemplate; } @Override public long getCount(BAGObjectType bagObjectType) { try { if (BAGObjectType.WOONPLAATS.equals(bagObjectType)) return jdbcTemplate.queryForLong("select count(*) from bag_woonplaats"); if (BAGObjectType.OPENBARE_RUIMTE.equals(bagObjectType)) return jdbcTemplate.queryForLong("select count(*) from bag_openbare_ruimte"); if (BAGObjectType.NUMMERAANDUIDING.equals(bagObjectType)) return jdbcTemplate.queryForLong("select count(*) from bag_nummeraanduiding"); if (BAGObjectType.PAND.equals(bagObjectType)) return jdbcTemplate.queryForLong("select count(*) from bag_pand"); if (BAGObjectType.VERBLIJFSOBJECT.equals(bagObjectType)) return jdbcTemplate.queryForLong("select count(*) from bag_verblijfsobject"); if (BAGObjectType.LIGPLAATS.equals(bagObjectType)) return jdbcTemplate.queryForLong("select count(*) from bag_ligplaats"); if (BAGObjectType.STANDPLAATS.equals(bagObjectType)) return jdbcTemplate.queryForLong("select count(*) from bag_standplaats"); return 0; } catch (DataAccessException e) { throw new DAOException(e); } } @Override public boolean exists(Woonplaats woonplaats) { try { return jdbcTemplate.queryForInt( "select count(bag_woonplaats_id)" + " from bag_woonplaats" + " where bag_woonplaats_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?", woonplaats.getIdentificatie(), woonplaats.getAanduidingRecordCorrectie(), woonplaats.getBegindatumTijdvakGeldigheid()) > 0; } catch (DataAccessException e) { throw new DAOException(e); } } @Override public boolean exists(OpenbareRuimte openbareRuimte) { try { return jdbcTemplate.queryForInt( "select count(bag_openbare_ruimte_id)" + " from bag_openbare_ruimte" + " where bag_openbare_ruimte_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?", openbareRuimte.getIdentificatie(), openbareRuimte.getAanduidingRecordCorrectie(), openbareRuimte.getBegindatumTijdvakGeldigheid()) > 0; } catch (DataAccessException e) { throw new DAOException(e); } } @Override public boolean exists(Nummeraanduiding nummeraanduiding) { try { return jdbcTemplate.queryForInt( "select count(bag_nummeraanduiding_id)" + " from bag_nummeraanduiding" + " where bag_nummeraanduiding_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?", nummeraanduiding.getIdentificatie(), nummeraanduiding.getAanduidingRecordCorrectie(), nummeraanduiding.getBegindatumTijdvakGeldigheid()) > 0; } catch (DataAccessException e) { throw new DAOException(e); } } @Override public boolean exists(Pand pand) { try { return jdbcTemplate.queryForInt( "select count(bag_pand_id)" + " from bag_pand" + " where bag_pand_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?", pand.getIdentificatie(), pand.getAanduidingRecordCorrectie(), pand.getBegindatumTijdvakGeldigheid()) > 0; } catch (DataAccessException e) { throw new DAOException(e); } } @Override public boolean exists(Verblijfsobject verblijfsobject) { try { return jdbcTemplate.queryForInt( "select count(bag_verblijfsobject_id)" + " from bag_verblijfsobject" + " where bag_verblijfsobject_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?", verblijfsobject.getIdentificatie(), verblijfsobject.getAanduidingRecordCorrectie(), verblijfsobject.getBegindatumTijdvakGeldigheid()) > 0; } catch (DataAccessException e) { throw new DAOException(e); } } @Override public boolean exists(Ligplaats ligplaats) { try { return jdbcTemplate.queryForInt( "select count(bag_ligplaats_id)" + " from bag_ligplaats" + " where bag_ligplaats_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?", ligplaats.getIdentificatie(), ligplaats.getAanduidingRecordCorrectie(), ligplaats.getBegindatumTijdvakGeldigheid()) > 0; } catch (DataAccessException e) { throw new DAOException(e); } } @Override public boolean exists(Standplaats standplaats) { try { return jdbcTemplate.queryForInt( "select count(bag_standplaats_id)" + " from bag_standplaats" + " where bag_standplaats_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?", standplaats.getIdentificatie(), standplaats.getAanduidingRecordCorrectie(), standplaats.getBegindatumTijdvakGeldigheid()) > 0; } catch (DataAccessException e) { throw new DAOException(e); } } @Override public void insert(final Woonplaats woonplaats) throws DAOException { try { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("insert into bag_woonplaats (" + "bag_woonplaats_id," + "aanduiding_record_inactief," + "aanduiding_record_correctie," + "woonplaats_naam," + "woonplaats_geometrie," + "officieel," + "begindatum_tijdvak_geldigheid," + "einddatum_tijdvak_geldigheid," + "in_onderzoek," + "bron_documentdatum," + "bron_documentnummer," + "woonplaats_status" + ") values (?,?,?,?,?,?,?,?,?,?,?,?)"); ps.setLong(1, woonplaats.getIdentificatie()); ps.setInt(2, woonplaats.getAanduidingRecordInactief().ordinal()); ps.setLong(3, woonplaats.getAanduidingRecordCorrectie()); ps.setString(4, woonplaats.getWoonplaatsNaam()); ps.setString(5, woonplaats.getWoonplaatsGeometrie()); ps.setInt(6, woonplaats.getOfficieel().ordinal()); ps.setTimestamp(7, new Timestamp(woonplaats.getBegindatumTijdvakGeldigheid().getTime())); if (woonplaats.getEinddatumTijdvakGeldigheid() == null) ps.setNull(8, Types.TIMESTAMP); else ps.setTimestamp(8, new Timestamp(woonplaats.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(9, woonplaats.getInOnderzoek().ordinal()); ps.setDate(10, new Date(woonplaats.getDocumentdatum().getTime())); ps.setString(11, woonplaats.getDocumentnummer()); ps.setInt(12, woonplaats.getWoonplaatsStatus().ordinal()); return ps; } }); } catch (DataAccessException e) { throw new DAOException("Error inserting woonplaats: " + woonplaats.getIdentificatie(), e); } } @Override public void insert(final OpenbareRuimte openbareRuimte) throws DAOException { try { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("insert into bag_openbare_ruimte (" + "bag_openbare_ruimte_id," + "aanduiding_record_inactief," + "aanduiding_record_correctie," + "openbare_ruimte_naam," + "officieel," + "begindatum_tijdvak_geldigheid," + "einddatum_tijdvak_geldigheid," + "in_onderzoek," + "openbare_ruimte_type," + "bron_documentdatum," + "bron_documentnummer," + "openbareruimte_status," + "bag_woonplaats_id," + "verkorte_openbare_ruimte_naam" + ") values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); ps.setLong(1, openbareRuimte.getIdentificatie()); ps.setInt(2, openbareRuimte.getAanduidingRecordInactief().ordinal()); ps.setLong(3, openbareRuimte.getAanduidingRecordCorrectie()); ps.setString(4, openbareRuimte.getOpenbareRuimteNaam()); ps.setInt(5, openbareRuimte.getOfficieel().ordinal()); ps.setTimestamp(6, new Timestamp(openbareRuimte.getBegindatumTijdvakGeldigheid().getTime())); if (openbareRuimte.getEinddatumTijdvakGeldigheid() == null) ps.setNull(7, Types.TIMESTAMP); else ps.setTimestamp(7, new Timestamp(openbareRuimte.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(8, openbareRuimte.getInOnderzoek().ordinal()); ps.setInt(9, openbareRuimte.getOpenbareRuimteType().ordinal()); ps.setDate(10, new Date(openbareRuimte.getDocumentdatum().getTime())); ps.setString(11, openbareRuimte.getDocumentnummer()); ps.setInt(12, openbareRuimte.getOpenbareruimteStatus().ordinal()); ps.setLong(13, openbareRuimte.getGerelateerdeWoonplaats()); ps.setString(14, openbareRuimte.getVerkorteOpenbareRuimteNaam()); return ps; } }); } catch (DataAccessException e) { throw new DAOException("Error inserting openbare ruimte: " + openbareRuimte.getIdentificatie(), e); } } @Override public void insert(final Nummeraanduiding nummeraanduiding) throws DAOException { try { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection .prepareStatement("insert into bag_nummeraanduiding (" + "bag_nummeraanduiding_id," + "aanduiding_record_inactief," + "aanduiding_record_correctie," + "huisnummer," + "officieel," + "huisletter," + "huisnummertoevoeging," + "postcode," + "begindatum_tijdvak_geldigheid," + "einddatum_tijdvak_geldigheid," + "in_onderzoek," + "type_adresseerbaar_object," + "bron_documentdatum," + "bron_documentnummer," + "nummeraanduiding_status," + "bag_woonplaats_id," + "bag_openbare_ruimte_id" + ") values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); ps.setLong(1, nummeraanduiding.getIdentificatie()); ps.setInt(2, nummeraanduiding.getAanduidingRecordInactief().ordinal()); ps.setLong(3, nummeraanduiding.getAanduidingRecordCorrectie()); ps.setInt(4, nummeraanduiding.getHuisnummer()); ps.setInt(5, nummeraanduiding.getOfficieel().ordinal()); if (nummeraanduiding.getHuisletter() == null) ps.setNull(6, Types.VARCHAR); else ps.setString(6, nummeraanduiding.getHuisletter()); if (nummeraanduiding.getHuisnummertoevoeging() == null) ps.setNull(7, Types.VARCHAR); else ps.setString(7, nummeraanduiding.getHuisnummertoevoeging()); if (nummeraanduiding.getPostcode() == null) ps.setNull(8, Types.VARCHAR); else ps.setString(8, nummeraanduiding.getPostcode()); ps.setTimestamp(9, new Timestamp(nummeraanduiding.getBegindatumTijdvakGeldigheid().getTime())); if (nummeraanduiding.getEinddatumTijdvakGeldigheid() == null) ps.setNull(10, Types.TIMESTAMP); else ps.setTimestamp(10, new Timestamp(nummeraanduiding.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(11, nummeraanduiding.getInOnderzoek().ordinal()); ps.setInt(12, nummeraanduiding.getTypeAdresseerbaarObject().ordinal()); ps.setDate(13, new Date(nummeraanduiding.getDocumentdatum().getTime())); ps.setString(14, nummeraanduiding.getDocumentnummer()); ps.setInt(15, nummeraanduiding.getNummeraanduidingStatus().ordinal()); if (nummeraanduiding.getGerelateerdeWoonplaats() == null) ps.setNull(16, Types.INTEGER); else ps.setLong(16, nummeraanduiding.getGerelateerdeWoonplaats()); ps.setLong(17, nummeraanduiding.getGerelateerdeOpenbareRuimte()); return ps; } }); } catch (DataAccessException e) { throw new DAOException("Error inserting nummeraanduiding: " + nummeraanduiding.getIdentificatie(), e); } } @Override public void insert(final Pand pand) throws DAOException { try { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("insert into bag_pand (" + "bag_pand_id," + "aanduiding_record_inactief," + "aanduiding_record_correctie," + "officieel," + "pand_geometrie," + "bouwjaar," + "pand_status," + "begindatum_tijdvak_geldigheid," + "einddatum_tijdvak_geldigheid," + "in_onderzoek," + "bron_documentdatum," + "bron_documentnummer" + ") values (?,?,?,?,?,?,?,?,?,?,?,?)"); ps.setLong(1, pand.getIdentificatie()); ps.setInt(2, pand.getAanduidingRecordInactief().ordinal()); ps.setLong(3, pand.getAanduidingRecordCorrectie()); ps.setInt(4, pand.getOfficieel().ordinal()); ps.setString(5, pand.getPandGeometrie()); ps.setInt(6, pand.getBouwjaar()); ps.setString(7, pand.getPandStatus()); ps.setTimestamp(8, new Timestamp(pand.getBegindatumTijdvakGeldigheid().getTime())); if (pand.getEinddatumTijdvakGeldigheid() == null) ps.setNull(9, Types.TIMESTAMP); else ps.setTimestamp(9, new Timestamp(pand.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(10, pand.getInOnderzoek().ordinal()); ps.setDate(11, new Date(pand.getDocumentdatum().getTime())); ps.setString(12, pand.getDocumentnummer()); return ps; } }); } catch (DataAccessException e) { throw new DAOException("Error inserting pand: " + pand.getIdentificatie(), e); } } @Override public void insert(final Verblijfsobject verblijfsobject) throws DAOException { try { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("insert into bag_verblijfsobject (" + "bag_verblijfsobject_id," + "aanduiding_record_inactief," + "aanduiding_record_correctie," + "officieel," + "verblijfsobject_geometrie," + "oppervlakte_verblijfsobject," + "verblijfsobject_status," + "begindatum_tijdvak_geldigheid," + "einddatum_tijdvak_geldigheid," + "in_onderzoek," + "bron_documentdatum," + "bron_documentnummer," + "bag_nummeraanduiding_id" + ") values (?,?,?,?,?,?,?,?,?,?,?,?,?)"); ps.setLong(1, verblijfsobject.getIdentificatie()); ps.setInt(2, verblijfsobject.getAanduidingRecordInactief().ordinal()); ps.setLong(3, verblijfsobject.getAanduidingRecordCorrectie()); ps.setInt(4, verblijfsobject.getOfficieel().ordinal()); ps.setString(5, verblijfsobject.getVerblijfsobjectGeometrie()); ps.setInt(6, verblijfsobject.getOppervlakteVerblijfsobject()); ps.setInt(7, verblijfsobject.getVerblijfsobjectStatus().ordinal()); ps.setTimestamp(8, new Timestamp(verblijfsobject.getBegindatumTijdvakGeldigheid().getTime())); if (verblijfsobject.getEinddatumTijdvakGeldigheid() == null) ps.setNull(9, Types.TIMESTAMP); else ps.setTimestamp(9, new Timestamp(verblijfsobject.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(10, verblijfsobject.getInOnderzoek().ordinal()); ps.setDate(11, new Date(verblijfsobject.getDocumentdatum().getTime())); ps.setString(12, verblijfsobject.getDocumentnummer()); ps.setLong(13, verblijfsobject.getHoofdAdres()); return ps; } }); insertGebruikersdoelen(verblijfsobject); insertNevenadressen(TypeAdresseerbaarObject.VERBLIJFSOBJECT, verblijfsobject); insertGerelateerdePanden(verblijfsobject); } }); } catch (DataAccessException e) { throw new DAOException("Error inserting verblijfsobject: " + verblijfsobject.getIdentificatie(), e); } } @Override public void insert(final Ligplaats ligplaats) throws DAOException { try { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection .prepareStatement("insert into bag_ligplaats (" + "bag_ligplaats_id," + "aanduiding_record_inactief," + "aanduiding_record_correctie," + "officieel," + "ligplaats_status," + "ligplaats_geometrie," + "begindatum_tijdvak_geldigheid," + "einddatum_tijdvak_geldigheid," + "in_onderzoek," + "bron_documentdatum," + "bron_documentnummer," + "bag_nummeraanduiding_id" + ") values (?,?,?,?,?,?,?,?,?,?,?,?)"); ps.setLong(1, ligplaats.getIdentificatie()); ps.setInt(2, ligplaats.getAanduidingRecordInactief().ordinal()); ps.setLong(3, ligplaats.getAanduidingRecordCorrectie()); ps.setInt(4, ligplaats.getOfficieel().ordinal()); ps.setInt(5, ligplaats.getLigplaatsStatus().ordinal()); ps.setString(6, ligplaats.getLigplaatsGeometrie()); ps.setTimestamp(7, new Timestamp(ligplaats.getBegindatumTijdvakGeldigheid().getTime())); if (ligplaats.getEinddatumTijdvakGeldigheid() == null) ps.setNull(8, Types.TIMESTAMP); else ps.setTimestamp(8, new Timestamp(ligplaats.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(9, ligplaats.getInOnderzoek().ordinal()); ps.setDate(10, new Date(ligplaats.getDocumentdatum().getTime())); ps.setString(11, ligplaats.getDocumentnummer()); ps.setLong(12, ligplaats.getHoofdAdres()); return ps; } }); insertNevenadressen(TypeAdresseerbaarObject.LIGPLAATS, ligplaats); } }); } catch (DataAccessException e) { throw new DAOException("Error inserting ligplaats: " + ligplaats.getIdentificatie(), e); } } @Override public void insert(final Standplaats standplaats) throws DAOException { try { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection .prepareStatement("insert into bag_standplaats (" + "bag_standplaats_id," + "aanduiding_record_inactief," + "aanduiding_record_correctie," + "officieel," + "standplaats_status," + "standplaats_geometrie," + "begindatum_tijdvak_geldigheid," + "einddatum_tijdvak_geldigheid," + "in_onderzoek," + "bron_documentdatum," + "bron_documentnummer," + "bag_nummeraanduiding_id" + ") values (?,?,?,?,?,?,?,?,?,?,?,?)"); ps.setLong(1, standplaats.getIdentificatie()); ps.setInt(2, standplaats.getAanduidingRecordInactief().ordinal()); ps.setLong(3, standplaats.getAanduidingRecordCorrectie()); ps.setInt(4, standplaats.getOfficieel().ordinal()); ps.setInt(5, standplaats.getStandplaatsStatus().ordinal()); ps.setString(6, standplaats.getStandplaatsGeometrie()); ps.setTimestamp(7, new Timestamp(standplaats.getBegindatumTijdvakGeldigheid().getTime())); if (standplaats.getEinddatumTijdvakGeldigheid() == null) ps.setNull(8, Types.TIMESTAMP); else ps.setTimestamp(8, new Timestamp(standplaats.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(9, standplaats.getInOnderzoek().ordinal()); ps.setDate(10, new Date(standplaats.getDocumentdatum().getTime())); ps.setString(11, standplaats.getDocumentnummer()); ps.setLong(12, standplaats.getHoofdAdres()); return ps; } }); insertNevenadressen(TypeAdresseerbaarObject.STANDPLAATS, standplaats); } }); } catch (DataAccessException e) { throw new DAOException("Error inserting standplaats: " + standplaats.getIdentificatie(), e); } } @Override public void insertWoonplaatsen(final List<Woonplaats> woonplaatsen) throws DAOException { try { jdbcTemplate.batchUpdate("insert into bag_woonplaats (" + "bag_woonplaats_id," + "aanduiding_record_inactief," + "aanduiding_record_correctie," + "woonplaats_naam," + "woonplaats_geometrie," + "officieel," + "begindatum_tijdvak_geldigheid," + "einddatum_tijdvak_geldigheid," + "in_onderzoek," + "bron_documentdatum," + "bron_documentnummer," + "woonplaats_status" + ") values (?,?,?,?,?,?,?,?,?,?,?,?)", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setLong(1, woonplaatsen.get(i).getIdentificatie()); ps.setInt(2, woonplaatsen.get(i).getAanduidingRecordInactief().ordinal()); ps.setLong(3, woonplaatsen.get(i).getAanduidingRecordCorrectie()); ps.setString(4, woonplaatsen.get(i).getWoonplaatsNaam()); ps.setString(5, woonplaatsen.get(i).getWoonplaatsGeometrie()); ps.setInt(6, woonplaatsen.get(i).getOfficieel().ordinal()); ps.setTimestamp(7, new Timestamp(woonplaatsen.get(i).getBegindatumTijdvakGeldigheid().getTime())); if (woonplaatsen.get(i).getEinddatumTijdvakGeldigheid() == null) ps.setNull(8, Types.TIMESTAMP); else ps.setTimestamp(8, new Timestamp( woonplaatsen.get(i).getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(9, woonplaatsen.get(i).getInOnderzoek().ordinal()); ps.setDate(10, new Date(woonplaatsen.get(i).getDocumentdatum().getTime())); ps.setString(11, woonplaatsen.get(i).getDocumentnummer()); ps.setInt(12, woonplaatsen.get(i).getWoonplaatsStatus().ordinal()); } @Override public int getBatchSize() { return woonplaatsen.size(); } }); } catch (DataAccessException e) { throw new DAOException("Error inserting woonplaatsen", e); } } @Override public void insertOpenbareRuimten(final List<OpenbareRuimte> openbareRuimten) throws DAOException { try { jdbcTemplate.batchUpdate("insert into bag_openbare_ruimte (" + "bag_openbare_ruimte_id," + "aanduiding_record_inactief," + "aanduiding_record_correctie," + "openbare_ruimte_naam," + "officieel," + "begindatum_tijdvak_geldigheid," + "einddatum_tijdvak_geldigheid," + "in_onderzoek," + "openbare_ruimte_type," + "bron_documentdatum," + "bron_documentnummer," + "openbareruimte_status," + "bag_woonplaats_id," + "verkorte_openbare_ruimte_naam" + ") values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setLong(1, openbareRuimten.get(i).getIdentificatie()); ps.setInt(2, openbareRuimten.get(i).getAanduidingRecordInactief().ordinal()); ps.setLong(3, openbareRuimten.get(i).getAanduidingRecordCorrectie()); ps.setString(4, openbareRuimten.get(i).getOpenbareRuimteNaam()); ps.setInt(5, openbareRuimten.get(i).getOfficieel().ordinal()); ps.setTimestamp(6, new Timestamp( openbareRuimten.get(i).getBegindatumTijdvakGeldigheid().getTime())); if (openbareRuimten.get(i).getEinddatumTijdvakGeldigheid() == null) ps.setNull(7, Types.TIMESTAMP); else ps.setTimestamp(7, new Timestamp( openbareRuimten.get(i).getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(8, openbareRuimten.get(i).getInOnderzoek().ordinal()); ps.setInt(9, openbareRuimten.get(i).getOpenbareRuimteType().ordinal()); ps.setDate(10, new Date(openbareRuimten.get(i).getDocumentdatum().getTime())); ps.setString(11, openbareRuimten.get(i).getDocumentnummer()); ps.setInt(12, openbareRuimten.get(i).getOpenbareruimteStatus().ordinal()); ps.setLong(13, openbareRuimten.get(i).getGerelateerdeWoonplaats()); ps.setString(14, openbareRuimten.get(i).getVerkorteOpenbareRuimteNaam()); } @Override public int getBatchSize() { return openbareRuimten.size(); } }); } catch (DataAccessException e) { throw new DAOException("Error inserting openbare ruimten", e); } } @Override public void insertNummeraanduidingen(final List<Nummeraanduiding> nummeraanduidingen) throws DAOException { try { jdbcTemplate.batchUpdate("insert into bag_nummeraanduiding (" + "bag_nummeraanduiding_id," + "aanduiding_record_inactief," + "aanduiding_record_correctie," + "huisnummer," + "officieel," + "huisletter," + "huisnummertoevoeging," + "postcode," + "begindatum_tijdvak_geldigheid," + "einddatum_tijdvak_geldigheid," + "in_onderzoek," + "type_adresseerbaar_object," + "bron_documentdatum," + "bron_documentnummer," + "nummeraanduiding_status," + "bag_woonplaats_id," + "bag_openbare_ruimte_id" + ") values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setLong(1, nummeraanduidingen.get(i).getIdentificatie()); ps.setInt(2, nummeraanduidingen.get(i).getAanduidingRecordInactief().ordinal()); ps.setLong(3, nummeraanduidingen.get(i).getAanduidingRecordCorrectie()); ps.setInt(4, nummeraanduidingen.get(i).getHuisnummer()); ps.setInt(5, nummeraanduidingen.get(i).getOfficieel().ordinal()); if (nummeraanduidingen.get(i).getHuisletter() == null) ps.setNull(6, Types.VARCHAR); else ps.setString(6, nummeraanduidingen.get(i).getHuisletter()); if (nummeraanduidingen.get(i).getHuisnummertoevoeging() == null) ps.setNull(7, Types.VARCHAR); else ps.setString(7, nummeraanduidingen.get(i).getHuisnummertoevoeging()); if (nummeraanduidingen.get(i).getPostcode() == null) ps.setNull(8, Types.VARCHAR); else ps.setString(8, nummeraanduidingen.get(i).getPostcode()); ps.setTimestamp(9, new Timestamp( nummeraanduidingen.get(i).getBegindatumTijdvakGeldigheid().getTime())); if (nummeraanduidingen.get(i).getEinddatumTijdvakGeldigheid() == null) ps.setNull(10, Types.TIMESTAMP); else ps.setTimestamp(10, new Timestamp( nummeraanduidingen.get(i).getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(11, nummeraanduidingen.get(i).getInOnderzoek().ordinal()); ps.setInt(12, nummeraanduidingen.get(i).getTypeAdresseerbaarObject().ordinal()); ps.setDate(13, new Date(nummeraanduidingen.get(i).getDocumentdatum().getTime())); ps.setString(14, nummeraanduidingen.get(i).getDocumentnummer()); ps.setInt(15, nummeraanduidingen.get(i).getNummeraanduidingStatus().ordinal()); if (nummeraanduidingen.get(i).getGerelateerdeWoonplaats() == null) ps.setNull(16, Types.INTEGER); else ps.setLong(16, nummeraanduidingen.get(i).getGerelateerdeWoonplaats()); ps.setLong(17, nummeraanduidingen.get(i).getGerelateerdeOpenbareRuimte()); } @Override public int getBatchSize() { return nummeraanduidingen.size(); } }); } catch (DataAccessException e) { throw new DAOException("Error inserting nummeraanduidingen", e); } } @Override public void insertPanden(final List<Pand> panden) throws DAOException { try { jdbcTemplate.batchUpdate("insert into bag_pand (" + "bag_pand_id," + "aanduiding_record_inactief," + "aanduiding_record_correctie," + "officieel," + "pand_geometrie," + "bouwjaar," + "pand_status," + "begindatum_tijdvak_geldigheid," + "einddatum_tijdvak_geldigheid," + "in_onderzoek," + "bron_documentdatum," + "bron_documentnummer" + ") values (?,?,?,?,?,?,?,?,?,?,?,?)", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setLong(1, panden.get(i).getIdentificatie()); ps.setInt(2, panden.get(i).getAanduidingRecordInactief().ordinal()); ps.setLong(3, panden.get(i).getAanduidingRecordCorrectie()); ps.setInt(4, panden.get(i).getOfficieel().ordinal()); ps.setString(5, panden.get(i).getPandGeometrie()); ps.setInt(6, panden.get(i).getBouwjaar()); ps.setString(7, panden.get(i).getPandStatus()); ps.setTimestamp(8, new Timestamp(panden.get(i).getBegindatumTijdvakGeldigheid().getTime())); if (panden.get(i).getEinddatumTijdvakGeldigheid() == null) ps.setNull(9, Types.TIMESTAMP); else ps.setTimestamp(9, new Timestamp(panden.get(i).getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(10, panden.get(i).getInOnderzoek().ordinal()); ps.setDate(11, new Date(panden.get(i).getDocumentdatum().getTime())); ps.setString(12, panden.get(i).getDocumentnummer()); } @Override public int getBatchSize() { return panden.size(); } }); } catch (DataAccessException e) { throw new DAOException("Error inserting panden", e); } } @Override public void insertVerblijfsobjecten(final List<Verblijfsobject> verblijfsobjecten) throws DAOException { try { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { jdbcTemplate.batchUpdate("insert into bag_verblijfsobject (" + "bag_verblijfsobject_id," + "aanduiding_record_inactief," + "aanduiding_record_correctie," + "officieel," + "verblijfsobject_geometrie," + "oppervlakte_verblijfsobject," + "verblijfsobject_status," + "begindatum_tijdvak_geldigheid," + "einddatum_tijdvak_geldigheid," + "in_onderzoek," + "bron_documentdatum," + "bron_documentnummer," + "bag_nummeraanduiding_id" + ") values (?,?,?,?,?,?,?,?,?,?,?,?,?)", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setLong(1, verblijfsobjecten.get(i).getIdentificatie()); ps.setInt(2, verblijfsobjecten.get(i).getAanduidingRecordInactief().ordinal()); ps.setLong(3, verblijfsobjecten.get(i).getAanduidingRecordCorrectie()); ps.setInt(4, verblijfsobjecten.get(i).getOfficieel().ordinal()); ps.setString(5, verblijfsobjecten.get(i).getVerblijfsobjectGeometrie()); ps.setInt(6, verblijfsobjecten.get(i).getOppervlakteVerblijfsobject()); ps.setInt(7, verblijfsobjecten.get(i).getVerblijfsobjectStatus().ordinal()); ps.setTimestamp(8, new Timestamp( verblijfsobjecten.get(i).getBegindatumTijdvakGeldigheid().getTime())); if (verblijfsobjecten.get(i).getEinddatumTijdvakGeldigheid() == null) ps.setNull(9, Types.TIMESTAMP); else ps.setTimestamp(9, new Timestamp(verblijfsobjecten.get(i) .getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(10, verblijfsobjecten.get(i).getInOnderzoek().ordinal()); ps.setDate(11, new Date(verblijfsobjecten.get(i).getDocumentdatum().getTime())); ps.setString(12, verblijfsobjecten.get(i).getDocumentnummer()); ps.setLong(13, verblijfsobjecten.get(i).getHoofdAdres()); } @Override public int getBatchSize() { return verblijfsobjecten.size(); } }); insertGebruikersdoelen(verblijfsobjecten); insertNevenadressen(TypeAdresseerbaarObject.VERBLIJFSOBJECT, verblijfsobjecten); insertGerelateerdePanden(verblijfsobjecten); } }); } catch (DataAccessException e) { throw new DAOException("Error inserting verblijfsobjecten", e); } } @Override public void insertLigplaatsen(final List<Ligplaats> ligplaatsen) throws DAOException { try { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { jdbcTemplate.batchUpdate("insert into bag_ligplaats (" + "bag_ligplaats_id," + "aanduiding_record_inactief," + "aanduiding_record_correctie," + "officieel," + "ligplaats_status," + "ligplaats_geometrie," + "begindatum_tijdvak_geldigheid," + "einddatum_tijdvak_geldigheid," + "in_onderzoek," + "bron_documentdatum," + "bron_documentnummer," + "bag_nummeraanduiding_id" + ") values (?,?,?,?,?,?,?,?,?,?,?,?)", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setLong(1, ligplaatsen.get(i).getIdentificatie()); ps.setInt(2, ligplaatsen.get(i).getAanduidingRecordInactief().ordinal()); ps.setLong(3, ligplaatsen.get(i).getAanduidingRecordCorrectie()); ps.setInt(4, ligplaatsen.get(i).getOfficieel().ordinal()); ps.setInt(5, ligplaatsen.get(i).getLigplaatsStatus().ordinal()); ps.setString(6, ligplaatsen.get(i).getLigplaatsGeometrie()); ps.setTimestamp(7, new Timestamp( ligplaatsen.get(i).getBegindatumTijdvakGeldigheid().getTime())); if (ligplaatsen.get(i).getEinddatumTijdvakGeldigheid() == null) ps.setNull(8, Types.TIMESTAMP); else ps.setTimestamp(8, new Timestamp( ligplaatsen.get(i).getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(9, ligplaatsen.get(i).getInOnderzoek().ordinal()); ps.setDate(10, new Date(ligplaatsen.get(i).getDocumentdatum().getTime())); ps.setString(11, ligplaatsen.get(i).getDocumentnummer()); ps.setLong(12, ligplaatsen.get(i).getHoofdAdres()); } @Override public int getBatchSize() { return ligplaatsen.size(); } }); insertNevenadressen(TypeAdresseerbaarObject.LIGPLAATS, ligplaatsen); } }); } catch (DataAccessException e) { throw new DAOException("Error inserting ligplaatsen", e); } } @Override public void insertStandplaatsen(final List<Standplaats> standplaatsen) throws DAOException { try { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { jdbcTemplate.batchUpdate("insert into bag_standplaats (" + "bag_standplaats_id," + "aanduiding_record_inactief," + "aanduiding_record_correctie," + "officieel," + "standplaats_status," + "standplaats_geometrie," + "begindatum_tijdvak_geldigheid," + "einddatum_tijdvak_geldigheid," + "in_onderzoek," + "bron_documentdatum," + "bron_documentnummer," + "bag_nummeraanduiding_id" + ") values (?,?,?,?,?,?,?,?,?,?,?,?)", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setLong(1, standplaatsen.get(i).getIdentificatie()); ps.setInt(2, standplaatsen.get(i).getAanduidingRecordInactief().ordinal()); ps.setLong(3, standplaatsen.get(i).getAanduidingRecordCorrectie()); ps.setInt(4, standplaatsen.get(i).getOfficieel().ordinal()); ps.setInt(5, standplaatsen.get(i).getStandplaatsStatus().ordinal()); ps.setString(6, standplaatsen.get(i).getStandplaatsGeometrie()); ps.setTimestamp(7, new Timestamp( standplaatsen.get(i).getBegindatumTijdvakGeldigheid().getTime())); if (standplaatsen.get(i).getEinddatumTijdvakGeldigheid() == null) ps.setNull(8, Types.TIMESTAMP); else ps.setTimestamp(8, new Timestamp( standplaatsen.get(i).getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(9, standplaatsen.get(i).getInOnderzoek().ordinal()); ps.setDate(10, new Date(standplaatsen.get(i).getDocumentdatum().getTime())); ps.setString(11, standplaatsen.get(i).getDocumentnummer()); ps.setLong(12, standplaatsen.get(i).getHoofdAdres()); } @Override public int getBatchSize() { return standplaatsen.size(); } }); insertNevenadressen(TypeAdresseerbaarObject.STANDPLAATS, standplaatsen); } }); } catch (DataAccessException e) { throw new DAOException("Error inserting standplaatsen", e); } } @Override public void update(final Woonplaats woonplaats) throws DAOException { try { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("update bag_woonplaats set" + " aanduiding_record_inactief = ?," + " woonplaats_naam = ?," + " woonplaats_geometrie = ?," + " officieel = ?," + " einddatum_tijdvak_geldigheid = ?," + " in_onderzoek = ?," + " bron_documentdatum = ?," + " bron_documentnummer = ?," + " woonplaats_status = ?" + " where bag_woonplaats_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?"); ps.setInt(1, woonplaats.getAanduidingRecordInactief().ordinal()); ps.setString(2, woonplaats.getWoonplaatsNaam()); ps.setString(3, woonplaats.getWoonplaatsGeometrie()); ps.setInt(4, woonplaats.getOfficieel().ordinal()); if (woonplaats.getEinddatumTijdvakGeldigheid() == null) ps.setNull(5, Types.TIMESTAMP); else ps.setTimestamp(5, new Timestamp(woonplaats.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(6, woonplaats.getInOnderzoek().ordinal()); ps.setDate(7, new Date(woonplaats.getDocumentdatum().getTime())); ps.setString(8, woonplaats.getDocumentnummer()); ps.setInt(9, woonplaats.getWoonplaatsStatus().ordinal()); ps.setLong(10, woonplaats.getIdentificatie()); ps.setLong(11, woonplaats.getAanduidingRecordCorrectie()); ps.setTimestamp(12, new Timestamp(woonplaats.getBegindatumTijdvakGeldigheid().getTime())); return ps; } }); } catch (DataAccessException e) { throw new DAOException("Error updating woonplaats: " + woonplaats.getIdentificatie(), e); } } @Override public void update(final OpenbareRuimte openbareRuimte) throws DAOException { try { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("update bag_openbare_ruimte set" + " aanduiding_record_inactief = ?," + " openbare_ruimte_naam = ?," + " officieel = ?," + " einddatum_tijdvak_geldigheid = ?," + " in_onderzoek = ?," + " openbare_ruimte_type = ?," + " bron_documentdatum = ?," + " bron_documentnummer = ?," + " openbareruimte_status = ?," + " bag_woonplaats_id = ?," + " verkorte_openbare_ruimte_naam = ?" + " where bag_openbare_ruimte_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?"); ps.setInt(1, openbareRuimte.getAanduidingRecordInactief().ordinal()); ps.setString(2, openbareRuimte.getOpenbareRuimteNaam()); ps.setInt(3, openbareRuimte.getOfficieel().ordinal()); if (openbareRuimte.getEinddatumTijdvakGeldigheid() == null) ps.setNull(4, Types.TIMESTAMP); else ps.setTimestamp(4, new Timestamp(openbareRuimte.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(5, openbareRuimte.getInOnderzoek().ordinal()); ps.setInt(6, openbareRuimte.getOpenbareRuimteType().ordinal()); ps.setDate(7, new Date(openbareRuimte.getDocumentdatum().getTime())); ps.setString(8, openbareRuimte.getDocumentnummer()); ps.setInt(9, openbareRuimte.getOpenbareruimteStatus().ordinal()); ps.setLong(10, openbareRuimte.getGerelateerdeWoonplaats()); ps.setString(11, openbareRuimte.getVerkorteOpenbareRuimteNaam()); ps.setLong(12, openbareRuimte.getIdentificatie()); ps.setLong(13, openbareRuimte.getAanduidingRecordCorrectie()); ps.setTimestamp(14, new Timestamp(openbareRuimte.getBegindatumTijdvakGeldigheid().getTime())); return ps; } }); } catch (DataAccessException e) { throw new DAOException("Error updating openbare ruimte: " + openbareRuimte.getIdentificatie(), e); } } @Override public void update(final Nummeraanduiding nummeraanduiding) throws DAOException { try { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("update bag_nummeraanduiding set" + " aanduiding_record_inactief = ?," + " huisnummer = ?," + " officieel = ?," + " huisletter = ?," + " huisnummertoevoeging = ?," + " postcode = ?," + " einddatum_tijdvak_geldigheid = ?," + " in_onderzoek = ?," + " type_adresseerbaar_object = ?," + " bron_documentdatum = ?," + " bron_documentnummer = ?," + " nummeraanduiding_status = ?," + " bag_woonplaats_id = ?," + " bag_openbare_ruimte_id = ?" + " where bag_nummeraanduiding_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?"); ps.setInt(1, nummeraanduiding.getAanduidingRecordInactief().ordinal()); ps.setInt(2, nummeraanduiding.getHuisnummer()); ps.setInt(3, nummeraanduiding.getOfficieel().ordinal()); if (nummeraanduiding.getHuisletter() == null) ps.setNull(4, Types.INTEGER); else ps.setString(4, nummeraanduiding.getHuisletter()); if (nummeraanduiding.getHuisnummertoevoeging() == null) ps.setNull(5, Types.VARCHAR); else ps.setString(5, nummeraanduiding.getHuisnummertoevoeging()); if (nummeraanduiding.getPostcode() == null) ps.setNull(6, Types.VARCHAR); else ps.setString(6, nummeraanduiding.getPostcode()); if (nummeraanduiding.getEinddatumTijdvakGeldigheid() == null) ps.setNull(7, Types.TIMESTAMP); else ps.setTimestamp(7, new Timestamp(nummeraanduiding.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(8, nummeraanduiding.getInOnderzoek().ordinal()); ps.setInt(9, nummeraanduiding.getTypeAdresseerbaarObject().ordinal()); ps.setDate(10, new Date(nummeraanduiding.getDocumentdatum().getTime())); ps.setString(11, nummeraanduiding.getDocumentnummer()); ps.setInt(12, nummeraanduiding.getNummeraanduidingStatus().ordinal()); if (nummeraanduiding.getGerelateerdeWoonplaats() == null) ps.setNull(13, Types.INTEGER); else ps.setLong(13, nummeraanduiding.getGerelateerdeWoonplaats()); ps.setLong(14, nummeraanduiding.getGerelateerdeOpenbareRuimte()); ps.setLong(15, nummeraanduiding.getIdentificatie()); ps.setLong(16, nummeraanduiding.getAanduidingRecordCorrectie()); ps.setTimestamp(17, new Timestamp(nummeraanduiding.getBegindatumTijdvakGeldigheid().getTime())); return ps; } }); } catch (DataAccessException e) { throw new DAOException("Error updating nummeraanduiding: " + nummeraanduiding.getIdentificatie(), e); } } @Override public void update(final Pand pand) throws DAOException { try { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("update bag_pand set" + " aanduiding_record_inactief = ?," + " officieel = ?," + " pand_geometrie = ?," + " bouwjaar = ?," + " pand_status = ?," + " einddatum_tijdvak_geldigheid = ?," + " in_onderzoek = ?," + " bron_documentdatum = ?," + " bron_documentnummer = ?" + " where bag_pand_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?"); ps.setInt(1, pand.getAanduidingRecordInactief().ordinal()); ps.setInt(2, pand.getOfficieel().ordinal()); ps.setString(3, pand.getPandGeometrie()); ps.setInt(4, pand.getBouwjaar()); ps.setString(5, pand.getPandStatus()); if (pand.getEinddatumTijdvakGeldigheid() == null) ps.setNull(6, Types.TIMESTAMP); else ps.setTimestamp(6, new Timestamp(pand.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(7, pand.getInOnderzoek().ordinal()); ps.setDate(8, new Date(pand.getDocumentdatum().getTime())); ps.setString(9, pand.getDocumentnummer()); ps.setLong(10, pand.getIdentificatie()); ps.setLong(11, pand.getAanduidingRecordCorrectie()); ps.setTimestamp(12, new Timestamp(pand.getBegindatumTijdvakGeldigheid().getTime())); return ps; } }); } catch (DataAccessException e) { throw new DAOException("Error updating pand: " + pand.getIdentificatie(), e); } } @Override public void update(final Verblijfsobject verblijfsobject) throws DAOException { try { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("update bag_verblijfsobject set" + " aanduiding_record_inactief = ?," + " officieel = ?," + " verblijfsobject_geometrie = ?," + " oppervlakte_verblijfsobject = ?," + " verblijfsobject_status = ?," + " einddatum_tijdvak_geldigheid = ?," + " in_onderzoek = ?," + " bron_documentdatum = ?," + " bron_documentnummer = ?," + " bag_nummeraanduiding_id = ?" + " where bag_verblijfsobject_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?"); ps.setInt(1, verblijfsobject.getAanduidingRecordInactief().ordinal()); ps.setInt(2, verblijfsobject.getOfficieel().ordinal()); ps.setString(3, verblijfsobject.getVerblijfsobjectGeometrie()); ps.setInt(4, verblijfsobject.getOppervlakteVerblijfsobject()); ps.setInt(5, verblijfsobject.getVerblijfsobjectStatus().ordinal()); if (verblijfsobject.getEinddatumTijdvakGeldigheid() == null) ps.setNull(6, Types.TIMESTAMP); else ps.setTimestamp(6, new Timestamp(verblijfsobject.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(7, verblijfsobject.getInOnderzoek().ordinal()); ps.setDate(8, new Date(verblijfsobject.getDocumentdatum().getTime())); ps.setString(9, verblijfsobject.getDocumentnummer()); ps.setLong(10, verblijfsobject.getHoofdAdres()); ps.setLong(11, verblijfsobject.getIdentificatie()); ps.setLong(12, verblijfsobject.getAanduidingRecordCorrectie()); ps.setTimestamp(13, new Timestamp(verblijfsobject.getBegindatumTijdvakGeldigheid().getTime())); return ps; } }); deleteGebruikersdoelen(verblijfsobject); insertGebruikersdoelen(verblijfsobject); deleteNevenadressen(TypeAdresseerbaarObject.VERBLIJFSOBJECT, verblijfsobject); insertNevenadressen(TypeAdresseerbaarObject.VERBLIJFSOBJECT, verblijfsobject); deleteGerelateerdePanden(verblijfsobject); insertGerelateerdePanden(verblijfsobject); } }); } catch (DataAccessException e) { throw new DAOException("Error updating verblijfsobject: " + verblijfsobject.getIdentificatie(), e); } } @Override public void update(final Ligplaats ligplaats) throws DAOException { try { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement( "update bag_ligplaats set" + " aanduiding_record_inactief = ?," + " officieel = ?," + " ligplaats_status = ?," + " ligplaats_geometrie = ?," + " einddatum_tijdvak_geldigheid = ?," + " in_onderzoek = ?," + " bron_documentdatum = ?," + " bron_documentnummer = ?," + " bag_nummeraanduiding_id = ?" + " where bag_ligplaats_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?"); ps.setInt(1, ligplaats.getAanduidingRecordInactief().ordinal()); ps.setInt(2, ligplaats.getOfficieel().ordinal()); ps.setInt(3, ligplaats.getLigplaatsStatus().ordinal()); ps.setString(4, ligplaats.getLigplaatsGeometrie()); if (ligplaats.getEinddatumTijdvakGeldigheid() == null) ps.setNull(5, Types.TIMESTAMP); else ps.setTimestamp(5, new Timestamp(ligplaats.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(6, ligplaats.getInOnderzoek().ordinal()); ps.setDate(7, new Date(ligplaats.getDocumentdatum().getTime())); ps.setString(8, ligplaats.getDocumentnummer()); ps.setLong(9, ligplaats.getHoofdAdres()); ps.setLong(10, ligplaats.getIdentificatie()); ps.setLong(11, ligplaats.getAanduidingRecordCorrectie()); ps.setTimestamp(12, new Timestamp(ligplaats.getBegindatumTijdvakGeldigheid().getTime())); return ps; } }); deleteNevenadressen(TypeAdresseerbaarObject.LIGPLAATS, ligplaats); insertNevenadressen(TypeAdresseerbaarObject.LIGPLAATS, ligplaats); } }); } catch (DataAccessException e) { throw new DAOException("Error updating ligplaats: " + ligplaats.getIdentificatie(), e); } } @Override public void update(final Standplaats standplaats) throws DAOException { try { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("update bag_standplaats set" + " aanduiding_record_inactief = ?," + " officieel = ?," + " standplaats_status = ?," + " standplaats_geometrie = ?," + " einddatum_tijdvak_geldigheid = ?," + " in_onderzoek = ?," + " bron_documentdatum = ?," + " bron_documentnummer = ?," + " bag_nummeraanduiding_id = ?" + " where bag_standplaats_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?"); ps.setInt(1, standplaats.getAanduidingRecordInactief().ordinal()); ps.setInt(2, standplaats.getOfficieel().ordinal()); ps.setInt(3, standplaats.getStandplaatsStatus().ordinal()); ps.setString(4, standplaats.getStandplaatsGeometrie()); if (standplaats.getEinddatumTijdvakGeldigheid() == null) ps.setNull(5, Types.TIMESTAMP); else ps.setTimestamp(5, new Timestamp(standplaats.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(6, standplaats.getInOnderzoek().ordinal()); ps.setDate(7, new Date(standplaats.getDocumentdatum().getTime())); ps.setString(8, standplaats.getDocumentnummer()); ps.setLong(9, standplaats.getHoofdAdres()); ps.setLong(10, standplaats.getIdentificatie()); ps.setLong(11, standplaats.getAanduidingRecordCorrectie()); ps.setTimestamp(12, new Timestamp(standplaats.getBegindatumTijdvakGeldigheid().getTime())); return ps; } }); deleteNevenadressen(TypeAdresseerbaarObject.STANDPLAATS, standplaats); insertNevenadressen(TypeAdresseerbaarObject.STANDPLAATS, standplaats); } }); } catch (DataAccessException e) { throw new DAOException("Error updating standplaats: " + standplaats.getIdentificatie(), e); } } @Override public void update(final Woonplaats origineel, final Woonplaats wijziging) throws DAOException { try { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("update bag_woonplaats set" + " aanduiding_record_inactief = ?," + " aanduiding_record_correctie = ?," + " woonplaats_naam = ?," + " woonplaats_geometrie = ?," + " officieel = ?," + " einddatum_tijdvak_geldigheid = ?," + " in_onderzoek = ?," + " bron_documentdatum = ?," + " bron_documentnummer = ?," + " woonplaats_status = ?" + " where bag_woonplaats_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?"); ps.setInt(1, wijziging.getAanduidingRecordInactief().ordinal()); ps.setLong(2, wijziging.getAanduidingRecordCorrectie()); ps.setString(3, wijziging.getWoonplaatsNaam()); ps.setString(4, wijziging.getWoonplaatsGeometrie()); ps.setInt(5, wijziging.getOfficieel().ordinal()); if (wijziging.getEinddatumTijdvakGeldigheid() == null) ps.setNull(6, Types.TIMESTAMP); else ps.setTimestamp(6, new Timestamp(wijziging.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(7, wijziging.getInOnderzoek().ordinal()); ps.setDate(8, new Date(wijziging.getDocumentdatum().getTime())); ps.setString(9, wijziging.getDocumentnummer()); ps.setInt(10, wijziging.getWoonplaatsStatus().ordinal()); ps.setLong(11, origineel.getIdentificatie()); ps.setLong(12, origineel.getAanduidingRecordCorrectie()); ps.setTimestamp(13, new Timestamp(origineel.getBegindatumTijdvakGeldigheid().getTime())); return ps; } }); } catch (DataAccessException e) { throw new DAOException("Error updating woonplaats: " + origineel.getIdentificatie(), e); } } @Override public void update(final OpenbareRuimte origineel, final OpenbareRuimte mutation) throws DAOException { try { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("update bag_openbare_ruimte set" + " aanduiding_record_inactief = ?," + " aanduiding_record_correctie = ?," + " openbare_ruimte_naam = ?," + " officieel = ?," + " einddatum_tijdvak_geldigheid = ?," + " in_onderzoek = ?," + " openbare_ruimte_type = ?," + " bron_documentdatum = ?," + " bron_documentnummer = ?," + " openbareruimte_status = ?," + " bag_woonplaats_id = ?," + " verkorte_openbare_ruimte_naam = ?" + " where bag_openbare_ruimte_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?"); ps.setInt(1, mutation.getAanduidingRecordInactief().ordinal()); ps.setLong(2, mutation.getAanduidingRecordCorrectie()); ps.setString(3, mutation.getOpenbareRuimteNaam()); ps.setInt(4, mutation.getOfficieel().ordinal()); if (mutation.getEinddatumTijdvakGeldigheid() == null) ps.setNull(5, Types.TIMESTAMP); else ps.setTimestamp(5, new Timestamp(mutation.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(6, mutation.getInOnderzoek().ordinal()); ps.setInt(7, mutation.getOpenbareRuimteType().ordinal()); ps.setDate(8, new Date(mutation.getDocumentdatum().getTime())); ps.setString(9, mutation.getDocumentnummer()); ps.setInt(10, mutation.getOpenbareruimteStatus().ordinal()); ps.setLong(11, mutation.getGerelateerdeWoonplaats()); ps.setString(12, mutation.getVerkorteOpenbareRuimteNaam()); ps.setLong(13, origineel.getIdentificatie()); ps.setLong(14, origineel.getAanduidingRecordCorrectie()); ps.setTimestamp(15, new Timestamp(origineel.getBegindatumTijdvakGeldigheid().getTime())); return ps; } }); } catch (DataAccessException e) { throw new DAOException("Error updating openbare ruimte: " + origineel.getIdentificatie(), e); } } @Override public void update(final Nummeraanduiding origineel, final Nummeraanduiding mutation) throws DAOException { try { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("update bag_nummeraanduiding set" + " aanduiding_record_inactief = ?," + " aanduiding_record_correctie = ?," + " huisnummer = ?," + " officieel = ?," + " huisletter = ?," + " huisnummertoevoeging = ?," + " postcode = ?," + " einddatum_tijdvak_geldigheid = ?," + " in_onderzoek = ?," + " type_adresseerbaar_object = ?," + " bron_documentdatum = ?," + " bron_documentnummer = ?," + " nummeraanduiding_status = ?," + " bag_woonplaats_id = ?," + " bag_openbare_ruimte_id = ?" + " where bag_nummeraanduiding_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?"); ps.setInt(1, mutation.getAanduidingRecordInactief().ordinal()); ps.setLong(2, mutation.getAanduidingRecordCorrectie()); ps.setInt(3, mutation.getHuisnummer()); ps.setInt(4, mutation.getOfficieel().ordinal()); if (mutation.getHuisletter() == null) ps.setNull(5, Types.INTEGER); else ps.setString(5, mutation.getHuisletter()); if (mutation.getHuisnummertoevoeging() == null) ps.setNull(6, Types.VARCHAR); else ps.setString(6, mutation.getHuisnummertoevoeging()); if (mutation.getPostcode() == null) ps.setNull(7, Types.VARCHAR); else ps.setString(7, mutation.getPostcode()); if (mutation.getEinddatumTijdvakGeldigheid() == null) ps.setNull(8, Types.TIMESTAMP); else ps.setTimestamp(8, new Timestamp(mutation.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(9, mutation.getInOnderzoek().ordinal()); ps.setInt(10, mutation.getTypeAdresseerbaarObject().ordinal()); ps.setDate(11, new Date(mutation.getDocumentdatum().getTime())); ps.setString(12, mutation.getDocumentnummer()); ps.setInt(13, mutation.getNummeraanduidingStatus().ordinal()); if (mutation.getGerelateerdeWoonplaats() == null) ps.setNull(14, Types.INTEGER); else ps.setLong(14, mutation.getGerelateerdeWoonplaats()); ps.setLong(15, mutation.getGerelateerdeOpenbareRuimte()); ps.setLong(16, origineel.getIdentificatie()); ps.setLong(17, origineel.getAanduidingRecordCorrectie()); ps.setTimestamp(18, new Timestamp(origineel.getBegindatumTijdvakGeldigheid().getTime())); return ps; } }); } catch (DataAccessException e) { throw new DAOException("Error updating nummeraanduiding: " + origineel.getIdentificatie(), e); } } @Override public void update(final Pand origineel, final Pand mutation) throws DAOException { try { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("update bag_pand set" + " aanduiding_record_inactief = ?," + " aanduiding_record_correctie = ?," + " officieel = ?," + " pand_geometrie = ?," + " bouwjaar = ?," + " pand_status = ?," + " einddatum_tijdvak_geldigheid = ?," + " in_onderzoek = ?," + " bron_documentdatum = ?," + " bron_documentnummer = ?" + " where bag_pand_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?"); ps.setInt(1, mutation.getAanduidingRecordInactief().ordinal()); ps.setLong(2, mutation.getAanduidingRecordCorrectie()); ps.setInt(3, mutation.getOfficieel().ordinal()); ps.setString(4, mutation.getPandGeometrie()); ps.setInt(5, mutation.getBouwjaar()); ps.setString(6, mutation.getPandStatus()); if (mutation.getEinddatumTijdvakGeldigheid() == null) ps.setNull(7, Types.TIMESTAMP); else ps.setTimestamp(7, new Timestamp(mutation.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(8, mutation.getInOnderzoek().ordinal()); ps.setDate(9, new Date(mutation.getDocumentdatum().getTime())); ps.setString(10, mutation.getDocumentnummer()); ps.setLong(11, origineel.getIdentificatie()); ps.setLong(12, origineel.getAanduidingRecordCorrectie()); ps.setTimestamp(13, new Timestamp(origineel.getBegindatumTijdvakGeldigheid().getTime())); return ps; } }); } catch (DataAccessException e) { throw new DAOException("Error updating pand: " + origineel.getIdentificatie(), e); } } @Override public void update(final Verblijfsobject origineel, final Verblijfsobject mutation) throws DAOException { try { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("update bag_verblijfsobject set" + " aanduiding_record_inactief = ?," + " aanduiding_record_correctie = ?," + " officieel = ?," + " verblijfsobject_geometrie = ?," + " oppervlakte_verblijfsobject = ?," + " verblijfsobject_status = ?," + " einddatum_tijdvak_geldigheid = ?," + " in_onderzoek = ?," + " bron_documentdatum = ?," + " bron_documentnummer = ?," + " bag_nummeraanduiding_id = ?" + " where bag_verblijfsobject_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?"); ps.setInt(1, mutation.getAanduidingRecordInactief().ordinal()); ps.setLong(2, mutation.getAanduidingRecordCorrectie()); ps.setInt(3, mutation.getOfficieel().ordinal()); ps.setString(4, mutation.getVerblijfsobjectGeometrie()); ps.setInt(5, mutation.getOppervlakteVerblijfsobject()); ps.setInt(6, mutation.getVerblijfsobjectStatus().ordinal()); if (mutation.getEinddatumTijdvakGeldigheid() == null) ps.setNull(7, Types.TIMESTAMP); else ps.setTimestamp(7, new Timestamp(mutation.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(8, mutation.getInOnderzoek().ordinal()); ps.setDate(9, new Date(mutation.getDocumentdatum().getTime())); ps.setString(10, mutation.getDocumentnummer()); ps.setLong(11, mutation.getHoofdAdres()); ps.setLong(12, origineel.getIdentificatie()); ps.setLong(13, origineel.getAanduidingRecordCorrectie()); ps.setTimestamp(14, new Timestamp(origineel.getBegindatumTijdvakGeldigheid().getTime())); return ps; } }); deleteGebruikersdoelen(origineel); insertGebruikersdoelen(mutation); deleteNevenadressen(TypeAdresseerbaarObject.VERBLIJFSOBJECT, origineel); insertNevenadressen(TypeAdresseerbaarObject.VERBLIJFSOBJECT, mutation); deleteGerelateerdePanden(origineel); insertGerelateerdePanden(mutation); } }); } catch (DataAccessException e) { throw new DAOException("Error updating verblijfsobject: " + origineel.getIdentificatie(), e); } } @Override public void update(final Ligplaats origineel, final Ligplaats mutation) throws DAOException { try { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("update bag_ligplaats set" + " aanduiding_record_inactief = ?," + " aanduiding_record_correctie = ?," + " officieel = ?," + " ligplaats_status = ?," + " ligplaats_geometrie = ?," + " einddatum_tijdvak_geldigheid = ?," + " in_onderzoek = ?," + " bron_documentdatum = ?," + " bron_documentnummer = ?," + " bag_nummeraanduiding_id = ?" + " where bag_ligplaats_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?"); ps.setInt(1, mutation.getAanduidingRecordInactief().ordinal()); ps.setLong(2, mutation.getAanduidingRecordCorrectie()); ps.setInt(3, mutation.getOfficieel().ordinal()); ps.setInt(4, mutation.getLigplaatsStatus().ordinal()); ps.setString(5, mutation.getLigplaatsGeometrie()); if (mutation.getEinddatumTijdvakGeldigheid() == null) ps.setNull(6, Types.TIMESTAMP); else ps.setTimestamp(6, new Timestamp(mutation.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(7, mutation.getInOnderzoek().ordinal()); ps.setDate(8, new Date(mutation.getDocumentdatum().getTime())); ps.setString(9, mutation.getDocumentnummer()); ps.setLong(10, mutation.getHoofdAdres()); ps.setLong(11, origineel.getIdentificatie()); ps.setLong(12, origineel.getAanduidingRecordCorrectie()); ps.setTimestamp(13, new Timestamp(origineel.getBegindatumTijdvakGeldigheid().getTime())); return ps; } }); deleteNevenadressen(TypeAdresseerbaarObject.LIGPLAATS, origineel); insertNevenadressen(TypeAdresseerbaarObject.LIGPLAATS, mutation); } }); } catch (DataAccessException e) { throw new DAOException("Error updating ligplaats: " + origineel.getIdentificatie(), e); } } @Override public void update(final Standplaats origineel, final Standplaats mutation) throws DAOException { try { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("update bag_standplaats set" + " aanduiding_record_inactief = ?," + " aanduiding_record_correctie = ?," + " officieel = ?," + " standplaats_status = ?," + " standplaats_geometrie = ?," + " einddatum_tijdvak_geldigheid = ?," + " in_onderzoek = ?," + " bron_documentdatum = ?," + " bron_documentnummer = ?," + " bag_nummeraanduiding_id = ?" + " where bag_standplaats_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?"); ps.setInt(1, mutation.getAanduidingRecordInactief().ordinal()); ps.setLong(2, mutation.getAanduidingRecordCorrectie()); ps.setInt(3, mutation.getOfficieel().ordinal()); ps.setInt(4, mutation.getStandplaatsStatus().ordinal()); ps.setString(5, mutation.getStandplaatsGeometrie()); if (mutation.getEinddatumTijdvakGeldigheid() == null) ps.setNull(6, Types.TIMESTAMP); else ps.setTimestamp(6, new Timestamp(mutation.getEinddatumTijdvakGeldigheid().getTime())); ps.setInt(7, mutation.getInOnderzoek().ordinal()); ps.setDate(8, new Date(mutation.getDocumentdatum().getTime())); ps.setString(9, mutation.getDocumentnummer()); ps.setLong(10, mutation.getHoofdAdres()); ps.setLong(11, origineel.getIdentificatie()); ps.setLong(12, origineel.getAanduidingRecordCorrectie()); ps.setTimestamp(13, new Timestamp(origineel.getBegindatumTijdvakGeldigheid().getTime())); return ps; } }); deleteNevenadressen(TypeAdresseerbaarObject.STANDPLAATS, origineel); insertNevenadressen(TypeAdresseerbaarObject.STANDPLAATS, mutation); } }); } catch (DataAccessException e) { throw new DAOException("Error updating standplaats: " + origineel.getIdentificatie(), e); } } protected void insertGebruikersdoelen(final Verblijfsobject verblijfsobject) { jdbcTemplate.batchUpdate( "insert into bag_gebruiksdoel (" + "bag_verblijfsobject_id," + "aanduiding_record_correctie," + "begindatum_tijdvak_geldigheid," + "gebruiksdoel" + ") values (?,?,?,?)", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setLong(1, verblijfsobject.getIdentificatie()); ps.setLong(2, verblijfsobject.getAanduidingRecordCorrectie()); ps.setTimestamp(3, new Timestamp(verblijfsobject.getBegindatumTijdvakGeldigheid().getTime())); ps.setInt(4, verblijfsobject.getGebruiksdoelenVerblijfsobject().get(i).ordinal()); } @Override public int getBatchSize() { return verblijfsobject.getGebruiksdoelenVerblijfsobject().size(); } }); } protected void insertGebruikersdoelen(final List<Verblijfsobject> verblijfsobjecten) { final List<Gebruiksdoel> batch = new ArrayList<Gebruiksdoel>(); for (Verblijfsobject verblijfsobject : verblijfsobjecten) for (nl.kadaster.schemas.imbag.imbag_types.v20090901.Gebruiksdoel gebruiksdoel : verblijfsobject .getGebruiksdoelenVerblijfsobject()) batch.add(new Gebruiksdoel(verblijfsobject, gebruiksdoel)); jdbcTemplate.batchUpdate( "insert into bag_gebruiksdoel (" + "bag_verblijfsobject_id," + "aanduiding_record_correctie," + "begindatum_tijdvak_geldigheid," + "gebruiksdoel" + ") values (?,?,?,?)", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setLong(1, batch.get(i).getIdentificatie()); ps.setLong(2, batch.get(i).getAanduidingRecordCorrectie()); ps.setTimestamp(3, new Timestamp(batch.get(i).getBegindatumTijdvakGeldigheid().getTime())); ps.setInt(4, batch.get(i).getGebruiksdoel().ordinal()); } @Override public int getBatchSize() { return batch.size(); } }); } protected void deleteGebruikersdoelen(final Verblijfsobject verblijfsobject) { jdbcTemplate.batchUpdate( "delete from bag_gebruiksdoel" + " where bag_verblijfsobject_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setLong(1, verblijfsobject.getIdentificatie()); ps.setLong(2, verblijfsobject.getAanduidingRecordCorrectie()); ps.setTimestamp(3, new Timestamp(verblijfsobject.getBegindatumTijdvakGeldigheid().getTime())); } @Override public int getBatchSize() { return verblijfsobject.getGebruiksdoelenVerblijfsobject().size(); } }); } protected void insertNevenadressen(final TypeAdresseerbaarObject objectType, final BAGAdresseerbaarObject object) { jdbcTemplate.batchUpdate("insert into bag_neven_adres (" + "bag_object_id," + "aanduiding_record_correctie," + "begindatum_tijdvak_geldigheid," + "bag_object_type," + "bag_nummeraanduiding_id" + ") values (?,?,?,?,?)", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setLong(1, object.getIdentificatie()); ps.setLong(2, object.getAanduidingRecordCorrectie()); ps.setTimestamp(3, new Timestamp(object.getBegindatumTijdvakGeldigheid().getTime())); ps.setInt(4, objectType.ordinal()); ps.setLong(5, object.getNevenAdressen().get(i)); } @Override public int getBatchSize() { return object.getNevenAdressen().size(); } }); } protected void insertNevenadressen(final TypeAdresseerbaarObject objectType, final List<? extends BAGAdresseerbaarObject> objects) { final List<NevenAdres> batch = new ArrayList<NevenAdres>(); for (BAGAdresseerbaarObject object : objects) for (Long nevenAdres : object.getNevenAdressen()) batch.add(new NevenAdres(object, nevenAdres)); jdbcTemplate.batchUpdate("insert into bag_neven_adres (" + "bag_object_id," + "aanduiding_record_correctie," + "begindatum_tijdvak_geldigheid," + "bag_object_type," + "bag_nummeraanduiding_id" + ") values (?,?,?,?,?)", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setLong(1, batch.get(i).getIdentificatie()); ps.setLong(2, batch.get(i).getAanduidingRecordCorrectie()); ps.setTimestamp(3, new Timestamp(batch.get(i).getBegindatumTijdvakGeldigheid().getTime())); ps.setInt(4, objectType.ordinal()); ps.setLong(5, batch.get(i).getNevenAdres()); } @Override public int getBatchSize() { return batch.size(); } }); } protected void deleteNevenadressen(final TypeAdresseerbaarObject objectType, final BAGAdresseerbaarObject object) { jdbcTemplate.batchUpdate( "delete from bag_neven_adres" + " where bag_object_id = ?" + " and bag_object_type = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setLong(1, object.getIdentificatie()); ps.setInt(2, objectType.ordinal()); ps.setLong(3, object.getAanduidingRecordCorrectie()); ps.setTimestamp(4, new Timestamp(object.getBegindatumTijdvakGeldigheid().getTime())); } @Override public int getBatchSize() { return object.getNevenAdressen().size(); } }); } protected void insertGerelateerdePanden(final Verblijfsobject verblijfsobject) { jdbcTemplate.batchUpdate( "insert into bag_gerelateerd_pand (" + "bag_verblijfsobject_id," + "aanduiding_record_correctie," + "begindatum_tijdvak_geldigheid," + "bag_pand_id" + ") values (?,?,?,?)", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setLong(1, verblijfsobject.getIdentificatie()); ps.setLong(2, verblijfsobject.getAanduidingRecordCorrectie()); ps.setTimestamp(3, new Timestamp(verblijfsobject.getBegindatumTijdvakGeldigheid().getTime())); ps.setLong(4, verblijfsobject.getGerelateerdPanden().get(i)); } @Override public int getBatchSize() { return verblijfsobject.getGerelateerdPanden().size(); } }); } protected void insertGerelateerdePanden(final List<Verblijfsobject> verblijfsobjecten) { final List<GerelateerdPand> batch = new ArrayList<GerelateerdPand>(); for (Verblijfsobject verblijfsobject : verblijfsobjecten) for (Long gerelateerdPand : verblijfsobject.getGerelateerdPanden()) batch.add(new GerelateerdPand(verblijfsobject, gerelateerdPand)); jdbcTemplate.batchUpdate( "insert into bag_gerelateerd_pand (" + "bag_verblijfsobject_id," + "aanduiding_record_correctie," + "begindatum_tijdvak_geldigheid," + "bag_pand_id" + ") values (?,?,?,?)", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setLong(1, batch.get(i).getIdentificatie()); ps.setLong(2, batch.get(i).getAanduidingRecordCorrectie()); ps.setTimestamp(3, new Timestamp(batch.get(i).getBegindatumTijdvakGeldigheid().getTime())); ps.setLong(4, batch.get(i).getGerelateerdPand()); } @Override public int getBatchSize() { return batch.size(); } }); } protected void deleteGerelateerdePanden(final Verblijfsobject verblijfsobject) { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("delete from bag_gerelateerd_pand" + " where bag_verblijfsobject_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?"); ps.setLong(1, verblijfsobject.getIdentificatie()); ps.setLong(2, verblijfsobject.getAanduidingRecordCorrectie()); ps.setTimestamp(3, new Timestamp(verblijfsobject.getBegindatumTijdvakGeldigheid().getTime())); return ps; } }); } @Override public void delete(final Woonplaats woonplaats) { try { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("delete from bag_woonplaats" + " where bag_woonplaats_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?" + " and einddatum_tijdvak_geldigheid = ?"); ps.setLong(1, woonplaats.getIdentificatie()); ps.setLong(2, woonplaats.getAanduidingRecordCorrectie()); ps.setTimestamp(3, new Timestamp(woonplaats.getBegindatumTijdvakGeldigheid().getTime())); if (woonplaats.getEinddatumTijdvakGeldigheid() == null) ps.setNull(4, Types.TIMESTAMP); else ps.setTimestamp(4, new Timestamp(woonplaats.getEinddatumTijdvakGeldigheid().getTime())); return ps; } }); } catch (DataAccessException e) { throw new DAOException(e); } } @Override public void delete(final OpenbareRuimte openbareRuimte) { try { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("delete from bag_openbare_ruimte" + " where bag_openbare_ruimte_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?" + " and einddatum_tijdvak_geldigheid = ?"); ps.setLong(1, openbareRuimte.getIdentificatie()); ps.setLong(2, openbareRuimte.getAanduidingRecordCorrectie()); ps.setTimestamp(3, new Timestamp(openbareRuimte.getBegindatumTijdvakGeldigheid().getTime())); if (openbareRuimte.getEinddatumTijdvakGeldigheid() == null) ps.setNull(4, Types.TIMESTAMP); else ps.setTimestamp(4, new Timestamp(openbareRuimte.getEinddatumTijdvakGeldigheid().getTime())); return ps; } }); } catch (DataAccessException e) { throw new DAOException(e); } } @Override public void delete(final Nummeraanduiding nummeraanduiding) { try { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("delete from bag_nummeraanduiding" + " where bag_nummeraanduiding_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?" + " and einddatum_tijdvak_geldigheid = ?"); ps.setLong(1, nummeraanduiding.getIdentificatie()); ps.setLong(2, nummeraanduiding.getAanduidingRecordCorrectie()); ps.setTimestamp(3, new Timestamp(nummeraanduiding.getBegindatumTijdvakGeldigheid().getTime())); if (nummeraanduiding.getEinddatumTijdvakGeldigheid() == null) ps.setNull(4, Types.TIMESTAMP); else ps.setTimestamp(4, new Timestamp(nummeraanduiding.getEinddatumTijdvakGeldigheid().getTime())); return ps; } }); } catch (DataAccessException e) { throw new DAOException(e); } } @Override public void delete(final Verblijfsobject verblijfsobject) { try { deleteGebruikersdoelen(verblijfsobject); deleteNevenadressen(TypeAdresseerbaarObject.VERBLIJFSOBJECT, verblijfsobject); deleteGerelateerdePanden(verblijfsobject); jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("delete from bag_verblijfsobject" + " where bag_verblijfsobject_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?" + " and einddatum_tijdvak_geldigheid = ?"); ps.setLong(1, verblijfsobject.getIdentificatie()); ps.setLong(2, verblijfsobject.getAanduidingRecordCorrectie()); ps.setTimestamp(3, new Timestamp(verblijfsobject.getBegindatumTijdvakGeldigheid().getTime())); if (verblijfsobject.getEinddatumTijdvakGeldigheid() == null) ps.setNull(4, Types.TIMESTAMP); else ps.setTimestamp(4, new Timestamp(verblijfsobject.getEinddatumTijdvakGeldigheid().getTime())); return ps; } }); } catch (DataAccessException e) { throw new DAOException(e); } } @Override public void delete(final Pand pand) { try { jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("delete from bag_pand" + " where bag_pand_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?" + " and einddatum_tijdvak_geldigheid = ?"); ps.setLong(1, pand.getIdentificatie()); ps.setLong(2, pand.getAanduidingRecordCorrectie()); ps.setTimestamp(3, new Timestamp(pand.getBegindatumTijdvakGeldigheid().getTime())); if (pand.getEinddatumTijdvakGeldigheid() == null) ps.setNull(4, Types.TIMESTAMP); else ps.setTimestamp(4, new Timestamp(pand.getEinddatumTijdvakGeldigheid().getTime())); return ps; } }); } catch (DataAccessException e) { throw new DAOException(e); } } @Override public void delete(final Ligplaats ligplaats) { try { deleteNevenadressen(TypeAdresseerbaarObject.LIGPLAATS, ligplaats); jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("delete from bag_ligplaats" + " where bag_ligplaats_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?" + " and einddatum_tijdvak_geldigheid = ?"); ps.setLong(1, ligplaats.getIdentificatie()); ps.setLong(2, ligplaats.getAanduidingRecordCorrectie()); ps.setTimestamp(3, new Timestamp(ligplaats.getBegindatumTijdvakGeldigheid().getTime())); if (ligplaats.getEinddatumTijdvakGeldigheid() == null) ps.setNull(4, Types.TIMESTAMP); else ps.setTimestamp(4, new Timestamp(ligplaats.getEinddatumTijdvakGeldigheid().getTime())); return ps; } }); } catch (DataAccessException e) { throw new DAOException(e); } } @Override public void delete(final Standplaats standplaats) { try { deleteNevenadressen(TypeAdresseerbaarObject.STANDPLAATS, standplaats); jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement("delete from bag_standplaats" + " where bag_standplaats_id = ?" + " and aanduiding_record_correctie = ?" + " and begindatum_tijdvak_geldigheid = ?" + " and einddatum_tijdvak_geldigheid = ?"); ps.setLong(1, standplaats.getIdentificatie()); ps.setLong(2, standplaats.getAanduidingRecordCorrectie()); ps.setTimestamp(3, new Timestamp(standplaats.getBegindatumTijdvakGeldigheid().getTime())); if (standplaats.getEinddatumTijdvakGeldigheid() == null) ps.setNull(4, Types.TIMESTAMP); else ps.setTimestamp(4, new Timestamp(standplaats.getEinddatumTijdvakGeldigheid().getTime())); return ps; } }); } catch (DataAccessException e) { throw new DAOException(e); } } }