<%
/*
 ~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
 ~
 ~ WSO2 Inc. licenses this file to you 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.
 */

/*
* Get all available tile servers from RDB via HTTP GET, Insert new tile servers information via HTTP POST request
*/

var constants = require("constants.jag");
var db = new Database(constants.DATA_SOURCE_NAME);
var log = new Log();
//Sample create table query create table tileServers (serverId int NOT NULL AUTO_INCREMENT, url varchar(255) NOT NULL, name varchar(255), PRIMARY KEY (serverID));
var tableName = "tileservers";

if(request.getMethod() == "GET"){

    var checkTableExist = "SELECT * FROM tileServers limit 1";
    var createTableTileServers = "CREATE TABLE tileServers (serverId int NOT NULL AUTO_INCREMENT, "+
        "url varchar(255) NOT NULL, name varchar(255), subdomains varchar(255),attribution varchar(255),maxzoom int, "+
        "PRIMARY KEY (serverID))";

    try{
        db.query(checkTableExist);
    } catch(e){
        log.info("Table "+tableName+" does not exist. It will be created.");
        db.query(createTableTileServers);
    }

    var serverId = request.getParameter("serverId");
    if(serverId == "all"){
        var getAllTileServers = "select * from tileServers";
            try{
                var allTileServers = db.query(getAllTileServers);
                if (log.isDebugEnabled) {
                    log.debug(allTileServers);
                }
                response.contentType = "application/json";
                response.characterEncoding = "UTF-8";
                response.content = allTileServers;
            }
            catch(e){
                log.error(e.toString());
            }
            finally{
                db.close();
            }
    }
    else{
    // TODO: get specific server details
    }
}
else if(request.getMethod() == "POST"){

    var url = request.getParameter("url");
    var name = request.getParameter("name");
    var maxzoom = parseInt(request.getParameter("maxzoom"));
    var subdomains = request.getParameter("subdomains");
    var attribution = request.getParameter("attribution");

    var insertTileServer  ="INSERT INTO tileServers (url, name, subdomains, attribution, maxzoom) VALUES('"+ url +"', '"+ name +"', '"+ subdomains +"', '"+ attribution +"', '"+ maxzoom +"' );";
    try{
        db.query(insertTileServer);
        if (log.isDebugEnabled()) {
            log.debug(name + ' tile server added successfully!');
        }
    }
    catch(e){
        log.error(e.toString());
    }
    finally{
        db.close();
    }
}

%>