mirror of
				https://github.com/gyurix1968/guacamole-client.git
				synced 2025-10-31 09:03:21 +00:00 
			
		
		
		
	GUAC-1193: Create connection history interface, and add simple implementation.
This commit is contained in:
		| @@ -0,0 +1,175 @@ | ||||
| /* | ||||
|  * Copyright (C) 2015 Glyptodon LLC | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|  * of this software and associated documentation files (the "Software"), to deal | ||||
|  * in the Software without restriction, including without limitation the rights | ||||
|  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|  * copies of the Software, and to permit persons to whom the Software is | ||||
|  * furnished to do so, subject to the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice shall be included in | ||||
|  * all copies or substantial portions of the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
|  * THE SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| package org.glyptodon.guacamole.net.auth; | ||||
|  | ||||
| import java.util.Collection; | ||||
| import java.util.Date; | ||||
| import org.glyptodon.guacamole.GuacamoleException; | ||||
|  | ||||
| /** | ||||
|  * The set of all available connection records, or a subset of those records. | ||||
|  * | ||||
|  * @author James Muehlner | ||||
|  * @author Michael Jumper | ||||
|  */ | ||||
| public interface ConnectionRecordSet { | ||||
|  | ||||
|     /** | ||||
|      * All properties of connection records which can be used as sorting | ||||
|      * criteria. | ||||
|      */ | ||||
|     enum SortableProperty { | ||||
|  | ||||
|         /** | ||||
|          * The name (not identifier) of the connection associated with the | ||||
|          * connection record. | ||||
|          */ | ||||
|         CONNECTION_NAME, | ||||
|  | ||||
|         /** | ||||
|          * The identifier (username) of the user that used the connection | ||||
|          * associated with the connection record. | ||||
|          */ | ||||
|         USER_IDENTIFIER, | ||||
|  | ||||
|         /** | ||||
|          * The date and time when the connection associated with the | ||||
|          * connection record began. | ||||
|          */ | ||||
|         START_DATE, | ||||
|  | ||||
|         /** | ||||
|          * The date and time when the connection associated with the | ||||
|          * connection record ended. | ||||
|          */ | ||||
|         END_DATE | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * Returns all connection records within this set as a standard Collection. | ||||
|      * | ||||
|      * @return | ||||
|      *      A collection containing all connection records within this set. | ||||
|      * | ||||
|      * @throws GuacamoleException | ||||
|      *      If an error occurs while retrieving the connection records within | ||||
|      *      this set. | ||||
|      */ | ||||
|     Collection<ConnectionRecord> asCollection() throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
|      * Returns the subset of connection records to only those that began after | ||||
|      * the given date and time. | ||||
|      * | ||||
|      * @param date | ||||
|      *     The date and time after which all connection records within the | ||||
|      *     resulting subset should begin. | ||||
|      * | ||||
|      * @return | ||||
|      *     The subset of connection history records which begin after the | ||||
|      *     specified date and time. | ||||
|      * | ||||
|      * @throws GuacamoleException | ||||
|      *     If an error occurs while restricting the current subset. | ||||
|      */ | ||||
|     ConnectionRecordSet after(Date date) throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
|      * Returns the subset of connection records to only those that ended before | ||||
|      * the given date and time. | ||||
|      * | ||||
|      * @param date | ||||
|      *     The date and time before which all connection records within the | ||||
|      *     resulting subset should end. | ||||
|      * | ||||
|      * @return | ||||
|      *     The subset of connection history records which end before the | ||||
|      *     specified date and time. | ||||
|      * | ||||
|      * @throws GuacamoleException | ||||
|      *     If an error occurs while restricting the current subset. | ||||
|      */ | ||||
|     ConnectionRecordSet before(Date date) throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
|      * Returns the subset of connection records to only those where the | ||||
|      * connection name or user identifier contain the given value. | ||||
|      * | ||||
|      * @param value | ||||
|      *     The value which all connection records within the resulting subset | ||||
|      *     should contain within their associated connection name or user | ||||
|      *     identifier. | ||||
|      * | ||||
|      * @return | ||||
|      *     The subset of connection history records which contain the specified | ||||
|      *     value within their associated connection name or user identifier. | ||||
|      * | ||||
|      * @throws GuacamoleException | ||||
|      *     If an error occurs while restricting the current subset. | ||||
|      */ | ||||
|     ConnectionRecordSet contains(String value) throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
|      * Returns the subset of connection history records containing only the | ||||
|      * first <code>limit</code> records. If the subset has fewer than | ||||
|      * <code>limit</code> records, then this function has no effect. | ||||
|      * | ||||
|      * @param limit | ||||
|      *     The maximum number of records that the new subset should contain. | ||||
|      * | ||||
|      * @return | ||||
|      *     The subset of connection history records that containing only the | ||||
|      *     first <code>limit</code> records. | ||||
|      * | ||||
|      * @throws GuacamoleException | ||||
|      *     If an error occurs while limiting the current subset. | ||||
|      */ | ||||
|     ConnectionRecordSet limit(int limit) throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
|      * Returns a ConnectionRecordSet containing identically the records within | ||||
|      * this set, sorted according to the specified criteria. The sort operation | ||||
|      * performed is guaranteed to be stable with respect to any past call to | ||||
|      * sort(). | ||||
|      * | ||||
|      * @param property | ||||
|      *     The property by which the connection records within the resulting | ||||
|      *     set should be sorted. | ||||
|      * | ||||
|      * @param desc | ||||
|      *     Whether the records should be sorted according to the specified | ||||
|      *     property in descending order. If false, records will be sorted | ||||
|      *     according to the specified property in ascending order. | ||||
|      * | ||||
|      * @return | ||||
|      *     The ConnnectionRecordSet, sorted according to the specified | ||||
|      *     criteria. | ||||
|      * | ||||
|      * @throws GuacamoleException | ||||
|      *     If an error occurs while sorting the current subset. | ||||
|      */ | ||||
|     ConnectionRecordSet sort(SortableProperty property, boolean desc) | ||||
|             throws GuacamoleException; | ||||
|  | ||||
| } | ||||
| @@ -109,6 +109,19 @@ public interface UserContext { | ||||
|     Directory<ActiveConnection> getActiveConnectionDirectory() | ||||
|             throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
|      * Retrieves all connection records visible to current user. The resulting | ||||
|      * set of connection records can be further filtered and ordered using the | ||||
|      * methods defined on ConnectionRecordSet. | ||||
|      * | ||||
|      * @return | ||||
|      *     A set of all connection records visible to the current user. | ||||
|      * | ||||
|      * @throws GuacamoleException | ||||
|      *     If an error occurs while retrieving the connection records. | ||||
|      */ | ||||
|     ConnectionRecordSet getConnectionHistory() throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
|      * Retrieves a connection group which can be used to view and manipulate | ||||
|      * connections, but only as allowed by the permissions given to the user of  | ||||
|   | ||||
| @@ -0,0 +1,75 @@ | ||||
| /* | ||||
|  * Copyright (C) 2015 Glyptodon LLC | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|  * of this software and associated documentation files (the "Software"), to deal | ||||
|  * in the Software without restriction, including without limitation the rights | ||||
|  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|  * copies of the Software, and to permit persons to whom the Software is | ||||
|  * furnished to do so, subject to the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice shall be included in | ||||
|  * all copies or substantial portions of the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
|  * THE SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| package org.glyptodon.guacamole.net.auth.simple; | ||||
|  | ||||
| import java.util.Collection; | ||||
| import java.util.Collections; | ||||
| import java.util.Date; | ||||
| import org.glyptodon.guacamole.GuacamoleException; | ||||
| import org.glyptodon.guacamole.net.auth.ConnectionRecord; | ||||
| import org.glyptodon.guacamole.net.auth.ConnectionRecordSet; | ||||
|  | ||||
| /** | ||||
|  * An immutable and empty ConnectionRecordSet. | ||||
|  * | ||||
|  * @author Michael Jumper | ||||
|  */ | ||||
| public class SimpleConnectionRecordSet implements ConnectionRecordSet { | ||||
|  | ||||
|     @Override | ||||
|     public Collection<ConnectionRecord> asCollection() | ||||
|             throws GuacamoleException { | ||||
|         return Collections.<ConnectionRecord>emptyList(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public ConnectionRecordSet after(Date date) | ||||
|             throws GuacamoleException { | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public ConnectionRecordSet before(Date date) | ||||
|             throws GuacamoleException { | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public ConnectionRecordSet contains(String value) | ||||
|             throws GuacamoleException { | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public ConnectionRecordSet limit(int limit) | ||||
|             throws GuacamoleException { | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public ConnectionRecordSet sort(SortableProperty property, boolean desc) | ||||
|             throws GuacamoleException { | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -33,6 +33,7 @@ import org.glyptodon.guacamole.net.auth.ActiveConnection; | ||||
| import org.glyptodon.guacamole.net.auth.AuthenticationProvider; | ||||
| import org.glyptodon.guacamole.net.auth.Connection; | ||||
| import org.glyptodon.guacamole.net.auth.ConnectionGroup; | ||||
| import org.glyptodon.guacamole.net.auth.ConnectionRecordSet; | ||||
| import org.glyptodon.guacamole.net.auth.Directory; | ||||
| import org.glyptodon.guacamole.net.auth.User; | ||||
| import org.glyptodon.guacamole.net.auth.UserContext; | ||||
| @@ -200,6 +201,12 @@ public class SimpleUserContext implements UserContext { | ||||
|         return new SimpleDirectory<ActiveConnection>(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public ConnectionRecordSet getConnectionHistory() | ||||
|             throws GuacamoleException { | ||||
|         return new SimpleConnectionRecordSet(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Collection<Form> getUserAttributes() { | ||||
|         return Collections.<Form>emptyList(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user