-- Copyright 2010, Intevation GmbH, Germany, <info@intevation.de>
--
-- This file is part of FGSK.
--
-- FGSK is free software: you can redistribute it and/or modify it under
-- the terms of the GNU General Public License as published by the
-- Free Software Foundation, either version 2 of the License, or (at your
-- option) any later version.
--
-- FGSK is distributed in the hope that it will be useful, but WITHOUT
-- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-- License for more details.
--
-- You should have received a copy of the GNU General Public
-- License along with FGSK. If not, see <http://www.gnu.org/licenses/>.
--
-- FGSK has been developed on behalf of the
-- Landesamt fuer Umwelt und Geologie Mecklenburg Vorpommern (LUNG-MV)
-- by Intevation GmbH. 
-- biota Institut fuer oekologische Forschung und Planung GmbH has provided
-- the functional background.
--
-- Authors:
-- Tim Englich <tim.englich@intevation.de>
-- Ingo Weinzierl <ingo.weinzierl@intevation.de>

BEGIN;
-- BEGIN TRANSACTION


CREATE OR REPLACE FUNCTION delete_kartierabschnitt_func
                                            (id_kartierabschnitt INTEGER)
RETURNS BOOLEAN AS
$$
DECLARE
BEGIN
    RAISE DEBUG 'Loschen der Daten zu Kartierabschnitt: %', id_kartierabschnitt;

    -- Loeschen aller Verweise zu Laufentwicklung
    RAISE DEBUG 'Loschen der Daten zu Laufentwicklung zu Kartierabschnitt: %',
                 id_kartierabschnitt;
    DELETE FROM laufentwicklung_hat_laufstrukturen 
           WHERE kartierabschnitt_id = id_kartierabschnitt;
    DELETE FROM laufentwicklung_hat_laengsbaenke 
           WHERE kartierabschnitt_id = id_kartierabschnitt;
    DELETE FROM laufentwicklung 
           WHERE kartierabschnitt_id = id_kartierabschnitt;

    -- Loeschen aller Verweise zu Gewaesserumfeld
    RAISE DEBUG 'Loschen der Daten zu Gewaesserumfeld zu Kartierabschnitt: %',
                 id_kartierabschnitt;
    DELETE FROM gewaesserumfeld_hat_schaedlicheumfeldstrukturen 
           WHERE kartierabschnitt_id = id_kartierabschnitt;
    DELETE FROM gewaesserumfeld_hat_umfeldstrukturen 
           WHERE kartierabschnitt_id = id_kartierabschnitt;
    DELETE FROM gewaesserumfeld 
           WHERE kartierabschnitt_id = id_kartierabschnitt;

    -- Loeschen aller Verweise zu Uferstruktur
    RAISE DEBUG 'Loeschen der Daten zu Uferstruktur zu Kartierabschnitt: %',
                 id_kartierabschnitt;
    DELETE FROM uferstruktur_hat_uferbelastungen 
           WHERE kartierabschnitt_id = id_kartierabschnitt;
    DELETE FROM uferstruktur_hat_uferstrukturen 
           WHERE kartierabschnitt_id = id_kartierabschnitt;
    DELETE FROM uferstruktur 
           WHERE kartierabschnitt_id = id_kartierabschnitt;

    -- Loeschen aller Verweise zu Sohlenstruktur
    RAISE DEBUG 'Loeschen der Daten zu Sohlenstruktur zu Kartierabschnitt: %',
                 id_kartierabschnitt;
    DELETE FROM sohlenstruktur_hat_belastung_sohle 
           WHERE kartierabschnitt_id = id_kartierabschnitt;
    DELETE FROM sohlenstruktur_hat_sohlenstrukturen 
           WHERE kartierabschnitt_id = id_kartierabschnitt;
    DELETE FROM sohlenstruktur_hat_sohlensubstrat 
           WHERE kartierabschnitt_id = id_kartierabschnitt;
    DELETE FROM sohlenstruktur 
           WHERE kartierabschnitt_id = id_kartierabschnitt;

    -- Loeschen aller Verweise zu Querprofil
    RAISE DEBUG 'Loeschen der Daten zu Sohlenstruktur zu Kartierabschnitt %.',
                 id_kartierabschnitt;
    DELETE FROM querprofil_hat_messungen 
           WHERE kartierabschnitt_id = id_kartierabschnitt;
    DELETE FROM querprofil 
           WHERE kartierabschnitt_id = id_kartierabschnitt;

    -- Loeschen aller Verweise zu Laengsprofil
    RAISE DEBUG 'Loeschen der Daten zu Laengsprofil zu Kartierabschnitt %.',
                id_kartierabschnitt;
    DELETE FROM laengsprofil_hat_besonderheiten_wasserfuehrung 
           WHERE kartierabschnitt_id = id_kartierabschnitt;
    DELETE FROM laengsprofil 
           WHERE kartierabschnitt_id = id_kartierabschnitt;

    -- Loeschen aller Verweise zum Kartierabschnitt;
    RAISE DEBUG 'Loeschen der Verweise zu Kartierabschnitt %.',
                id_kartierabschnitt;
    DELETE FROM kartierabschnitt_hat_bild 
           WHERE kartierabschnitt_id = id_kartierabschnitt;
    DELETE FROM kartierabschnitt_hat_gewaessersubtyp 
           WHERE kartierabschnitt_id = id_kartierabschnitt;

    -- Loeschen des kartierabschnittes;
    RAISE DEBUG 'Loeschen des Kartierabschnittes %.',
                id_kartierabschnitt;
    DELETE FROM kartierabschnitt 
           WHERE id = id_kartierabschnitt;

    RAISE DEBUG 'Loeschen der Daten zu Kartierabschnitt: % beendet.',
                id_kartierabschnitt;

    RETURN TRUE;
END;
$$ LANGUAGE plpgsql;
-- END TRANSACTION
END;