<%-- $HeadURL: svn+ssh://jwilden@svn.wald.intevation.org/deegree/apps/igeoportal-standard/branches/2.5_testing/modules/gazetteer/gaz_freeSearchResult.jsp $
 This file is part of deegree, http://deegree.org/
 Copyright (C) 2001-2009 by:
 - Department of Geography, University of Bonn -
 and
 - lat/lon GmbH -

 This library is free software; you can redistribute it and/or modify it under
 the terms of the GNU Lesser General Public License as published by the Free
 Software Foundation; either version 2.1 of the License, or (at your option)
 any later version.
 This library 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 Lesser General Public License for more
 details.
 You should have received a copy of the GNU Lesser General Public License
 along with this library; if not, write to the Free Software Foundation, Inc.,
 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

 Contact information:

 lat/lon GmbH
 Aennchenstr. 19, 53177 Bonn
 Germany
 http://lat-lon.de/

 Department of Geography, University of Bonn
 Prof. Dr. Klaus Greve
 Postfach 1147, 53001 Bonn
 Germany
 http://www.geographie.uni-bonn.de/deegree/

 e-mail: info@deegree.org
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.io.BufferedReader" %>
<%@ page import="java.io.File" %>
<%@ page import="java.io.FileReader" %>
<%@ page import="org.deegree.datatypes.QualifiedName" %>
<%@ page import="org.deegree.model.feature.Feature" %>
<%@ page import="org.deegree.model.feature.FeatureCollection" %>
<%@ page import="org.deegree.model.feature.FeatureProperty" %>
<%@ page import="org.deegree.model.feature.GMLFeatureCollectionDocument" %>
<%
    //System.out.println("... calling from gaz_freeSearchResult.jsp ... ");
	FeatureCollection fc = null;
	if ( request.getAttribute( "RESULT" ) instanceof GMLFeatureCollectionDocument ) {
	    GMLFeatureCollectionDocument gmlFcDoc = 
		    (GMLFeatureCollectionDocument) request.getAttribute( "RESULT" );
        fc = gmlFcDoc.parse();
	} else if ( request.getAttribute( "RESULT" ) instanceof FeatureCollection ) {
	    fc = (FeatureCollection) request.getAttribute( "RESULT" );
	}
%>
    var select = parent.document.getElementById( "resultID" );
	for ( i = select.options.length; i > 0 ; i-- ) {
		select.removeChild( select[i-1] );
	}
	var opt = parent.document.createElement('option');
	var text = parent.document.createTextNode('... select');
	opt.appendChild( text );
	opt.setAttribute( 'value', 'dummy|...' );
	select.appendChild( opt );
    
<%
	String key = null;
    String value = null;
    boolean isException = false;
    String errorMsg = null;
	for ( int i = 0; i < fc.size(); i++) {
		Feature feat = fc.getFeature( i );
		FeatureProperty[] fps = feat.getProperties();
        
        String path2Dir = request.getSession( true ).getServletContext().getRealPath( "/" );
        if ( !path2Dir.startsWith( "/" ) ) {
            path2Dir = '/' + path2Dir;
        }
        File ftProps = new File( path2Dir + "modules/gazetteer/featuretype2property.properties" );
        String[] lineParts = null;
        //String featureTypeName = feat.getName().getAsString(); //app:MyFeatureType
        //String featureTypeName = feat.getName().getLocalName(); //MyFeatureType
        String featureTypeName = feat.getName().getFormattedString(); //{http://www.deegree.org/app}:MyFeatureType

        if ( ftProps.exists() ) {
            String line = null;
            BufferedReader buffer = new BufferedReader( new FileReader( ftProps.getCanonicalPath() ) );
            while ( ( line = buffer.readLine() ) != null ) {
                if ( line.indexOf( featureTypeName ) == 0 ) {
                    break;
                }
            }            
            if ( line != null && line.length() > 0 ) {
                lineParts = line.split( "=" );
                if ( lineParts.length != 2 ) {
                    errorMsg = "ERROR: The file 'featuretype2property.properties' contains an invalid value for " + featureTypeName;
                    isException = true;
                }
            } else {
                errorMsg = "ERROR: The file 'featuretype2property.properties' contains no value for " + featureTypeName;
                isException = true;
            }
        }
        
        if ( !isException ) {
            String part1 = lineParts[1].substring( 0, lineParts[1].indexOf( "|" ) );
            String part2 = lineParts[1].substring( lineParts[1].indexOf( "|" ) + 1 );
            for ( int j = 0; j < fps.length; j++ ) {
    		    QualifiedName keyProp = 
    		        new QualifiedName( part2, fps[j].getName().getNamespace() );
    		    if ( keyProp.equals( fps[j].getName() ) ) {
    		        key = (String) fps[j].getValue(); 
    		    }
    		}
    		for ( int j = 0; j < fps.length; j++ ) {
    		    QualifiedName valueProp = 
    		        new QualifiedName( part1, fps[j].getName().getNamespace() );
    		    if ( valueProp.equals( fps[j].getName() ) ) {
    		        value = (String) fps[j].getValue();
    		    }
    		}
        }
        //System.out.println( "key = " + key + " - value = " + value );
        if ( key != null && value != null ) {
%>
            opt = parent.document.createElement('option');
            text = parent.document.createTextNode( '<%=key %>' );
            opt.appendChild( text );
            opt.setAttribute( 'value', '<%=value %>' );
            select.appendChild( opt );
<%              
        }
	}
    if ( isException ) {
        System.out.println( errorMsg );
%>
        for ( i = select.options.length; i > 0 ; i--) {
            select.removeChild( select[i-1] );
        }
        alert( "<%=errorMsg %>" );        
<%        
    }
%>	
	parent.setMessage('\u00A0');
	