begin;
CREATE OR REPLACE FUNCTION script.comp_gaps_finca_def(src varchar, id_trabajo integer) RETURNS boolean AS $$
/*
Autor: Gaspar Mora Navarro. Universidad Politécnica de Valencia.
Para una finca ya insertada en una capa definitiva de fincas, cuyo id_trabajo coincida
 dibuja los gaps, si los hay
en la capa gaps_fincas y devuelve true. Si no hay gaps, devuelve false.
Si la geometria no existe, es vacia, o no es correcta, genera una excepcion.

Previamente borra los errores anteriores del trabajo, si los habia

*/
DECLARE
	resp boolean;
	geom_finca geometry;
	gid_finca integer;
	dis_gap double precision;
	nom_tabla_fincas_def varchar;
	nom_tabla_gaps varchar;--nombre de la tabla espacial de los gaps
	consulta varchar;
	geom_temp geometry;
BEGIN
	nom_tabla_fincas_def:='src' || src || '.fincas';
	nom_tabla_gaps:='src' || src ||'.gaps_fincas';

	consulta:='select geom, gid from ' || nom_tabla_fincas_def || ' t1 where t1.id_trabajo=$1'; 
	execute consulta into geom_finca,gid_finca using id_trabajo;
	
	geom_temp:=script.comprueba_geom(geom_finca);--genera error si es null, empty,...

	select distancia_gap into dis_gap from dom.cfg_tamanos where id >-1;

	if not found then
		raise exception 'Error en comp_gaps_finca_ed: La consulta select area_min, perim_min into area_m, peri_m from dom.cfg_tamanos where id=1 no produjo ningun resultado';
	end if;
	
	resp:=script.borra_gaps_finca_def(src, id_trabajo);

	resp:=script.comprueba_gaps(geom_finca, nom_tabla_fincas_def, nom_tabla_gaps, dis_gap,'id_trabajo', id_trabajo,gid_finca);
		--si hay porciones de perímetro,
		--de la geometria sin estar pegados a los poligonos de nom_tabla_fincas_def
		--se dibujan los arcos erroneos sobre la capa nom_tabla_gaps
		--y devuelve true, pero el registro se puede insertar, ya que no se sabe
		--si es error o no.

	if resp=true then
		return true;
	end if;

	return false;
  END;
$$ LANGUAGE 'plpgsql';

commit;
