<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF 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.
-->

<mapper namespace="org.apache.guacamole.auth.jdbc.connection.ConnectionRecordMapper" >

    <!-- Result mapper for system permissions -->
    <resultMap id="ConnectionRecordResultMap" type="org.apache.guacamole.auth.jdbc.connection.ConnectionRecordModel">
        <result column="connection_id"        property="connectionIdentifier"     jdbcType="INTEGER"/>
        <result column="connection_name"      property="connectionName"           jdbcType="VARCHAR"/>
        <result column="remote_host"          property="remoteHost"               jdbcType="VARCHAR"/>
        <result column="sharing_profile_id"   property="sharingProfileIdentifier" jdbcType="INTEGER"/>
        <result column="sharing_profile_name" property="sharingProfileName"       jdbcType="VARCHAR"/>
        <result column="user_id"              property="userID"                   jdbcType="INTEGER"/>
        <result column="username"             property="username"                 jdbcType="VARCHAR"/>
        <result column="start_date"           property="startDate"                jdbcType="TIMESTAMP"/>
        <result column="end_date"             property="endDate"                  jdbcType="TIMESTAMP"/>
    </resultMap>

    <!-- Select all connection records from a given connection -->
    <select id="select" resultMap="ConnectionRecordResultMap">

        SELECT
            [guacamole_connection_history].connection_id,
            [guacamole_connection_history].connection_name,
            [guacamole_connection_history].remote_host,
            [guacamole_connection_history].sharing_profile_id,
            [guacamole_connection_history].sharing_profile_name,
            [guacamole_connection_history].user_id,
            [guacamole_connection_history].username,
            [guacamole_connection_history].start_date,
            [guacamole_connection_history].end_date
        FROM [guacamole_connection_history]
        WHERE
            [guacamole_connection_history].connection_id = #{identifier,jdbcType=INTEGER}
        ORDER BY
            [guacamole_connection_history].start_date DESC,
            [guacamole_connection_history].end_date DESC

    </select>

    <!-- Insert the given connection record -->
    <insert id="insert" parameterType="org.apache.guacamole.auth.jdbc.connection.ConnectionRecordModel">

        INSERT INTO [guacamole_connection_history] (
            connection_id,
            connection_name,
            remote_host,
            sharing_profile_id,
            sharing_profile_name,
            user_id,
            username,
            start_date,
            end_date
        )
        VALUES (
            #{record.connectionIdentifier,jdbcType=INTEGER},
            #{record.connectionName,jdbcType=VARCHAR},
            #{record.remoteHost,jdbcType=VARCHAR},
            #{record.sharingProfileIdentifier,jdbcType=INTEGER},
            #{record.sharingProfileName,jdbcType=VARCHAR},
            (SELECT user_id FROM [guacamole_user]
             JOIN [guacamole_entity] ON [guacamole_user].entity_id = [guacamole_entity].entity_id
             WHERE
                   [guacamole_entity].name = #{record.username,jdbcType=VARCHAR}
               AND [guacamole_entity].type = 'USER'),
            #{record.username,jdbcType=VARCHAR},
            #{record.startDate,jdbcType=TIMESTAMP},
            #{record.endDate,jdbcType=TIMESTAMP}
        )

    </insert>

    <!-- Search for specific connection records -->
    <select id="search" resultMap="ConnectionRecordResultMap">

        SELECT TOP (#{limit,jdbcType=INTEGER})
            [guacamole_connection_history].connection_id,
            [guacamole_connection_history].connection_name,
            [guacamole_connection_history].remote_host,
            [guacamole_connection_history].sharing_profile_id,
            [guacamole_connection_history].sharing_profile_name,
            [guacamole_connection_history].user_id,
            [guacamole_connection_history].username,
            [guacamole_connection_history].start_date,
            [guacamole_connection_history].end_date
        FROM [guacamole_connection_history]

        <!-- Search terms -->
        <foreach collection="terms" item="term"
                 open="WHERE " separator=" AND ">
            (

                [guacamole_connection_history].user_id IN (
                    SELECT user_id
                    FROM [guacamole_user]
                    WHERE CHARINDEX(#{term.term,jdbcType=VARCHAR}, username) > 0
                )

                OR [guacamole_connection_history].connection_id IN (
                    SELECT connection_id
                    FROM [guacamole_connection]
                    WHERE CHARINDEX(#{term.term,jdbcType=VARCHAR}, connection_name) > 0
                )

                <if test="term.startDate != null and term.endDate != null">
                    OR start_date BETWEEN #{term.startDate,jdbcType=TIMESTAMP} AND #{term.endDate,jdbcType=TIMESTAMP}
                </if>

            )
        </foreach>

        <!-- Bind sort property enum values for sake of readability -->
        <bind name="START_DATE" value="@org.apache.guacamole.net.auth.ActivityRecordSet$SortableProperty@START_DATE"/>

        <!-- Sort predicates -->
        <foreach collection="sortPredicates" item="sortPredicate"
                 open="ORDER BY " separator=", ">
            <choose>
                <when test="sortPredicate.property == START_DATE">[guacamole_connection_history].start_date</when>
                <otherwise>1</otherwise>
            </choose>
            <if test="sortPredicate.descending">DESC</if>
        </foreach>

    </select>

    <!-- Search for specific connection records -->
    <select id="searchReadable" resultMap="ConnectionRecordResultMap">

        SELECT TOP (#{limit,jdbcType=INTEGER})
            [guacamole_connection_history].connection_id,
            [guacamole_connection_history].connection_name,
            [guacamole_connection_history].remote_host,
            [guacamole_connection_history].sharing_profile_id,
            [guacamole_connection_history].sharing_profile_name,
            [guacamole_connection_history].user_id,
            [guacamole_connection_history].username,
            [guacamole_connection_history].start_date,
            [guacamole_connection_history].end_date
        FROM [guacamole_connection_history]
        LEFT JOIN [guacamole_connection]            ON [guacamole_connection_history].connection_id = [guacamole_connection].connection_id
        LEFT JOIN [guacamole_user]                  ON [guacamole_connection_history].user_id       = [guacamole_user].user_id

        <!-- Restrict to readable connections -->
        JOIN [guacamole_connection_permission] ON
                [guacamole_connection_history].connection_id = [guacamole_connection_permission].connection_id
            AND <include refid="org.apache.guacamole.auth.jdbc.base.EntityMapper.isRelatedEntity">
                <property name="column"   value="[guacamole_connection_permission].entity_id"/>
                <property name="entityID" value="#{user.entityID,jdbcType=INTEGER}"/>
                <property name="groups"   value="effectiveGroups"/>
            </include>
            AND [guacamole_connection_permission].permission = 'READ'

        <!-- Restrict to readable users -->
        JOIN [guacamole_user_permission] ON
                [guacamole_connection_history].user_id = [guacamole_user_permission].affected_user_id
            AND <include refid="org.apache.guacamole.auth.jdbc.base.EntityMapper.isRelatedEntity">
                <property name="column"   value="[guacamole_user_permission].entity_id"/>
                <property name="entityID" value="#{user.entityID,jdbcType=INTEGER}"/>
                <property name="groups"   value="effectiveGroups"/>
            </include>
            AND [guacamole_user_permission].permission = 'READ'

        <!-- Search terms -->
        <foreach collection="terms" item="term"
                 open="WHERE " separator=" AND ">
            (

                [guacamole_connection_history].user_id IN (
                    SELECT user_id
                    FROM [guacamole_user]
                    JOIN [guacamole_entity] ON [guacamole_user].entity_id = [guacamole_entity].entity_id
                    WHERE
                            CHARINDEX(#{term.term,jdbcType=VARCHAR}, [guacamole_entity].name) > 0
                        AND [guacamole_entity].type = 'USER'
                )

                OR [guacamole_connection_history].connection_id IN (
                    SELECT connection_id
                    FROM [guacamole_connection]
                    WHERE CHARINDEX(#{term.term,jdbcType=VARCHAR}, connection_name) > 0
                )

                <if test="term.startDate != null and term.endDate != null">
                    OR start_date BETWEEN #{term.startDate,jdbcType=TIMESTAMP} AND #{term.endDate,jdbcType=TIMESTAMP}
                </if>

            )
        </foreach>

        <!-- Bind sort property enum values for sake of readability -->
        <bind name="START_DATE" value="@org.apache.guacamole.net.auth.ActivityRecordSet$SortableProperty@START_DATE"/>

        <!-- Sort predicates -->
        <foreach collection="sortPredicates" item="sortPredicate"
                 open="ORDER BY " separator=", ">
            <choose>
                <when test="sortPredicate.property == START_DATE">[guacamole_connection_history].start_date</when>
                <otherwise>1</otherwise>
            </choose>
            <if test="sortPredicate.descending">DESC</if>
        </foreach>

    </select>

</mapper>
