#!/bin/sh -x

[ -z "$1" ] || sourcedir="$1"
[ -z "$2" ] || prefix=$2
[ -z "$3" ] || suffix=$3
[ -z "$4" ] || envelope="$4"
[ -z "$envelope" ] && envelope="110,-64 174,0"


if [ -z "$sourcedir" ] ; then
	echo usage: $0 sourcedir prefix suffix [ envelope ]
	exit 
fi

if [ ! -d "$sourcedir" ] ; then
	sourcedir=/home/acoustics_scratch_0/national_mapping/"$sourcedir"
fi

if [ `id -gn` != geoserver ] ; then
	export sourcedir
	export prefix
	export suffix
	export envelope

	sg geoserver -c "$0"
	exit
fi
umask 002

name=`basename $PWD`

if [ ! -f $name.prj ] ; then

	echo 'GEOGCS["WGS 84", DATUM["World Geodetic System 1984", SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], UNIT["degree", 0.017453292519943295], AXIS["Geodetic longitude", EAST], AXIS["Geodetic latitude", NORTH], AUTHORITY["EPSG","4326"]]' > $name.prj
fi

if [ ! -f $name.properties ] ; then

cat > $name.properties << EOF
Name=$name
Envelope2D=$envelope
EOF
fi


for f in $sourcedir/[1-9]*/. ; do
	dir=`dirname $f`
	lvl=`basename $dir`
	mkdir -p $lvl
	find $f -name $prefix\*$suffix.tif -exec cp -au '{}' $lvl ';'
done


find . -size -10c -name "*.tif" -delete

for f in */. ; do
	(
	cd $f
	find . -name "*.tif" -exec gdaltindex -tileindex location $name.shp '{}' '+'
	if [ ! -f $name.prj ] ; then
		cp ../$name.prj .
	fi
	if [ ! -f $name.properties ] ; then
		echo Name=$name 		> $name.properties
		echo LocationAttribute=location >> $name.properties
		echo LevelsNum=1		>> $name.properties
#		echo Envelope2D=`ogrinfo -al -so $name.shp | grep Extent | sed 's/ //g' | sed 's/)-(/ /' | sed 's/.*(//' | sed 's/)//'` >> $name.properties
		grep Envelope ../$name.properties >> $name.properties
		tif=`find . -name "*.tif" -print -quit`
		if [ ! -z "$tif" ] ; then
			echo Levels=`tiffinfo $tif | grep 33550 | sed  's/.*: //' | sed 's/,[^,]*$//'` >> $name.properties
		fi
	fi
	)
done

if [ 0 = `grep -c Level $name.properties` ] ; then
	echo LevelsNum=`ls */$name.properties | wc -l`		>> $name.properties
	echo -n LevelsDirs=					>> $name.properties
	ls */$name.properties | sort -n -t/ | while read level ; do
		echo -n `dirname $level`" " 			>> $name.properties
	done
	echo							>> $name.properties
	echo -n Levels=						>> $name.properties
        ls */$name.properties | sort -n -t/ | while read level ; do
		echo -n `grep Levels= $level | sed s/Levels=//`" "	>> $name.properties
        done
	echo							>> $name.properties
fi
	
chgrp -R geoserver *	2> /dev/null
chmod -R g+w *		2> /dev/null
chmod -w *.*

