From 1851a394ac392ae0cb6b1d397d928547c5d0c671 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Wed, 25 Feb 2015 11:51:41 -0800 Subject: [PATCH] GUAC-1101: Implement connection parameter update. --- .../net/auth/mysql/dao/ParameterMapper.java | 25 +++++++++++ .../auth/mysql/service/ConnectionService.java | 42 +++++++++++++++++++ .../net/auth/mysql/dao/ParameterMapper.xml | 24 +++++++++++ 3 files changed, 91 insertions(+) diff --git a/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/dao/ParameterMapper.java b/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/dao/ParameterMapper.java index 9e40608c3..0ec5655e8 100644 --- a/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/dao/ParameterMapper.java +++ b/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/dao/ParameterMapper.java @@ -48,4 +48,29 @@ public interface ParameterMapper { */ Collection select(@Param("identifier") String identifier); + /** + * Inserts each of the parameter model objects in the given collection as + * new connection parameters. + * + * @param parameters + * The connection parameters to insert. + * + * @return + * The number of rows inserted. + */ + int insert(@Param("parameters") Collection parameters); + + /** + * Deletes all parameters associated with the connection having the given + * identifier. + * + * @param identifier + * The identifier of the connection whose parameters should be + * deleted. + * + * @return + * The number of rows deleted. + */ + int delete(@Param("identifier") String identifier); + } diff --git a/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/service/ConnectionService.java b/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/service/ConnectionService.java index d038ff94c..38dd55559 100644 --- a/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/service/ConnectionService.java +++ b/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/service/ConnectionService.java @@ -24,6 +24,8 @@ package net.sourceforge.guacamole.net.auth.mysql.service; import com.google.inject.Inject; import com.google.inject.Provider; +import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -151,6 +153,46 @@ public class ConnectionService extends DirectoryObjectService parameters = object.getConfiguration().getParameters(); + + // Convert parameters to model objects + Collection parameterModels = new ArrayList(parameters.size()); + for (Map.Entry parameterEntry : parameters.entrySet()) { + + // Get parameter name and value + String name = parameterEntry.getKey(); + String value = parameterEntry.getValue(); + + // There is no need to insert empty parameters + if (value.isEmpty()) + continue; + + // Produce model object from parameter + ParameterModel model = new ParameterModel(); + model.setConnectionIdentifier(identifier); + model.setName(name); + model.setValue(value); + + // Add model to list + parameterModels.add(model); + + } + + // Replace existing parameters with new parameters + parameterMapper.delete(identifier); + parameterMapper.insert(parameterModels); + + } + /** * Returns the set of all identifiers for all connections within the root * connection group that the user has read access to. diff --git a/extensions/guacamole-auth-mysql/src/main/resources/net/sourceforge/guacamole/net/auth/mysql/dao/ParameterMapper.xml b/extensions/guacamole-auth-mysql/src/main/resources/net/sourceforge/guacamole/net/auth/mysql/dao/ParameterMapper.xml index 05d48b54a..763167382 100644 --- a/extensions/guacamole-auth-mysql/src/main/resources/net/sourceforge/guacamole/net/auth/mysql/dao/ParameterMapper.xml +++ b/extensions/guacamole-auth-mysql/src/main/resources/net/sourceforge/guacamole/net/auth/mysql/dao/ParameterMapper.xml @@ -44,4 +44,28 @@ connection_id = #{identifier,jdbcType=VARCHAR} + + + DELETE FROM guacamole_connection_parameter + WHERE connection_id = #{identifier,jdbcType=VARCHAR} + + + + + + INSERT INTO guacamole_connection_parameter ( + connection_id, + parameter_name, + parameter_value + ) + VALUES + + (#{parameter.connectionIdentifier,jdbcType=VARCHAR}, + #{parameter.name,jdbcType=VARCHAR}, + #{parameter.value,jdbcType=VARCHAR}) + + + + + \ No newline at end of file