You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@guacamole.apache.org by jm...@apache.org on 2016/07/20 05:29:16 UTC
[4/8] incubator-guacamole-client git commit: GUACAMOLE-5: Map sharing
profile model objects to database schema.
GUACAMOLE-5: Map sharing profile model objects to database schema.
Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/commit/cfac8658
Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/tree/cfac8658
Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/diff/cfac8658
Branch: refs/heads/master
Commit: cfac865807e59d026d8bf3daa84d4fcfde9fedf4
Parents: 21f5aba
Author: Michael Jumper <mj...@apache.org>
Authored: Tue Jul 19 13:59:47 2016 -0700
Committer: Michael Jumper <mj...@apache.org>
Committed: Tue Jul 19 22:26:30 2016 -0700
----------------------------------------------------------------------
.../jdbc/JDBCAuthenticationProviderModule.java | 10 +-
.../connection/ConnectionParameterMapper.java | 72 +++++++++
.../connection/ConnectionParameterModel.java | 104 +++++++++++++
.../auth/jdbc/connection/ConnectionService.java | 14 +-
.../auth/jdbc/connection/ParameterMapper.java | 72 ---------
.../auth/jdbc/connection/ParameterModel.java | 104 -------------
.../SharingProfilePermissionMapper.java | 28 ++++
.../sharingprofile/SharingProfileMapper.java | 91 ++++++++++++
.../sharingprofile/SharingProfileModel.java | 112 ++++++++++++++
.../SharingProfileParameterMapper.java | 72 +++++++++
.../SharingProfileParameterModel.java | 108 ++++++++++++++
.../tunnel/AbstractGuacamoleTunnelService.java | 10 +-
.../connection/ConnectionParameterMapper.xml | 68 +++++++++
.../auth/jdbc/connection/ParameterMapper.xml | 68 ---------
.../SharingProfilePermissionMapper.xml | 117 +++++++++++++++
.../sharingprofile/SharingProfileMapper.xml | 145 +++++++++++++++++++
.../SharingProfileParameterMapper.xml | 68 +++++++++
.../connection/ConnectionParameterMapper.xml | 68 +++++++++
.../auth/jdbc/connection/ParameterMapper.xml | 68 ---------
.../SharingProfilePermissionMapper.xml | 117 +++++++++++++++
.../sharingprofile/SharingProfileMapper.xml | 145 +++++++++++++++++++
.../SharingProfileParameterMapper.xml | 68 +++++++++
22 files changed, 1403 insertions(+), 326 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/JDBCAuthenticationProviderModule.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/JDBCAuthenticationProviderModule.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/JDBCAuthenticationProviderModule.java
index 76725a6..35b15af 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/JDBCAuthenticationProviderModule.java
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/JDBCAuthenticationProviderModule.java
@@ -32,7 +32,6 @@ import org.apache.guacamole.auth.jdbc.user.UserDirectory;
import org.apache.guacamole.auth.jdbc.connectiongroup.ConnectionGroupMapper;
import org.apache.guacamole.auth.jdbc.connection.ConnectionMapper;
import org.apache.guacamole.auth.jdbc.connection.ConnectionRecordMapper;
-import org.apache.guacamole.auth.jdbc.connection.ParameterMapper;
import org.apache.guacamole.auth.jdbc.permission.SystemPermissionMapper;
import org.apache.guacamole.auth.jdbc.user.UserMapper;
import org.apache.guacamole.auth.jdbc.connectiongroup.ConnectionGroupService;
@@ -59,6 +58,10 @@ import org.apache.guacamole.auth.jdbc.activeconnection.ActiveConnectionPermissio
import org.apache.guacamole.auth.jdbc.activeconnection.ActiveConnectionPermissionSet;
import org.apache.guacamole.auth.jdbc.activeconnection.ActiveConnectionService;
import org.apache.guacamole.auth.jdbc.activeconnection.TrackedActiveConnection;
+import org.apache.guacamole.auth.jdbc.connection.ConnectionParameterMapper;
+import org.apache.guacamole.auth.jdbc.permission.SharingProfilePermissionMapper;
+import org.apache.guacamole.auth.jdbc.sharingprofile.SharingProfileMapper;
+import org.apache.guacamole.auth.jdbc.sharingprofile.SharingProfileParameterMapper;
import org.apache.guacamole.auth.jdbc.tunnel.RestrictedGuacamoleTunnelService;
import org.apache.guacamole.net.auth.AuthenticationProvider;
import org.mybatis.guice.MyBatisModule;
@@ -118,8 +121,11 @@ public class JDBCAuthenticationProviderModule extends MyBatisModule {
addMapperClass(ConnectionGroupPermissionMapper.class);
addMapperClass(ConnectionPermissionMapper.class);
addMapperClass(ConnectionRecordMapper.class);
- addMapperClass(ParameterMapper.class);
+ addMapperClass(ConnectionParameterMapper.class);
addMapperClass(SystemPermissionMapper.class);
+ addMapperClass(SharingProfileMapper.class);
+ addMapperClass(SharingProfileParameterMapper.class);
+ addMapperClass(SharingProfilePermissionMapper.class);
addMapperClass(UserMapper.class);
addMapperClass(UserPermissionMapper.class);
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionParameterMapper.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionParameterMapper.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionParameterMapper.java
new file mode 100644
index 0000000..8ba3e24
--- /dev/null
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionParameterMapper.java
@@ -0,0 +1,72 @@
+/*
+ * 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.
+ */
+
+package org.apache.guacamole.auth.jdbc.connection;
+
+import java.util.Collection;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * Mapper for connection parameter objects.
+ *
+ * @author Michael Jumper
+ */
+public interface ConnectionParameterMapper {
+
+ /**
+ * Returns a collection of all parameters associated with the connection
+ * having the given identifier.
+ *
+ * @param identifier
+ * The identifier of the connection whose parameters are to be
+ * retrieved.
+ *
+ * @return
+ * A collection of all parameters associated with the connection
+ * having the given identifier. This collection will be empty if no
+ * such connection exists.
+ */
+ Collection<ConnectionParameterModel> 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<ConnectionParameterModel> 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);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionParameterModel.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionParameterModel.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionParameterModel.java
new file mode 100644
index 0000000..4750de2
--- /dev/null
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionParameterModel.java
@@ -0,0 +1,104 @@
+/*
+ * 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.
+ */
+
+package org.apache.guacamole.auth.jdbc.connection;
+
+/**
+ * A single parameter name/value pair belonging to a connection.
+ *
+ * @author Michael Jumper
+ */
+public class ConnectionParameterModel {
+
+ /**
+ * The identifier of the connection associated with this parameter.
+ */
+ private String connectionIdentifier;
+
+ /**
+ * The name of the parameter.
+ */
+ private String name;
+
+ /**
+ * The value the parameter is set to.
+ */
+ private String value;
+
+ /**
+ * Returns the identifier of the connection associated with this parameter.
+ *
+ * @return
+ * The identifier of the connection associated with this parameter.
+ */
+ public String getConnectionIdentifier() {
+ return connectionIdentifier;
+ }
+
+ /**
+ * Sets the identifier of the connection associated with this parameter.
+ *
+ * @param connectionIdentifier
+ * The identifier of the connection to associate with this parameter.
+ */
+ public void setConnectionIdentifier(String connectionIdentifier) {
+ this.connectionIdentifier = connectionIdentifier;
+ }
+
+ /**
+ * Returns the name of this parameter.
+ *
+ * @return
+ * The name of this parameter.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the name of this parameter.
+ *
+ * @param name
+ * The name of this parameter.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Returns the value of this parameter.
+ *
+ * @return
+ * The value of this parameter.
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of this parameter.
+ *
+ * @param value
+ * The value of this parameter.
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionService.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionService.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionService.java
index 7195b47..70bffbb 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionService.java
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionService.java
@@ -70,7 +70,7 @@ public class ConnectionService extends ModeledGroupedDirectoryObjectService<Mode
* Mapper for accessing connection parameters.
*/
@Inject
- private ParameterMapper parameterMapper;
+ private ConnectionParameterMapper parameterMapper;
/**
* Mapper for accessing connection history.
@@ -197,12 +197,12 @@ public class ConnectionService extends ModeledGroupedDirectoryObjectService<Mode
* A collection of parameter models containing the name/value pairs
* of the given connection's parameters.
*/
- private Collection<ParameterModel> getParameterModels(ModeledConnection connection) {
+ private Collection<ConnectionParameterModel> getParameterModels(ModeledConnection connection) {
Map<String, String> parameters = connection.getConfiguration().getParameters();
// Convert parameters to model objects
- Collection<ParameterModel> parameterModels = new ArrayList<ParameterModel>(parameters.size());
+ Collection<ConnectionParameterModel> parameterModels = new ArrayList<ConnectionParameterModel>(parameters.size());
for (Map.Entry<String, String> parameterEntry : parameters.entrySet()) {
// Get parameter name and value
@@ -214,7 +214,7 @@ public class ConnectionService extends ModeledGroupedDirectoryObjectService<Mode
continue;
// Produce model object from parameter
- ParameterModel model = new ParameterModel();
+ ConnectionParameterModel model = new ConnectionParameterModel();
model.setConnectionIdentifier(connection.getIdentifier());
model.setName(name);
model.setValue(value);
@@ -237,7 +237,7 @@ public class ConnectionService extends ModeledGroupedDirectoryObjectService<Mode
connection.setConfiguration(object.getConfiguration());
// Insert new parameters, if any
- Collection<ParameterModel> parameterModels = getParameterModels(connection);
+ Collection<ConnectionParameterModel> parameterModels = getParameterModels(connection);
if (!parameterModels.isEmpty())
parameterMapper.insert(parameterModels);
@@ -253,7 +253,7 @@ public class ConnectionService extends ModeledGroupedDirectoryObjectService<Mode
super.updateObject(user, object);
// Replace existing parameters with new parameters, if any
- Collection<ParameterModel> parameterModels = getParameterModels(object);
+ Collection<ConnectionParameterModel> parameterModels = getParameterModels(object);
parameterMapper.delete(object.getIdentifier());
if (!parameterModels.isEmpty())
parameterMapper.insert(parameterModels);
@@ -332,7 +332,7 @@ public class ConnectionService extends ModeledGroupedDirectoryObjectService<Mode
// Populate parameter map if we have permission to do so
if (canRetrieveParameters) {
- for (ParameterModel parameter : parameterMapper.select(identifier))
+ for (ConnectionParameterModel parameter : parameterMapper.select(identifier))
parameterMap.put(parameter.getName(), parameter.getValue());
}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ParameterMapper.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ParameterMapper.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ParameterMapper.java
deleted file mode 100644
index d152e60..0000000
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ParameterMapper.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.guacamole.auth.jdbc.connection;
-
-import java.util.Collection;
-import org.apache.ibatis.annotations.Param;
-
-/**
- * Mapper for connection parameter objects.
- *
- * @author Michael Jumper
- */
-public interface ParameterMapper {
-
- /**
- * Returns a collection of all parameters associated with the connection
- * having the given identifier.
- *
- * @param identifier
- * The identifier of the connection whose parameters are to be
- * retrieved.
- *
- * @return
- * A collection of all parameters associated with the connection
- * having the given identifier. This collection will be empty if no
- * such connection exists.
- */
- Collection<ParameterModel> 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<ParameterModel> 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);
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ParameterModel.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ParameterModel.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ParameterModel.java
deleted file mode 100644
index f4cff99..0000000
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ParameterModel.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.guacamole.auth.jdbc.connection;
-
-/**
- * A single parameter name/value pair belonging to a connection.
- *
- * @author Michael Jumper
- */
-public class ParameterModel {
-
- /**
- * The identifier of the connection associated with this parameter.
- */
- private String connectionIdentifier;
-
- /**
- * The name of the parameter.
- */
- private String name;
-
- /**
- * The value the parameter is set to.
- */
- private String value;
-
- /**
- * Returns the identifier of the connection associated with this parameter.
- *
- * @return
- * The identifier of the connection associated with this parameter.
- */
- public String getConnectionIdentifier() {
- return connectionIdentifier;
- }
-
- /**
- * Sets the identifier of the connection associated with this parameter.
- *
- * @param connectionIdentifier
- * The identifier of the connection to associate with this parameter.
- */
- public void setConnectionIdentifier(String connectionIdentifier) {
- this.connectionIdentifier = connectionIdentifier;
- }
-
- /**
- * Returns the name of this parameter.
- *
- * @return
- * The name of this parameter.
- */
- public String getName() {
- return name;
- }
-
- /**
- * Sets the name of this parameter.
- *
- * @param name
- * The name of this parameter.
- */
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * Returns the value of this parameter.
- *
- * @return
- * The value of this parameter.
- */
- public String getValue() {
- return value;
- }
-
- /**
- * Sets the value of this parameter.
- *
- * @param value
- * The value of this parameter.
- */
- public void setValue(String value) {
- this.value = value;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/permission/SharingProfilePermissionMapper.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/permission/SharingProfilePermissionMapper.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/permission/SharingProfilePermissionMapper.java
new file mode 100644
index 0000000..a31b725
--- /dev/null
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/permission/SharingProfilePermissionMapper.java
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+
+package org.apache.guacamole.auth.jdbc.permission;
+
+/**
+ * Mapper for sharing profile permissions.
+ *
+ * @author Michael Jumper
+ */
+public interface SharingProfilePermissionMapper
+ extends ObjectPermissionMapper {}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileMapper.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileMapper.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileMapper.java
new file mode 100644
index 0000000..113cb90
--- /dev/null
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileMapper.java
@@ -0,0 +1,91 @@
+/*
+ * 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.
+ */
+
+package org.apache.guacamole.auth.jdbc.sharingprofile;
+
+import java.util.Set;
+import org.apache.guacamole.auth.jdbc.base.ModeledDirectoryObjectMapper;
+import org.apache.guacamole.auth.jdbc.user.UserModel;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * Mapper for sharing profile objects.
+ *
+ * @author Michael Jumper
+ */
+public interface SharingProfileMapper
+ extends ModeledDirectoryObjectMapper<SharingProfileModel> {
+
+ /**
+ * Selects the identifiers of all sharing profiles associated with the given
+ * primary connection, regardless of whether they are readable by any
+ * particular user. This should only be called on behalf of a system
+ * administrator. If identifiers are needed by a non-administrative user who
+ * must have explicit read rights, use selectReadableIdentifiersWithin()
+ * instead.
+ *
+ * @param primaryConnectionIdentifier
+ * The identifier of the primary connection.
+ *
+ * @return
+ * A Set containing all identifiers of all objects.
+ */
+ Set<String> selectIdentifiersWithin(
+ @Param("primaryConnectionIdentifier") String primaryConnectionIdentifier);
+
+ /**
+ * Selects the identifiers of all sharing profiles associated with the given
+ * primary connection that are explicitly readable by the given user. If
+ * identifiers are needed by a system administrator (who, by definition,
+ * does not need explicit read rights), use selectIdentifiersWithin()
+ * instead.
+ *
+ * @param user
+ * The user whose permissions should determine whether an identifier
+ * is returned.
+ *
+ * @param primaryConnectionIdentifier
+ * The identifier of the primary connection.
+ *
+ * @return
+ * A Set containing all identifiers of all readable objects.
+ */
+ Set<String> selectReadableIdentifiersWithin(@Param("user") UserModel user,
+ @Param("primaryConnectionIdentifier") String primaryConnectionIdentifier);
+
+ /**
+ * Selects the sharing profile associated with the given primary connection
+ * and having the given name. If no such sharing profile exists, null is
+ * returned.
+ *
+ * @param primaryConnectionIdentifier
+ * The identifier of the primary connection to search against.
+ *
+ * @param name
+ * The name of the sharing profile to find.
+ *
+ * @return
+ * The sharing profile having the given name and associated with the
+ * given primary connection, or null if no such sharing profile exists.
+ */
+ SharingProfileModel selectOneByName(
+ @Param("primaryConnectionIdentifier") String primaryConnectionIdentifier,
+ @Param("name") String name);
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileModel.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileModel.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileModel.java
new file mode 100644
index 0000000..939884b
--- /dev/null
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileModel.java
@@ -0,0 +1,112 @@
+/*
+ * 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.
+ */
+
+package org.apache.guacamole.auth.jdbc.sharingprofile;
+
+import org.apache.guacamole.auth.jdbc.base.ObjectModel;
+
+/**
+ * Object representation of a Guacamole sharing profile, as represented in the
+ * database.
+ *
+ * @author Michael Jumper
+ */
+public class SharingProfileModel extends ObjectModel {
+
+ /**
+ * The human-readable name associated with this sharing profile.
+ */
+ private String name;
+
+ /**
+ * The identifier of the primary connection associated with this
+ * sharing profile.
+ */
+ private String primaryConnectionIdentifier;
+
+ /**
+ * Creates a new, empty sharing profile.
+ */
+ public SharingProfileModel() {
+ }
+
+ /**
+ * Returns the name associated with this sharing profile.
+ *
+ * @return
+ * The name associated with this sharing profile.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the name associated with this sharing profile.
+ *
+ * @param name
+ * The name to associate with this sharing profile.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Returns the identifier of the primary connection associated with this
+ * sharing profile.
+ *
+ * @return
+ * The identifier of the primary connection associated with this
+ * sharing profile.
+ */
+ public String getPrimaryConnectionIdentifier() {
+ return primaryConnectionIdentifier;
+ }
+
+ /**
+ * Sets the identifier of the primary connection associated with this
+ * sharing profile.
+ *
+ * @param primaryConnectionIdentifier
+ * The identifier of the primary connection associated with this
+ * sharing profile.
+ */
+ public void setPrimaryConnectionIdentifier(String primaryConnectionIdentifier) {
+ this.primaryConnectionIdentifier = primaryConnectionIdentifier;
+ }
+
+ @Override
+ public String getIdentifier() {
+
+ // If no associated ID, then no associated identifier
+ Integer id = getObjectID();
+ if (id == null)
+ return null;
+
+ // Otherwise, the identifier is the ID as a string
+ return id.toString();
+
+ }
+
+ @Override
+ public void setIdentifier(String identifier) {
+ throw new UnsupportedOperationException("Sharing profile identifiers "
+ + "are derived from IDs. They cannot be set.");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileParameterMapper.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileParameterMapper.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileParameterMapper.java
new file mode 100644
index 0000000..14dacaf
--- /dev/null
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileParameterMapper.java
@@ -0,0 +1,72 @@
+/*
+ * 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.
+ */
+
+package org.apache.guacamole.auth.jdbc.sharingprofile;
+
+import java.util.Collection;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * Mapper for sharing profile parameter objects.
+ *
+ * @author Michael Jumper
+ */
+public interface SharingProfileParameterMapper {
+
+ /**
+ * Returns a collection of all parameters associated with the sharing
+ * profile having the given identifier.
+ *
+ * @param identifier
+ * The identifier of the sharing profile whose parameters are to be
+ * retrieved.
+ *
+ * @return
+ * A collection of all parameters associated with the sharing profile
+ * having the given identifier. This collection will be empty if no
+ * such sharing profile exists.
+ */
+ Collection<SharingProfileParameterModel> select(@Param("identifier") String identifier);
+
+ /**
+ * Inserts each of the parameter model objects in the given collection as
+ * new sharing profile parameters.
+ *
+ * @param parameters
+ * The sharing profile parameters to insert.
+ *
+ * @return
+ * The number of rows inserted.
+ */
+ int insert(@Param("parameters") Collection<SharingProfileParameterModel> parameters);
+
+ /**
+ * Deletes all parameters associated with the sharing profile having the
+ * given identifier.
+ *
+ * @param identifier
+ * The identifier of the sharing profile whose parameters should be
+ * deleted.
+ *
+ * @return
+ * The number of rows deleted.
+ */
+ int delete(@Param("identifier") String identifier);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileParameterModel.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileParameterModel.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileParameterModel.java
new file mode 100644
index 0000000..0332b03
--- /dev/null
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileParameterModel.java
@@ -0,0 +1,108 @@
+/*
+ * 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.
+ */
+
+package org.apache.guacamole.auth.jdbc.sharingprofile;
+
+/**
+ * A single parameter name/value pair belonging to a sharing profile.
+ *
+ * @author Michael Jumper
+ */
+public class SharingProfileParameterModel {
+
+ /**
+ * The identifier of the sharing profile associated with this parameter.
+ */
+ private String sharingProfileIdentifier;
+
+ /**
+ * The name of the parameter.
+ */
+ private String name;
+
+ /**
+ * The value the parameter is set to.
+ */
+ private String value;
+
+ /**
+ * Returns the identifier of the sharing profile associated with this
+ * parameter.
+ *
+ * @return
+ * The identifier of the sharing profile associated with this
+ * parameter.
+ */
+ public String getSharingProfileIdentifier() {
+ return sharingProfileIdentifier;
+ }
+
+ /**
+ * Sets the identifier of the sharing profile associated with this
+ * parameter.
+ *
+ * @param sharingProfileIdentifier
+ * The identifier of the sharing profile to associate with this
+ * parameter.
+ */
+ public void setSharingProfileIdentifier(String sharingProfileIdentifier) {
+ this.sharingProfileIdentifier = sharingProfileIdentifier;
+ }
+
+ /**
+ * Returns the name of this parameter.
+ *
+ * @return
+ * The name of this parameter.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the name of this parameter.
+ *
+ * @param name
+ * The name of this parameter.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Returns the value of this parameter.
+ *
+ * @return
+ * The value of this parameter.
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of this parameter.
+ *
+ * @param value
+ * The value of this parameter.
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java
index 1b65ab8..82af02d 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java
@@ -35,10 +35,9 @@ import org.apache.guacamole.auth.jdbc.user.AuthenticatedUser;
import org.apache.guacamole.auth.jdbc.connection.ModeledConnection;
import org.apache.guacamole.auth.jdbc.connectiongroup.ModeledConnectionGroup;
import org.apache.guacamole.auth.jdbc.connection.ConnectionRecordMapper;
-import org.apache.guacamole.auth.jdbc.connection.ParameterMapper;
import org.apache.guacamole.auth.jdbc.connection.ConnectionModel;
import org.apache.guacamole.auth.jdbc.connection.ConnectionRecordModel;
-import org.apache.guacamole.auth.jdbc.connection.ParameterModel;
+import org.apache.guacamole.auth.jdbc.connection.ConnectionParameterModel;
import org.apache.guacamole.auth.jdbc.user.UserModel;
import org.apache.guacamole.GuacamoleException;
import org.apache.guacamole.GuacamoleSecurityException;
@@ -55,6 +54,7 @@ import org.apache.guacamole.protocol.GuacamoleConfiguration;
import org.apache.guacamole.token.StandardTokens;
import org.apache.guacamole.token.TokenFilter;
import org.mybatis.guice.transactional.Transactional;
+import org.apache.guacamole.auth.jdbc.connection.ConnectionParameterMapper;
/**
@@ -88,7 +88,7 @@ public abstract class AbstractGuacamoleTunnelService implements GuacamoleTunnelS
* Mapper for accessing connection parameters.
*/
@Inject
- private ParameterMapper parameterMapper;
+ private ConnectionParameterMapper parameterMapper;
/**
* Mapper for accessing connection history.
@@ -217,8 +217,8 @@ public abstract class AbstractGuacamoleTunnelService implements GuacamoleTunnelS
config.setProtocol(model.getProtocol());
// Set parameters from associated data
- Collection<ParameterModel> parameters = parameterMapper.select(connection.getIdentifier());
- for (ParameterModel parameter : parameters)
+ Collection<ConnectionParameterModel> parameters = parameterMapper.select(connection.getIdentifier());
+ for (ConnectionParameterModel parameter : parameters)
config.setParameter(parameter.getName(), parameter.getValue());
// Build token filter containing credential tokens
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionParameterMapper.xml
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionParameterMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionParameterMapper.xml
new file mode 100644
index 0000000..ac128ff
--- /dev/null
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionParameterMapper.xml
@@ -0,0 +1,68 @@
+<?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.ConnectionParameterMapper">
+
+ <!-- Result mapper for connection parameters -->
+ <resultMap id="ParameterResultMap" type="org.apache.guacamole.auth.jdbc.connection.ConnectionParameterModel">
+ <result column="connection_id" property="connectionIdentifier" jdbcType="INTEGER"/>
+ <result column="parameter_name" property="name" jdbcType="VARCHAR"/>
+ <result column="parameter_value" property="value" jdbcType="VARCHAR"/>
+ </resultMap>
+
+ <!-- Select all parameters of a given connection -->
+ <select id="select" resultMap="ParameterResultMap">
+ SELECT
+ connection_id,
+ parameter_name,
+ parameter_value
+ FROM guacamole_connection_parameter
+ WHERE
+ connection_id = #{identifier,jdbcType=VARCHAR}
+ </select>
+
+ <!-- Delete all parameters of a given connection -->
+ <delete id="delete">
+ DELETE FROM guacamole_connection_parameter
+ WHERE connection_id = #{identifier,jdbcType=VARCHAR}
+ </delete>
+
+ <!-- Insert all given parameters -->
+ <insert id="insert" parameterType="org.apache.guacamole.auth.jdbc.connection.ConnectionParameterModel">
+
+ INSERT INTO guacamole_connection_parameter (
+ connection_id,
+ parameter_name,
+ parameter_value
+ )
+ VALUES
+ <foreach collection="parameters" item="parameter" separator=",">
+ (#{parameter.connectionIdentifier,jdbcType=VARCHAR},
+ #{parameter.name,jdbcType=VARCHAR},
+ #{parameter.value,jdbcType=VARCHAR})
+ </foreach>
+
+ </insert>
+
+
+</mapper>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ParameterMapper.xml
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ParameterMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ParameterMapper.xml
deleted file mode 100644
index 11db089..0000000
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ParameterMapper.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?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.ParameterMapper">
-
- <!-- Result mapper for connection parameters -->
- <resultMap id="ParameterResultMap" type="org.apache.guacamole.auth.jdbc.connection.ParameterModel">
- <result column="connection_id" property="connectionIdentifier" jdbcType="INTEGER"/>
- <result column="parameter_name" property="name" jdbcType="VARCHAR"/>
- <result column="parameter_value" property="value" jdbcType="VARCHAR"/>
- </resultMap>
-
- <!-- Select all parameters of a given connection -->
- <select id="select" resultMap="ParameterResultMap">
- SELECT
- connection_id,
- parameter_name,
- parameter_value
- FROM guacamole_connection_parameter
- WHERE
- connection_id = #{identifier,jdbcType=VARCHAR}
- </select>
-
- <!-- Delete all parameters of a given connection -->
- <delete id="delete">
- DELETE FROM guacamole_connection_parameter
- WHERE connection_id = #{identifier,jdbcType=VARCHAR}
- </delete>
-
- <!-- Insert all given parameters -->
- <insert id="insert" parameterType="org.apache.guacamole.auth.jdbc.connection.ParameterModel">
-
- INSERT INTO guacamole_connection_parameter (
- connection_id,
- parameter_name,
- parameter_value
- )
- VALUES
- <foreach collection="parameters" item="parameter" separator=",">
- (#{parameter.connectionIdentifier,jdbcType=VARCHAR},
- #{parameter.name,jdbcType=VARCHAR},
- #{parameter.value,jdbcType=VARCHAR})
- </foreach>
-
- </insert>
-
-
-</mapper>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/permission/SharingProfilePermissionMapper.xml
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/permission/SharingProfilePermissionMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/permission/SharingProfilePermissionMapper.xml
new file mode 100644
index 0000000..e7c1d88
--- /dev/null
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/permission/SharingProfilePermissionMapper.xml
@@ -0,0 +1,117 @@
+<?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.permission.SharingProfilePermissionMapper">
+
+ <!-- Result mapper for sharig profile permissions -->
+ <resultMap id="SharingProfilePermissionResultMap" type="org.apache.guacamole.auth.jdbc.permission.ObjectPermissionModel">
+ <result column="user_id" property="userID" jdbcType="INTEGER"/>
+ <result column="username" property="username" jdbcType="VARCHAR"/>
+ <result column="permission" property="type" jdbcType="VARCHAR"
+ javaType="org.apache.guacamole.net.auth.permission.ObjectPermission$Type"/>
+ <result column="sharing_profile_id" property="objectIdentifier" jdbcType="INTEGER"/>
+ </resultMap>
+
+ <!-- Select all permissions for a given user -->
+ <select id="select" resultMap="SharingProfilePermissionResultMap">
+
+ SELECT
+ guacamole_sharing_profile_permission.user_id,
+ username,
+ permission,
+ sharing_profile_id
+ FROM guacamole_sharing_profile_permission
+ JOIN guacamole_user ON guacamole_sharing_profile_permission.user_id = guacamole_user.user_id
+ WHERE guacamole_sharing_profile_permission.user_id = #{user.objectID,jdbcType=INTEGER}
+
+ </select>
+
+ <!-- Select the single permission matching the given criteria -->
+ <select id="selectOne" resultMap="SharingProfilePermissionResultMap">
+
+ SELECT
+ guacamole_sharing_profile_permission.user_id,
+ username,
+ permission,
+ sharing_profile_id
+ FROM guacamole_sharing_profile_permission
+ JOIN guacamole_user ON guacamole_sharing_profile_permission.user_id = guacamole_user.user_id
+ WHERE
+ guacamole_sharing_profile_permission.user_id = #{user.objectID,jdbcType=INTEGER}
+ AND permission = #{type,jdbcType=VARCHAR}
+ AND sharing_profile_id = #{identifier,jdbcType=VARCHAR}
+
+ </select>
+
+ <!-- Select identifiers accessible by the given user for the given permissions -->
+ <select id="selectAccessibleIdentifiers" resultType="string">
+
+ SELECT DISTINCT sharing_profile_id
+ FROM guacamole_sharing_profile_permission
+ WHERE
+ user_id = #{user.objectID,jdbcType=INTEGER}
+ AND sharing_profile_id IN
+ <foreach collection="identifiers" item="identifier"
+ open="(" separator="," close=")">
+ #{identifier,jdbcType=VARCHAR}
+ </foreach>
+ AND permission IN
+ <foreach collection="permissions" item="permission"
+ open="(" separator="," close=")">
+ #{permission,jdbcType=VARCHAR}
+ </foreach>
+
+ </select>
+
+ <!-- Delete all given permissions -->
+ <delete id="delete" parameterType="org.apache.guacamole.auth.jdbc.permission.ObjectPermissionModel">
+
+ DELETE FROM guacamole_sharing_profile_permission
+ WHERE (user_id, permission, sharing_profile_id) IN
+ <foreach collection="permissions" item="permission"
+ open="(" separator="," close=")">
+ (#{permission.userID,jdbcType=INTEGER},
+ #{permission.type,jdbcType=VARCHAR},
+ #{permission.objectIdentifier,jdbcType=VARCHAR})
+ </foreach>
+
+ </delete>
+
+ <!-- Insert all given permissions -->
+ <insert id="insert" parameterType="org.apache.guacamole.auth.jdbc.permission.ObjectPermissionModel">
+
+ INSERT IGNORE INTO guacamole_sharing_profile_permission (
+ user_id,
+ permission,
+ sharing_profile_id
+ )
+ VALUES
+ <foreach collection="permissions" item="permission" separator=",">
+ (#{permission.userID,jdbcType=INTEGER},
+ #{permission.type,jdbcType=VARCHAR},
+ #{permission.objectIdentifier,jdbcType=VARCHAR})
+ </foreach>
+
+ </insert>
+
+</mapper>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileMapper.xml
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileMapper.xml
new file mode 100644
index 0000000..8b8727f
--- /dev/null
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileMapper.xml
@@ -0,0 +1,145 @@
+<?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.sharingprofile.SharingProfileMapper">
+
+ <!-- Result mapper for sharing profile objects -->
+ <resultMap id="SharingProfileResultMap" type="org.apache.guacamole.auth.jdbc.sharingprofile.SharingProfileModel">
+ <id column="sharing_profile_id" property="objectID" jdbcType="INTEGER"/>
+ <result column="sharing_profile_name" property="name" jdbcType="VARCHAR"/>
+ <result column="primary_connection_id" property="primaryConnectionIdentifier" jdbcType="INTEGER"/>
+ </resultMap>
+
+ <!-- Select all sharing profile identifiers -->
+ <select id="selectIdentifiers" resultType="string">
+ SELECT sharing_profile_id
+ FROM guacamole_sharing_profile
+ </select>
+
+ <!-- Select identifiers of all readable sharing profiles -->
+ <select id="selectReadableIdentifiers" resultType="string">
+ SELECT sharing_profile_id
+ FROM guacamole_sharing_profile_permission
+ WHERE
+ user_id = #{user.objectID,jdbcType=INTEGER}
+ AND permission = 'READ'
+ </select>
+
+ <!-- Select all sharing profiles identifiers associated with a particular connection -->
+ <select id="selectIdentifiersWithin" resultType="string">
+ SELECT sharing_profile_id
+ FROM guacamole_sharing_profile
+ WHERE
+ primary_connection_id = #{primaryConnectionIdentifier,jdbcType=VARCHAR}
+ </select>
+
+ <!-- Select identifiers of all readable sharing profiles associated with a particular connection -->
+ <select id="selectReadableIdentifiersWithin" resultType="string">
+ SELECT sharing_profile_id
+ FROM guacamole_sharing_profile
+ JOIN guacamole_sharing_profile_permission ON guacamole_sharing_profile_permission.sharing_profile_id = guacamole_sharing_profile.sharing_profile_id
+ WHERE
+ primary_connection_id = #{primaryConnectionIdentifier,jdbcType=VARCHAR}
+ AND user_id = #{user.objectID,jdbcType=INTEGER}
+ AND permission = 'READ'
+ </select>
+
+ <!-- Select multiple sharing profiles by identifier -->
+ <select id="select" resultMap="SharingProfileResultMap">
+
+ SELECT
+ sharing_profile_id,
+ sharing_profile_name,
+ primary_connection_id
+ FROM guacamole_sharing_profile
+ WHERE sharing_profile_id IN
+ <foreach collection="identifiers" item="identifier"
+ open="(" separator="," close=")">
+ #{identifier,jdbcType=VARCHAR}
+ </foreach>
+
+ </select>
+
+ <!-- Select multiple sharing profiles by identifier only if readable -->
+ <select id="selectReadable" resultMap="SharingProfileResultMap">
+
+ SELECT
+ guacamole_sharing_profile.sharing_profile_id,
+ guacamole_sharing_profile.sharing_profile_name,
+ primary_connection_id
+ FROM guacamole_sharing_profile
+ JOIN guacamole_sharing_profile_permission ON guacamole_sharing_profile_permission.sharing_profile_id = guacamole_sharing_profile.sharing_profile_id
+ WHERE guacamole_sharing_profile.sharing_profile_id IN
+ <foreach collection="identifiers" item="identifier"
+ open="(" separator="," close=")">
+ #{identifier,jdbcType=VARCHAR}
+ </foreach>
+ AND user_id = #{user.objectID,jdbcType=INTEGER}
+ AND permission = 'READ'
+
+ </select>
+
+ <!-- Select single sharing profile by name -->
+ <select id="selectOneByName" resultMap="SharingProfileResultMap">
+
+ SELECT
+ sharing_profile_id,
+ sharing_profile_name,
+ primary_connection_id
+ FROM guacamole_sharing_profile
+ WHERE
+ primary_connection_id = #{primaryConnectionIdentifier,jdbcType=VARCHAR}
+ AND sharing_profile_name = #{name,jdbcType=VARCHAR}
+
+ </select>
+
+ <!-- Delete single sharing profile by identifier -->
+ <delete id="delete">
+ DELETE FROM guacamole_sharing_profile
+ WHERE sharing_profile_id = #{identifier,jdbcType=VARCHAR}
+ </delete>
+
+ <!-- Insert single sharing profile -->
+ <insert id="insert" useGeneratedKeys="true" keyProperty="object.objectID"
+ parameterType="org.apache.guacamole.auth.jdbc.sharingprofile.SharingProfileModel">
+
+ INSERT INTO guacamole_sharing_profile (
+ sharing_profile_name,
+ primary_connection_id
+ )
+ VALUES (
+ #{object.name,jdbcType=VARCHAR},
+ #{object.primaryConnectionIdentifier,jdbcType=VARCHAR},
+ )
+
+ </insert>
+
+ <!-- Update single sharing profile -->
+ <update id="update" parameterType="org.apache.guacamole.auth.jdbc.sharingprofile.SharingProfileModel">
+ UPDATE guacamole_sharing_profile
+ SET sharing_profile_name = #{object.name,jdbcType=VARCHAR},
+ primary_connection_id = #{object.primaryConnectionIdentifier,jdbcType=VARCHAR}
+ WHERE sharing_profile_id = #{object.objectID,jdbcType=INTEGER}
+ </update>
+
+</mapper>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileParameterMapper.xml
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileParameterMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileParameterMapper.xml
new file mode 100644
index 0000000..65c309f
--- /dev/null
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileParameterMapper.xml
@@ -0,0 +1,68 @@
+<?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.sharingprofile.SharingProfileParameterMapper">
+
+ <!-- Result mapper for sharing profile parameters -->
+ <resultMap id="ParameterResultMap" type="org.apache.guacamole.auth.jdbc.sharingprofile.SharingProfileParameterModel">
+ <result column="sharing_profile_id" property="sharingProfileIdentifier" jdbcType="INTEGER"/>
+ <result column="parameter_name" property="name" jdbcType="VARCHAR"/>
+ <result column="parameter_value" property="value" jdbcType="VARCHAR"/>
+ </resultMap>
+
+ <!-- Select all parameters of a given sharing profile -->
+ <select id="select" resultMap="ParameterResultMap">
+ SELECT
+ sharing_profile_id,
+ parameter_name,
+ parameter_value
+ FROM guacamole_sharing_profile_parameter
+ WHERE
+ sharing_profile_id = #{identifier,jdbcType=VARCHAR}
+ </select>
+
+ <!-- Delete all parameters of a given sharing profile -->
+ <delete id="delete">
+ DELETE FROM guacamole_sharing_profile_parameter
+ WHERE sharing_profile_id = #{identifier,jdbcType=VARCHAR}
+ </delete>
+
+ <!-- Insert all given parameters -->
+ <insert id="insert" parameterType="org.apache.guacamole.auth.jdbc.sharingprofile.SharingProfileParameterModel">
+
+ INSERT INTO guacamole_sharing_profile_parameter (
+ sharing_profile_id,
+ parameter_name,
+ parameter_value
+ )
+ VALUES
+ <foreach collection="parameters" item="parameter" separator=",">
+ (#{parameter.sharingProfileIdentifier,jdbcType=VARCHAR},
+ #{parameter.name,jdbcType=VARCHAR},
+ #{parameter.value,jdbcType=VARCHAR})
+ </foreach>
+
+ </insert>
+
+
+</mapper>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionParameterMapper.xml
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionParameterMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionParameterMapper.xml
new file mode 100644
index 0000000..3f3af75
--- /dev/null
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionParameterMapper.xml
@@ -0,0 +1,68 @@
+<?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.ConnectionParameterMapper">
+
+ <!-- Result mapper for connection parameters -->
+ <resultMap id="ParameterResultMap" type="org.apache.guacamole.auth.jdbc.connection.ConnectionParameterModel">
+ <result column="connection_id" property="connectionIdentifier" jdbcType="INTEGER"/>
+ <result column="parameter_name" property="name" jdbcType="VARCHAR"/>
+ <result column="parameter_value" property="value" jdbcType="VARCHAR"/>
+ </resultMap>
+
+ <!-- Select all parameters of a given connection -->
+ <select id="select" resultMap="ParameterResultMap">
+ SELECT
+ connection_id,
+ parameter_name,
+ parameter_value
+ FROM guacamole_connection_parameter
+ WHERE
+ connection_id = #{identifier,jdbcType=INTEGER}::integer
+ </select>
+
+ <!-- Delete all parameters of a given connection -->
+ <delete id="delete">
+ DELETE FROM guacamole_connection_parameter
+ WHERE connection_id = #{identifier,jdbcType=INTEGER}::integer
+ </delete>
+
+ <!-- Insert all given parameters -->
+ <insert id="insert" parameterType="org.apache.guacamole.auth.jdbc.connection.ConnectionParameterModel">
+
+ INSERT INTO guacamole_connection_parameter (
+ connection_id,
+ parameter_name,
+ parameter_value
+ )
+ VALUES
+ <foreach collection="parameters" item="parameter" separator=",">
+ (#{parameter.connectionIdentifier,jdbcType=INTEGER}::integer,
+ #{parameter.name,jdbcType=VARCHAR},
+ #{parameter.value,jdbcType=VARCHAR})
+ </foreach>
+
+ </insert>
+
+
+</mapper>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ParameterMapper.xml
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ParameterMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ParameterMapper.xml
deleted file mode 100644
index 2039e8a..0000000
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ParameterMapper.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?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.ParameterMapper">
-
- <!-- Result mapper for connection parameters -->
- <resultMap id="ParameterResultMap" type="org.apache.guacamole.auth.jdbc.connection.ParameterModel">
- <result column="connection_id" property="connectionIdentifier" jdbcType="INTEGER"/>
- <result column="parameter_name" property="name" jdbcType="VARCHAR"/>
- <result column="parameter_value" property="value" jdbcType="VARCHAR"/>
- </resultMap>
-
- <!-- Select all parameters of a given connection -->
- <select id="select" resultMap="ParameterResultMap">
- SELECT
- connection_id,
- parameter_name,
- parameter_value
- FROM guacamole_connection_parameter
- WHERE
- connection_id = #{identifier,jdbcType=INTEGER}::integer
- </select>
-
- <!-- Delete all parameters of a given connection -->
- <delete id="delete">
- DELETE FROM guacamole_connection_parameter
- WHERE connection_id = #{identifier,jdbcType=INTEGER}::integer
- </delete>
-
- <!-- Insert all given parameters -->
- <insert id="insert" parameterType="org.apache.guacamole.auth.jdbc.connection.ParameterModel">
-
- INSERT INTO guacamole_connection_parameter (
- connection_id,
- parameter_name,
- parameter_value
- )
- VALUES
- <foreach collection="parameters" item="parameter" separator=",">
- (#{parameter.connectionIdentifier,jdbcType=INTEGER}::integer,
- #{parameter.name,jdbcType=VARCHAR},
- #{parameter.value,jdbcType=VARCHAR})
- </foreach>
-
- </insert>
-
-
-</mapper>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/permission/SharingProfilePermissionMapper.xml
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/permission/SharingProfilePermissionMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/permission/SharingProfilePermissionMapper.xml
new file mode 100644
index 0000000..6f65edb
--- /dev/null
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/permission/SharingProfilePermissionMapper.xml
@@ -0,0 +1,117 @@
+<?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.permission.SharingProfilePermissionMapper">
+
+ <!-- Result mapper for sharing profile permissions -->
+ <resultMap id="SharingProfilePermissionResultMap" type="org.apache.guacamole.auth.jdbc.permission.ObjectPermissionModel">
+ <result column="user_id" property="userID" jdbcType="INTEGER"/>
+ <result column="username" property="username" jdbcType="VARCHAR"/>
+ <result column="permission" property="type" jdbcType="VARCHAR"
+ javaType="org.apache.guacamole.net.auth.permission.ObjectPermission$Type"/>
+ <result column="sharing_profile_id" property="objectIdentifier" jdbcType="INTEGER"/>
+ </resultMap>
+
+ <!-- Select all permissions for a given user -->
+ <select id="select" resultMap="SharingProfilePermissionResultMap">
+
+ SELECT
+ guacamole_sharing_profile_permission.user_id,
+ username,
+ permission,
+ sharing_profile_id
+ FROM guacamole_sharing_profile_permission
+ JOIN guacamole_user ON guacamole_sharing_profile_permission.user_id = guacamole_user.user_id
+ WHERE guacamole_sharing_profile_permission.user_id = #{user.objectID,jdbcType=INTEGER}
+
+ </select>
+
+ <!-- Select the single permission matching the given criteria -->
+ <select id="selectOne" resultMap="SharingProfilePermissionResultMap">
+
+ SELECT
+ guacamole_sharing_profile_permission.user_id,
+ username,
+ permission,
+ sharing_profile_id
+ FROM guacamole_sharing_profile_permission
+ JOIN guacamole_user ON guacamole_sharing_profile_permission.user_id = guacamole_user.user_id
+ WHERE
+ guacamole_sharing_profile_permission.user_id = #{user.objectID,jdbcType=INTEGER}
+ AND permission = #{type,jdbcType=VARCHAR}::guacamole_object_permission_type
+ AND sharing_profile_id = #{identifier,jdbcType=INTEGER}::integer
+
+ </select>
+
+ <!-- Select identifiers accessible by the given user for the given permissions -->
+ <select id="selectAccessibleIdentifiers" resultType="string">
+
+ SELECT DISTINCT sharing_profile_id
+ FROM guacamole_sharing_profile_permission
+ WHERE
+ user_id = #{user.objectID,jdbcType=INTEGER}
+ AND sharing_profile_id IN
+ <foreach collection="identifiers" item="identifier"
+ open="(" separator="," close=")">
+ #{identifier,jdbcType=INTEGER}::integer
+ </foreach>
+ AND permission IN
+ <foreach collection="permissions" item="permission"
+ open="(" separator="," close=")">
+ #{permission,jdbcType=VARCHAR}::guacamole_object_permission_type
+ </foreach>
+
+ </select>
+
+ <!-- Delete all given permissions -->
+ <delete id="delete" parameterType="org.apache.guacamole.auth.jdbc.permission.ObjectPermissionModel">
+
+ DELETE FROM guacamole_sharing_profile_permission
+ WHERE (user_id, permission, sharing_profile_id) IN
+ <foreach collection="permissions" item="permission"
+ open="(" separator="," close=")">
+ (#{permission.userID,jdbcType=INTEGER},
+ #{permission.type,jdbcType=VARCHAR}::guacamole_object_permission_type,
+ #{permission.objectIdentifier,jdbcType=INTEGER}::integer)
+ </foreach>
+
+ </delete>
+
+ <!-- Insert all given permissions -->
+ <insert id="insert" parameterType="org.apache.guacamole.auth.jdbc.permission.ObjectPermissionModel">
+
+ INSERT INTO guacamole_sharing_profile_permission (
+ user_id,
+ permission,
+ sharing_profile_id
+ )
+ VALUES
+ <foreach collection="permissions" item="permission" separator=",">
+ (#{permission.userID,jdbcType=INTEGER},
+ #{permission.type,jdbcType=VARCHAR}::guacamole_object_permission_type,
+ #{permission.objectIdentifier,jdbcType=INTEGER}::integer)
+ </foreach>
+
+ </insert>
+
+</mapper>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/cfac8658/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileMapper.xml
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileMapper.xml
new file mode 100644
index 0000000..ca49a99
--- /dev/null
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/sharingprofile/SharingProfileMapper.xml
@@ -0,0 +1,145 @@
+<?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.sharingprofile.SharingProfileMapper">
+
+ <!-- Result mapper for sharing profile objects -->
+ <resultMap id="SharingProfileResultMap" type="org.apache.guacamole.auth.jdbc.sharingprofile.SharingProfileModel">
+ <id column="sharing_profile_id" property="objectID" jdbcType="INTEGER"/>
+ <result column="sharing_profile_name" property="name" jdbcType="VARCHAR"/>
+ <result column="primary_connection_id" property="primaryConnectionIdentifier" jdbcType="INTEGER"/>
+ </resultMap>
+
+ <!-- Select all sharing profile identifiers -->
+ <select id="selectIdentifiers" resultType="string">
+ SELECT sharing_profile_id
+ FROM guacamole_sharing_profile
+ </select>
+
+ <!-- Select identifiers of all readable sharing profiles -->
+ <select id="selectReadableIdentifiers" resultType="string">
+ SELECT sharing_profile_id
+ FROM guacamole_sharing_profile_permission
+ WHERE
+ user_id = #{user.objectID,jdbcType=INTEGER}
+ AND permission = 'READ'
+ </select>
+
+ <!-- Select all sharing profile identifiers associated with a particular connection -->
+ <select id="selectIdentifiersWithin" resultType="string">
+ SELECT sharing_profile_id
+ FROM guacamole_sharing_profile
+ WHERE
+ primary_connection_id = #{primaryConnectionIdentifier,jdbcType=INTEGER}::integer
+ </select>
+
+ <!-- Select identifiers of all readable sharing profiles associated with a particular connection -->
+ <select id="selectReadableIdentifiersWithin" resultType="string">
+ SELECT sharing_profile_id
+ FROM guacamole_sharing_profile
+ JOIN guacamole_sharing_profile_permission ON guacamole_sharing_profile_permission.sharing_profile_id = guacamole_sharing_profile.sharing_profile_id
+ WHERE
+ primary_connection_id = #{primaryConnectionIdentifier,jdbcType=INTEGER}::integer
+ AND user_id = #{user.objectID,jdbcType=INTEGER}
+ AND permission = 'READ'
+ </select>
+
+ <!-- Select multiple sharing profiles by identifier -->
+ <select id="select" resultMap="SharingProfileResultMap">
+
+ SELECT
+ sharing_profile_id,
+ sharing_profile_name,
+ primary_connection_id
+ FROM guacamole_sharing_profile
+ WHERE sharing_profile_id IN
+ <foreach collection="identifiers" item="identifier"
+ open="(" separator="," close=")">
+ #{identifier,jdbcType=INTEGER}::integer
+ </foreach>
+
+ </select>
+
+ <!-- Select multiple sharing profiles by identifier only if readable -->
+ <select id="selectReadable" resultMap="SharingProfileResultMap">
+
+ SELECT
+ guacamole_sharing_profile.sharing_profile_id,
+ guacamole_sharing_profile.sharing_profile_name,
+ primary_connection_id
+ FROM guacamole_sharing_profile
+ JOIN guacamole_sharing_profile_permission ON guacamole_sharing_profile_permission.sharing_profile_id = guacamole_sharing_profile.sharing_profile_id
+ WHERE guacamole_sharing_profile.sharing_profile_id IN
+ <foreach collection="identifiers" item="identifier"
+ open="(" separator="," close=")">
+ #{identifier,jdbcType=INTEGER}::integer
+ </foreach>
+ AND user_id = #{user.objectID,jdbcType=INTEGER}
+ AND permission = 'READ'
+
+ </select>
+
+ <!-- Select single sharing profile by name -->
+ <select id="selectOneByName" resultMap="SharingProfileResultMap">
+
+ SELECT
+ sharing_profile_id,
+ sharing_profile_name,
+ primary_connection_id
+ FROM guacamole_sharing_profile
+ WHERE
+ primary_connection_id = #{primaryConnectionIdentifier,jdbcType=INTEGER}::integer
+ AND sharing_profile_name = #{name,jdbcType=VARCHAR}
+
+ </select>
+
+ <!-- Delete single sharing profile by identifier -->
+ <delete id="delete">
+ DELETE FROM guacamole_sharing_profile
+ WHERE sharing_profile_id = #{identifier,jdbcType=INTEGER}::integer
+ </delete>
+
+ <!-- Insert single sharing profile -->
+ <insert id="insert" useGeneratedKeys="true" keyProperty="object.objectID"
+ parameterType="org.apache.guacamole.auth.jdbc.sharingprofile.SharingProfileModel">
+
+ INSERT INTO guacamole_sharing_profile (
+ sharing_profile_name,
+ primary_connection_id
+ )
+ VALUES (
+ #{object.name,jdbcType=VARCHAR},
+ #{object.primaryConnectionIdentifier,jdbcType=INTEGER}::integer
+ )
+
+ </insert>
+
+ <!-- Update single sharing profile -->
+ <update id="update" parameterType="org.apache.guacamole.auth.jdbc.sharingprofile.SharingProfileModel">
+ UPDATE guacamole_sharing_profile
+ SET sharing_profile_name = #{object.name,jdbcType=VARCHAR},
+ primary_connection_id = #{object.primaryConnectionIdentifier,jdbcType=INTEGER}::integer
+ WHERE sharing_profile_id = #{object.objectID,jdbcType=INTEGER}::integer
+ </update>
+
+</mapper>
\ No newline at end of file