From c991ea46bc406dbf3973ebffb7a374e71379229e Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Tue, 12 Sep 2017 12:18:05 -0700 Subject: [PATCH] GUACAMOLE-394: Split ConnectionRecord model and ModeledConnectionRecord into ActivityRecordModel and ModeledActivityRecord, etc. mirroring changes to guacamole-ext. --- .../auth/jdbc/base/ActivityRecordModel.java | 167 ++++++++++++++++++ .../ActivityRecordSearchTerm.java} | 18 +- .../ActivityRecordSortPredicate.java} | 18 +- .../auth/jdbc/base/ModeledActivityRecord.java | 73 ++++++++ .../connection/ConnectionRecordMapper.java | 10 +- .../connection/ConnectionRecordModel.java | 135 +------------- .../jdbc/connection/ConnectionRecordSet.java | 14 +- .../jdbc/connection/ConnectionService.java | 6 +- .../connection/ModeledConnectionRecord.java | 31 +--- 9 files changed, 282 insertions(+), 190 deletions(-) create mode 100644 extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ActivityRecordModel.java rename extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/{connection/ConnectionRecordSearchTerm.java => base/ActivityRecordSearchTerm.java} (93%) rename extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/{connection/ConnectionRecordSortPredicate.java => base/ActivityRecordSortPredicate.java} (77%) create mode 100644 extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ModeledActivityRecord.java diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ActivityRecordModel.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ActivityRecordModel.java new file mode 100644 index 000000000..86f2204a2 --- /dev/null +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ActivityRecordModel.java @@ -0,0 +1,167 @@ +/* + * 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.base; + +import java.util.Date; + +/** + * A single activity record representing an arbitrary activity performed by a + * user. + */ +public class ActivityRecordModel { + + /** + * The database ID of the user associated with this activity record. + */ + private Integer userID; + + /** + * The username of the user that performed the activity. + */ + private String username; + + /** + * The remote host associated with the user that performed the activity. + */ + private String remoteHost; + + /** + * The time the activity was initiated by the associated user. + */ + private Date startDate; + + /** + * The time the activity ended, or null if the end time is not known or + * the activity is still in progress. + */ + private Date endDate; + + /** + * Returns the database ID of the user associated with this activity + * record. + * + * @return + * The database ID of the user associated with this activity record. + */ + public Integer getUserID() { + return userID; + } + + /** + * Sets the database ID of the user associated with this activity record. + * + * @param userID + * The database ID of the user to associate with this activity + * record. + */ + public void setUserID(Integer userID) { + this.userID = userID; + } + + /** + * Returns the username of the user that performed the activity associated + * with this record. + * + * @return + * The username of the user that performed the activity associated with + * this record. + */ + public String getUsername() { + return username; + } + + /** + * Sets the username of the user that performed the activity associated + * with this record. + * + * @param username + * The username of the user that performed the activity associated with + * this record. + */ + public void setUsername(String username) { + this.username = username; + } + + /** + * Returns the remote host associated with the user that performed the + * activity. + * + * @return + * The remote host associated with the user that performed the activity. + */ + public String getRemoteHost() { + return remoteHost; + } + + /** + * Sets the remote host associated with the user that performed the + * activity. + * + * @param remoteHost + * The remote host associated with the user that performed the activity. + */ + public void setRemoteHost(String remoteHost) { + this.remoteHost = remoteHost; + } + + /** + * Returns the time the activity was initiated by the associated user. + * + * @return + * The time the activity was initiated by the associated user. + */ + public Date getStartDate() { + return startDate; + } + + /** + * Sets the time the activity was initiated by the associated user. + * + * @param startDate + * The time the activity was initiated by the associated user. + */ + public void setStartDate(Date startDate) { + this.startDate = startDate; + } + + /** + * Returns the time the activity ended, or null if the end time is not + * known or the activity is still in progress. + * + * @return + * The time the activity ended, or null if the end time is not known or + * the activity is still in progress. + */ + public Date getEndDate() { + return endDate; + } + + /** + * Sets the time the activity ended, if known. + * + * @param endDate + * The time the activity ended, or null if the end time is not known or + * the activity is still in progress. + */ + public void setEndDate(Date endDate) { + this.endDate = endDate; + } + +} diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordSearchTerm.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ActivityRecordSearchTerm.java similarity index 93% rename from extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordSearchTerm.java rename to extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ActivityRecordSearchTerm.java index 844eff7c0..54af1a694 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordSearchTerm.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ActivityRecordSearchTerm.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.guacamole.auth.jdbc.connection; +package org.apache.guacamole.auth.jdbc.base; import java.util.Calendar; import java.util.Date; @@ -25,11 +25,11 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; /** - * A search term for querying historical connection records. This will contain - * a the search term in string form and, if that string appears to be a date. a - * corresponding date range. + * A search term for querying historical records of arbitrary activities. This + * will contain a the search term in string form and, if that string appears to + * be a date. a corresponding date range. */ -public class ConnectionRecordSearchTerm { +public class ActivityRecordSearchTerm { /** * A pattern that can match a year, year and month, or year and month and @@ -180,7 +180,7 @@ public class ConnectionRecordSearchTerm { } /** - * Creates a new ConnectionRecordSearchTerm representing the given string. + * Creates a new ActivityRecordSearchTerm representing the given string. * If the given string appears to be a date, the start and end dates of the * implied date range will be automatically determined and made available * via getStartDate() and getEndDate() respectively. @@ -188,7 +188,7 @@ public class ConnectionRecordSearchTerm { * @param term * The string that should be searched for. */ - public ConnectionRecordSearchTerm(String term) { + public ActivityRecordSearchTerm(String term) { // Search terms absolutely must not be null if (term == null) @@ -281,10 +281,10 @@ public class ConnectionRecordSearchTerm { @Override public boolean equals(Object obj) { - if (obj == null || !(obj instanceof ConnectionRecordSearchTerm)) + if (obj == null || !(obj instanceof ActivityRecordSearchTerm)) return false; - return ((ConnectionRecordSearchTerm) obj).getTerm().equals(getTerm()); + return ((ActivityRecordSearchTerm) obj).getTerm().equals(getTerm()); } diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordSortPredicate.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ActivityRecordSortPredicate.java similarity index 77% rename from extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordSortPredicate.java rename to extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ActivityRecordSortPredicate.java index 69eee780b..ab0d3ce11 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordSortPredicate.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ActivityRecordSortPredicate.java @@ -17,18 +17,18 @@ * under the License. */ -package org.apache.guacamole.auth.jdbc.connection; +package org.apache.guacamole.auth.jdbc.base; import org.apache.guacamole.net.auth.ActivityRecordSet; /** - * A sort predicate which species the property to use when sorting connection + * A sort predicate which species the property to use when sorting activity * records, along with the sort order. */ -public class ConnectionRecordSortPredicate { +public class ActivityRecordSortPredicate { /** - * The property to use when sorting ConnectionRecords. + * The property to use when sorting ActivityRecords. */ private final ActivityRecordSet.SortableProperty property; @@ -38,26 +38,26 @@ public class ConnectionRecordSortPredicate { private final boolean descending; /** - * Creates a new ConnectionRecordSortPredicate with the given sort property + * Creates a new ActivityRecordSortPredicate with the given sort property * and sort order. * * @param property - * The property to use when sorting ConnectionRecords. + * The property to use when sorting ActivityRecords. * * @param descending * Whether the sort order is descending (true) or ascending (false). */ - public ConnectionRecordSortPredicate(ActivityRecordSet.SortableProperty property, + public ActivityRecordSortPredicate(ActivityRecordSet.SortableProperty property, boolean descending) { this.property = property; this.descending = descending; } /** - * Returns the property that should be used when sorting ConnectionRecords. + * Returns the property that should be used when sorting ActivityRecords. * * @return - * The property that should be used when sorting ConnectionRecords. + * The property that should be used when sorting ActivityRecords. */ public ActivityRecordSet.SortableProperty getProperty() { return property; diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ModeledActivityRecord.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ModeledActivityRecord.java new file mode 100644 index 000000000..95b1a256d --- /dev/null +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ModeledActivityRecord.java @@ -0,0 +1,73 @@ +/* + * 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.base; + + +import java.util.Date; +import org.apache.guacamole.net.auth.ActivityRecord; + +/** + * An ActivityRecord which is backed by a database model. + */ +public class ModeledActivityRecord implements ActivityRecord { + + /** + * The model object backing this activity record. + */ + private final ActivityRecordModel model; + + /** + * Creates a new ModeledActivityRecord backed by the given model object. + * Changes to this record will affect the backing model object, and changes + * to the backing model object will affect this record. + * + * @param model + * The model object to use to back this activity record. + */ + public ModeledActivityRecord(ActivityRecordModel model) { + this.model = model; + } + + @Override + public Date getStartDate() { + return model.getStartDate(); + } + + @Override + public Date getEndDate() { + return model.getEndDate(); + } + + @Override + public String getRemoteHost() { + return model.getRemoteHost(); + } + + @Override + public String getUsername() { + return model.getUsername(); + } + + @Override + public boolean isActive() { + return false; + } + +} diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordMapper.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordMapper.java index aefff9239..637fd0fed 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordMapper.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordMapper.java @@ -21,6 +21,8 @@ package org.apache.guacamole.auth.jdbc.connection; import java.util.Collection; import java.util.List; +import org.apache.guacamole.auth.jdbc.base.ActivityRecordSearchTerm; +import org.apache.guacamole.auth.jdbc.base.ActivityRecordSortPredicate; import org.apache.ibatis.annotations.Param; import org.apache.guacamole.auth.jdbc.user.UserModel; @@ -75,8 +77,8 @@ public interface ConnectionRecordMapper { * @return * The results of the search performed with the given parameters. */ - List search(@Param("terms") Collection terms, - @Param("sortPredicates") List sortPredicates, + List search(@Param("terms") Collection terms, + @Param("sortPredicates") List sortPredicates, @Param("limit") int limit); /** @@ -104,8 +106,8 @@ public interface ConnectionRecordMapper { * The results of the search performed with the given parameters. */ List searchReadable(@Param("user") UserModel user, - @Param("terms") Collection terms, - @Param("sortPredicates") List sortPredicates, + @Param("terms") Collection terms, + @Param("sortPredicates") List sortPredicates, @Param("limit") int limit); } diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordModel.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordModel.java index f142f4e8f..29c55569d 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordModel.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordModel.java @@ -19,14 +19,14 @@ package org.apache.guacamole.auth.jdbc.connection; -import java.util.Date; +import org.apache.guacamole.auth.jdbc.base.ActivityRecordModel; /** * A single connection record representing a past usage of a particular * connection. If the connection was being shared, the sharing profile used to * join the connection is included in the record. */ -public class ConnectionRecordModel { +public class ConnectionRecordModel extends ActivityRecordModel { /** * The identifier of the connection associated with this connection record. @@ -53,32 +53,6 @@ public class ConnectionRecordModel { */ private String sharingProfileName; - /** - * The database ID of the user associated with this connection record. - */ - private Integer userID; - - /** - * The username of the user associated with this connection record. - */ - private String username; - - /** - * The remote host associated with this connection record. - */ - private String remoteHost; - - /** - * The time the connection was initiated by the associated user. - */ - private Date startDate; - - /** - * The time the connection ended, or null if the end time is not known or - * the connection is still running. - */ - private Date endDate; - /** * Returns the identifier of the connection associated with this connection * record. @@ -179,109 +153,4 @@ public class ConnectionRecordModel { this.sharingProfileName = sharingProfileName; } - /** - * Returns the database ID of the user associated with this connection - * record. - * - * @return - * The database ID of the user associated with this connection record. - */ - public Integer getUserID() { - return userID; - } - - /** - * Sets the database ID of the user associated with this connection record. - * - * @param userID - * The database ID of the user to associate with this connection - * record. - */ - public void setUserID(Integer userID) { - this.userID = userID; - } - - /** - * Returns the username of the user associated with this connection record. - * - * @return - * The username of the user associated with this connection record. - */ - public String getUsername() { - return username; - } - - /** - * Sets the username of the user associated with this connection record. - * - * @param username - * The username of the user to associate with this connection record. - */ - public void setUsername(String username) { - this.username = username; - } - - /** - * Returns the remote host associated with this connection record. - * - * @return - * The remote host associated with this connection record. - */ - public String getRemoteHost() { - return remoteHost; - } - - /** - * Sets the remote host associated with this connection record. - * - * @param remoteHost - * The remote host to associate with this connection record. - */ - public void setRemoteHost(String remoteHost) { - this.remoteHost = remoteHost; - } - - /** - * Returns the date that the associated connection was established. - * - * @return - * The date the associated connection was established. - */ - public Date getStartDate() { - return startDate; - } - - /** - * Sets the date that the associated connection was established. - * - * @param startDate - * The date that the associated connection was established. - */ - public void setStartDate(Date startDate) { - this.startDate = startDate; - } - - /** - * Returns the date that the associated connection ended, or null if no - * end date was recorded. The lack of an end date does not necessarily - * mean that the connection is still active. - * - * @return - * The date the associated connection ended, or null if no end date was - * recorded. - */ - public Date getEndDate() { - return endDate; - } - - /** - * Sets the date that the associated connection ended. - * - * @param endDate - * The date that the associated connection ended. - */ - public void setEndDate(Date endDate) { - this.endDate = endDate; - } - } diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordSet.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordSet.java index 7b3d629c4..df2a0a9ea 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordSet.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionRecordSet.java @@ -26,6 +26,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import org.apache.guacamole.GuacamoleException; +import org.apache.guacamole.auth.jdbc.base.ActivityRecordSearchTerm; +import org.apache.guacamole.auth.jdbc.base.ActivityRecordSortPredicate; import org.apache.guacamole.auth.jdbc.base.RestrictedObject; import org.apache.guacamole.net.auth.ActivityRecordSet; import org.apache.guacamole.net.auth.ActivityRecordSet.SortableProperty; @@ -52,8 +54,8 @@ public class ConnectionRecordSet extends RestrictedObject * connection record not matching each of the strings within the collection * will be excluded from the results. */ - private final Set requiredContents = - new HashSet(); + private final Set requiredContents = + new HashSet(); /** * The maximum number of connection history records that should be returned @@ -66,8 +68,8 @@ public class ConnectionRecordSet extends RestrictedObject * records, describing the properties involved and the sort order for those * properties. */ - private final List connectionRecordSortPredicates = - new ArrayList(); + private final List connectionRecordSortPredicates = + new ArrayList(); @Override public Collection asCollection() @@ -79,7 +81,7 @@ public class ConnectionRecordSet extends RestrictedObject @Override public ConnectionRecordSet contains(String value) throws GuacamoleException { - requiredContents.add(new ConnectionRecordSearchTerm(value)); + requiredContents.add(new ActivityRecordSearchTerm(value)); return this; } @@ -93,7 +95,7 @@ public class ConnectionRecordSet extends RestrictedObject public ConnectionRecordSet sort(SortableProperty property, boolean desc) throws GuacamoleException { - connectionRecordSortPredicates.add(new ConnectionRecordSortPredicate( + connectionRecordSortPredicates.add(new ActivityRecordSortPredicate( property, desc )); 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 f25632429..983f395f7 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 @@ -34,6 +34,8 @@ import org.apache.guacamole.auth.jdbc.tunnel.GuacamoleTunnelService; import org.apache.guacamole.GuacamoleClientException; import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.GuacamoleSecurityException; +import org.apache.guacamole.auth.jdbc.base.ActivityRecordSearchTerm; +import org.apache.guacamole.auth.jdbc.base.ActivityRecordSortPredicate; import org.apache.guacamole.auth.jdbc.base.ModeledChildDirectoryObjectService; import org.apache.guacamole.auth.jdbc.permission.ConnectionPermissionMapper; import org.apache.guacamole.auth.jdbc.permission.ObjectPermissionMapper; @@ -460,8 +462,8 @@ public class ConnectionService extends ModeledChildDirectoryObjectService retrieveHistory(ModeledAuthenticatedUser user, - Collection requiredContents, - List sortPredicates, int limit) + Collection requiredContents, + List sortPredicates, int limit) throws GuacamoleException { List searchResults; diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnectionRecord.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnectionRecord.java index a5e83d413..9f34385cf 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnectionRecord.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnectionRecord.java @@ -20,13 +20,14 @@ package org.apache.guacamole.auth.jdbc.connection; -import java.util.Date; +import org.apache.guacamole.auth.jdbc.base.ModeledActivityRecord; import org.apache.guacamole.net.auth.ConnectionRecord; /** * A ConnectionRecord which is backed by a database model. */ -public class ModeledConnectionRecord implements ConnectionRecord { +public class ModeledConnectionRecord extends ModeledActivityRecord + implements ConnectionRecord { /** * The model object backing this connection record. @@ -42,6 +43,7 @@ public class ModeledConnectionRecord implements ConnectionRecord { * The model object to use to back this connection record. */ public ModeledConnectionRecord(ConnectionRecordModel model) { + super(model); this.model = model; } @@ -65,29 +67,4 @@ public class ModeledConnectionRecord implements ConnectionRecord { return model.getSharingProfileName(); } - @Override - public Date getStartDate() { - return model.getStartDate(); - } - - @Override - public Date getEndDate() { - return model.getEndDate(); - } - - @Override - public String getRemoteHost() { - return model.getRemoteHost(); - } - - @Override - public String getUsername() { - return model.getUsername(); - } - - @Override - public boolean isActive() { - return false; - } - }