You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/10/12 16:10:00 UTC

[1/2] openmeetings git commit: [OPENMEETINGS-1714] more work on duplicate removing

Repository: openmeetings
Updated Branches:
  refs/heads/master 7f482a049 -> 84a5c2f7f


[OPENMEETINGS-1714] more work on duplicate removing


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/a54e5b7d
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/a54e5b7d
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/a54e5b7d

Branch: refs/heads/master
Commit: a54e5b7d54a5106337a3981fd26b4d6abec35643
Parents: 7f482a0
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Thu Oct 12 21:50:12 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Thu Oct 12 21:50:12 2017 +0700

----------------------------------------------------------------------
 .../db/dao/basic/MailMessageDao.java            |  5 +-
 .../db/dao/calendar/OmCalendarDao.java          |  4 +-
 .../openmeetings/db/dao/room/RoomDao.java       |  7 ++
 .../openmeetings/db/dao/room/RoomGroupDao.java  | 63 ------------------
 .../db/dao/room/RoomModeratorDao.java           | 68 --------------------
 .../openmeetings/db/dao/server/OAuth2Dao.java   |  3 +
 .../db/entity/HistoricalEntity.java             | 67 +++++++++++++++++++
 .../db/entity/basic/Configuration.java          | 41 +-----------
 .../db/entity/basic/MailMessage.java            | 28 +-------
 .../db/entity/calendar/Appointment.java         | 42 +-----------
 .../db/entity/calendar/MeetingMember.java       | 40 +-----------
 .../db/entity/calendar/OmCalendar.java          | 34 +++++-----
 .../db/entity/file/BaseFileItem.java            | 41 +-----------
 .../db/entity/record/RecordingMetaData.java     | 39 +----------
 .../openmeetings/db/entity/room/Invitation.java | 43 ++-----------
 .../openmeetings/db/entity/room/Room.java       | 45 ++-----------
 .../openmeetings/db/entity/room/RoomGroup.java  | 36 -----------
 .../db/entity/room/RoomModerator.java           | 30 ++-------
 .../db/entity/server/LdapConfig.java            | 39 +----------
 .../db/entity/server/OAuthServer.java           | 18 +-----
 .../openmeetings/db/entity/user/Group.java      | 42 +-----------
 .../openmeetings/db/entity/user/GroupUser.java  | 28 +-------
 .../openmeetings/db/entity/user/User.java       | 40 +-----------
 .../openmeetings/backup/BackupExport.java       |  5 +-
 .../openmeetings/backup/BackupImport.java       | 20 ++++--
 .../java/org/apache/openmeetings/cli/Admin.java |  2 +
 .../installation/ImportInitvalues.java          |  1 -
 .../src/site/stylesheets/errortable.xsl         | 11 +---
 .../src/site/stylesheets/errorvalues.xml        | 27 --------
 .../classes/META-INF/db2_persistence.xml        |  1 +
 .../classes/META-INF/derby_persistence.xml      |  1 +
 .../classes/META-INF/mssql_persistence.xml      |  1 +
 .../classes/META-INF/mysql_persistence.xml      |  1 +
 .../classes/META-INF/oracle_persistence.xml     |  1 +
 .../classes/META-INF/postgresql_persistence.xml |  1 +
 .../openmeetings/backup/TestOldBackups.java     |  5 +-
 .../calendar/TestGetAppointment.java            |  1 -
 37 files changed, 166 insertions(+), 715 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
index f995dc5..f876df0 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.db.dao.basic;
 
 import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 
 import javax.persistence.EntityManager;
@@ -109,10 +110,10 @@ public class MailMessageDao implements IDataProviderDao<MailMessage> {
 	@Override
 	public MailMessage update(MailMessage m, Long userId) {
 		if (m.getId() == null) {
-			m.setInserted(Calendar.getInstance());
+			m.setInserted(new Date());
 			em.persist(m);
 		} else {
-			m.setUpdated(Calendar.getInstance());
+			m.setUpdated(new Date());
 			m = em.merge(m);
 		}
 		return m;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/OmCalendarDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/OmCalendarDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/OmCalendarDao.java
index c3cfb6d..018815a 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/OmCalendarDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/OmCalendarDao.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.dao.calendar;
 
+import java.util.Date;
 import java.util.List;
 
 import javax.persistence.EntityManager;
@@ -84,11 +85,12 @@ public class OmCalendarDao {
 	 */
 	public OmCalendar update(OmCalendar c) {
 		if (c.getId() == null) {
+			c.setInserted(new Date());
 			em.persist(c);
 		} else {
+			c.setUpdated(new Date());
 			c = em.merge(c);
 		}
-
 		return c;
 	}
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
index 747d571..ab05ec2 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
@@ -46,6 +46,7 @@ import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.Room.RoomElement;
 import org.apache.openmeetings.db.entity.room.Room.Type;
 import org.apache.openmeetings.db.entity.room.RoomFile;
+import org.apache.openmeetings.db.entity.room.RoomGroup;
 import org.apache.openmeetings.db.util.TimezoneUtil;
 import org.apache.openmeetings.util.DaoHelper;
 import org.red5.logging.Red5LoggerFactory;
@@ -314,8 +315,14 @@ public class RoomDao implements IGroupAdminDataProviderDao<Room> {
 		return result;
 	}
 
+	// Methods for backup export
 	public List<RoomFile> getFiles() {
 		return em.createQuery("SELECT rf FROM RoomFile rf", RoomFile.class)
 				.getResultList();
 	}
+
+	public List<RoomGroup> getGroups() {
+		return em.createQuery("SELECT rg FROM RoomGroup rg", RoomGroup.class)
+				.getResultList();
+	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomGroupDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomGroupDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomGroupDao.java
deleted file mode 100644
index 18a6a3f..0000000
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomGroupDao.java
+++ /dev/null
@@ -1,63 +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.openmeetings.db.dao.room;
-
-import java.util.Date;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-
-import org.apache.openmeetings.db.entity.room.RoomGroup;
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-@Repository
-@Transactional
-public class RoomGroupDao {
-	@PersistenceContext
-	private EntityManager em;
-
-	public List<RoomGroup> get() {
-		return em.createNamedQuery("getAllRoomGroups", RoomGroup.class).getResultList();
-	}
-
-	/**
-	 * @param entity to be updated
-	 */
-	public RoomGroup update(RoomGroup entity) {
-		if (entity.getId() == null) {
-			entity.setInserted(new Date());
-			em.persist(entity);
-		} else {
-			entity.setUpdated(new Date());
-			entity = em.merge(entity);
-		}
-		return entity;
-	}
-
-	public RoomGroup get(long groupId, long roomId) {
-		List<RoomGroup> ll = em.createNamedQuery("getRoomGroupByGroupIdAndRoomId", RoomGroup.class)
-				.setParameter("roomId", roomId)
-				.setParameter("groupId", groupId)
-				.getResultList();
-
-		return ll.isEmpty() ? null : ll.get(0);
-	}
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomModeratorDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomModeratorDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomModeratorDao.java
deleted file mode 100644
index f447dd5..0000000
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomModeratorDao.java
+++ /dev/null
@@ -1,68 +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.openmeetings.db.dao.room;
-
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-
-import org.apache.openmeetings.db.entity.room.RoomModerator;
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-@Repository
-@Transactional
-public class RoomModeratorDao {
-	@PersistenceContext
-	private EntityManager em;
-
-	public RoomModerator get(long id) {
-		List<RoomModerator> list = em.createNamedQuery("getRoomModeratorById", RoomModerator.class)
-				.setParameter("id", id).getResultList();
-		if (!list.isEmpty()) {
-			return list.get(0);
-		}
-		return null;
-	}
-
-	public List<RoomModerator> get(Collection<Long> ids) {
-		return em.createNamedQuery("getRoomModeratorsByIds", RoomModerator.class).setParameter("ids", ids).getResultList();
-	}
-
-	public List<RoomModerator> getByRoomId(long roomId) {
-		return em.createNamedQuery("getRoomModeratorByRoomId", RoomModerator.class).setParameter("roomId", roomId).getResultList();
-	}
-
-	/**
-	 * @param rm moderator to be updated
-	 */
-	public RoomModerator update(RoomModerator rm) {
-		if (rm.getId() == null) {
-			rm.setInserted(new Date());
-			em.persist(rm);
-		} else {
-			rm.setUpdated(new Date());
-			rm = em.merge(rm);
-		}
-		return rm;
-	}
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java
index 1c2ab37..b176960 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.dao.server;
 
+import java.util.Date;
 import java.util.List;
 
 import javax.persistence.EntityManager;
@@ -85,8 +86,10 @@ public class OAuth2Dao implements IDataProviderDao<OAuthServer> {
 	@Override
 	public OAuthServer update(OAuthServer server, Long userId) {
 		if (server.getId() == null) {
+			server.setInserted(new Date());
 			em.persist(server);
 		} else {
+			server.setUpdated(new Date());
 			server = em.merge(server);
 		}
 		return server;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/HistoricalEntity.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/HistoricalEntity.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/HistoricalEntity.java
new file mode 100644
index 0000000..1e4d3e7
--- /dev/null
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/HistoricalEntity.java
@@ -0,0 +1,67 @@
+/*
+ * 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.openmeetings.db.entity;
+
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.MappedSuperclass;
+
+import org.simpleframework.xml.Element;
+
+@MappedSuperclass
+public abstract class HistoricalEntity implements IDataProviderEntity {
+	private static final long serialVersionUID = 1L;
+
+	@Column(name = "inserted")
+	@Element(name = "created", data = true, required = false)
+	private Date inserted;
+
+	@Column(name = "updated")
+	@Element(name = "updated", data = true, required = false)
+	private Date updated;
+
+	@Column(name = "deleted", nullable = false)
+	@Element(data = true, required = false)
+	private boolean deleted;
+
+	public Date getInserted() {
+		return inserted;
+	}
+
+	public void setInserted(Date inserted) {
+		this.inserted = inserted;
+	}
+
+	public Date getUpdated() {
+		return updated;
+	}
+
+	public void setUpdated(Date updated) {
+		this.updated = updated;
+	}
+
+	public boolean isDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java
index 2e36c3b..3fc1448 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java
@@ -20,8 +20,6 @@ package org.apache.openmeetings.db.entity.basic;
 
 import static java.lang.Boolean.TRUE;
 
-import java.util.Date;
-
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -36,7 +34,7 @@ import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.HistoricalEntity;
 import org.apache.openmeetings.db.entity.user.User;
 import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
@@ -54,7 +52,7 @@ import org.simpleframework.xml.Root;
 })
 @Table(name = "configuration")
 @Root(name = "config")
-public class Configuration implements IDataProviderEntity {
+public class Configuration extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
 
 	public enum Type {
@@ -80,23 +78,12 @@ public class Configuration implements IDataProviderEntity {
 	@Element(name = "value", data = true, required = false)
 	private String value;
 
-	@Column(name = "inserted")
-	@Element(name = "created", data = true, required = false)
-	private Date inserted;
-
-	@Column(name = "updated")
-	@Element(name = "updated", data = true, required = false)
-	private Date updated;
 
 	@Lob
 	@Column(name = "comment", length = 2048)
 	@Element(data = true, required = false)
 	private String comment;
 
-	@Column(name = "deleted", nullable = false)
-	@Element(data = true)
-	private boolean deleted;
-
 	@Column(name = "fromVersion")
 	@Element(data = true, required = false)
 	private String fromVersion;
@@ -149,30 +136,6 @@ public class Configuration implements IDataProviderEntity {
 		this.id = id;
 	}
 
-	public Date getInserted() {
-		return inserted;
-	}
-
-	public void setInserted(Date inserted) {
-		this.inserted = inserted;
-	}
-
-	public Date getUpdated() {
-		return updated;
-	}
-
-	public void setUpdated(Date updated) {
-		this.updated = updated;
-	}
-
-	public boolean isDeleted() {
-		return deleted;
-	}
-
-	public void setDeleted(boolean deleted) {
-		this.deleted = deleted;
-	}
-
 	public User getUser() {
 		return user;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
index e77cd66..671a060 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
@@ -18,8 +18,6 @@
  */
 package org.apache.openmeetings.db.entity.basic;
 
-import java.util.Calendar;
-
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.EnumType;
@@ -32,7 +30,7 @@ import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.HistoricalEntity;
 
 @Entity
 @NamedQueries({
@@ -44,7 +42,7 @@ import org.apache.openmeetings.db.entity.IDataProviderEntity;
 	, @NamedQuery(name = "resetMailStatusById", query = "UPDATE MailMessage m SET m.errorCount = 0, m.status = :noneStatus WHERE m.id = :id")
 })
 @Table(name = "email_queue")
-public class MailMessage implements IDataProviderEntity {
+public class MailMessage extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
 
 	public enum Status {
@@ -78,12 +76,6 @@ public class MailMessage implements IDataProviderEntity {
 	@Enumerated(EnumType.STRING)
 	private Status status = Status.NONE;
 
-	@Column(name = "inserted")
-	private Calendar inserted;
-
-	@Column(name = "updated")
-	private Calendar updated;
-
 	@Column(name = "error_count", nullable = false)
 	private int errorCount = 0;
 
@@ -157,22 +149,6 @@ public class MailMessage implements IDataProviderEntity {
 		this.status = status;
 	}
 
-	public Calendar getInserted() {
-		return inserted;
-	}
-
-	public void setInserted(Calendar inserted) {
-		this.inserted = inserted;
-	}
-
-	public Calendar getUpdated() {
-		return updated;
-	}
-
-	public void setUpdated(Calendar updated) {
-		this.updated = updated;
-	}
-
 	public byte[] getIcs() {
 		return ics;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
index a010e6d..d3abe05 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
@@ -41,7 +41,7 @@ import javax.persistence.OneToMany;
 import javax.persistence.Table;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.HistoricalEntity;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.User;
 import org.simpleframework.xml.Element;
@@ -118,7 +118,7 @@ import org.simpleframework.xml.Root;
 		query = "UPDATE Appointment a SET a.deleted = true WHERE a.calendar.id = :calId")
 })
 @Root(name = "appointment")
-public class Appointment implements IDataProviderEntity {
+public class Appointment extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
 	public static final int REMINDER_NONE_ID = 1;
 	public static final int REMINDER_EMAIL_ID = 2;
@@ -194,18 +194,6 @@ public class Appointment implements IDataProviderEntity {
 	@Element(name = "users_id", data = true, required = false)
 	private User owner;
 
-	@Column(name = "inserted")
-	@Element(name = "inserted", data = true, required = false)
-	private Date inserted;
-
-	@Column(name = "updated")
-	@Element(name = "updated", data = true, required = false)
-	private Date updated;
-
-	@Column(name = "deleted", nullable = false)
-	@Element(data = true)
-	private boolean deleted;
-
 	@Column(name = "reminder")
 	@Enumerated(EnumType.STRING)
 	@Element(name = "typId", data = true, required = false)
@@ -353,30 +341,6 @@ public class Appointment implements IDataProviderEntity {
 		this.reminder = reminder;
 	}
 
-	public Date getInserted() {
-		return inserted;
-	}
-
-	public void setInserted(Date inserted) {
-		this.inserted = inserted;
-	}
-
-	public Date getUpdated() {
-		return updated;
-	}
-
-	public void setUpdated(Date updated) {
-		this.updated = updated;
-	}
-
-	public boolean isDeleted() {
-		return deleted;
-	}
-
-	public void setDeleted(boolean deleted) {
-		this.deleted = deleted;
-	}
-
 	public Boolean getIsWeekly() {
 		return isWeekly;
 	}
@@ -500,6 +464,6 @@ public class Appointment implements IDataProviderEntity {
 	@Override
 	public String toString() {
 		return "Appointment [id=" + id + ", title=" + title + ", start=" + start + ", end=" + end + ", owner=" + owner
-				+ ", deleted=" + deleted + ", icalId=" + icalId + ", calendar=" + calendar + ", href=" + href + ", etag=" + etag + "]";
+				+ ", deleted=" + isDeleted() + ", icalId=" + icalId + ", calendar=" + calendar + ", href=" + href + ", etag=" + etag + "]";
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
index c8b22a1..4dfce4e 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
@@ -18,8 +18,6 @@
  */
 package org.apache.openmeetings.db.entity.calendar;
 
-import java.util.Date;
-
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -35,7 +33,7 @@ import javax.persistence.OneToOne;
 import javax.persistence.Table;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.HistoricalEntity;
 import org.apache.openmeetings.db.entity.room.Invitation;
 import org.apache.openmeetings.db.entity.user.User;
 import org.simpleframework.xml.Element;
@@ -51,7 +49,7 @@ import org.simpleframework.xml.Root;
 			, query="SELECT mm.id FROM MeetingMember mm WHERE mm.deleted = false AND mm.appointment.id = :id")
 })
 @Root(name = "meetingmember")
-public class MeetingMember implements IDataProviderEntity {
+public class MeetingMember extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
 	@Id
 	@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -75,16 +73,6 @@ public class MeetingMember implements IDataProviderEntity {
 	@Element(data = true, required = false)
 	private String appointmentStatus; // status of the appointment denial, acceptance, wait.
 
-	@Column(name = "inserted")
-	private Date inserted;
-
-	@Column(name = "updated")
-	private Date updated;
-
-	@Column(name = "deleted", nullable = false)
-	@Element(data = true)
-	private boolean deleted;
-
 	@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
 	@JoinColumn(name = "invitation_id", nullable = true)
 	@ForeignKey(enabled = true)
@@ -135,30 +123,6 @@ public class MeetingMember implements IDataProviderEntity {
 		this.invitation = invitation;
 	}
 
-	public Date getInserted() {
-		return inserted;
-	}
-
-	public void setInserted(Date inserted) {
-		this.inserted = inserted;
-	}
-
-	public Date getUpdated() {
-		return updated;
-	}
-
-	public void setUpdated(Date updated) {
-		this.updated = updated;
-	}
-
-	public boolean isDeleted() {
-		return deleted;
-	}
-
-	public void setDeleted(boolean deleted) {
-		this.deleted = deleted;
-	}
-
 	public boolean isConnectedEvent() {
 		return connectedEvent;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/OmCalendar.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/OmCalendar.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/OmCalendar.java
index c1729af..f7e7bae 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/OmCalendar.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/OmCalendar.java
@@ -18,14 +18,26 @@
  */
 package org.apache.openmeetings.db.entity.calendar;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.HistoricalEntity;
 import org.apache.openmeetings.db.entity.user.User;
 import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
-import javax.persistence.*;
-
 @Entity
 @Table(name = "om_calendar")
 @NamedQueries({
@@ -48,7 +60,7 @@ import javax.persistence.*;
 				+ "	AND a.owner.id = :userId AND a.calendar.id = :calId  "),
 		@NamedQuery(name = "getCalendarbyId", query = "SELECT c FROM OmCalendar c WHERE c.deleted = false AND c.id = :calId") })
 @Root(name = "calendar")
-public class OmCalendar implements IDataProviderEntity {
+public class OmCalendar extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
 
 	public enum SyncType {
@@ -75,10 +87,6 @@ public class OmCalendar implements IDataProviderEntity {
 	@Element(name = "token", data = true, required = false)
 	private String token;
 
-	@Column(name = "deleted", nullable = false)
-	@Element(name = "deleted", data = true)
-	private boolean deleted;
-
 	@Column(name = "sync_type")
 	@Enumerated(EnumType.STRING)
 	@Element(name = "syncType", data = true)
@@ -125,14 +133,6 @@ public class OmCalendar implements IDataProviderEntity {
 		this.token = token;
 	}
 
-	public boolean isDeleted() {
-		return deleted;
-	}
-
-	public void setDeleted(boolean deleted) {
-		this.deleted = deleted;
-	}
-
 	public SyncType getSyncType() {
 		return syncType;
 	}
@@ -152,6 +152,6 @@ public class OmCalendar implements IDataProviderEntity {
 	@Override
 	public String toString() {
 		return "Calendar [ id=" + id + ", title=" + title + ", token=" + token + ", href=" + href + ", SyncType="
-				+ syncType + ", deleted=" + deleted + ", owner=" + owner + " ]";
+				+ syncType + ", deleted=" + isDeleted() + ", owner=" + owner + " ]";
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
index bf24fae..7342c6a 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
@@ -30,7 +30,6 @@ import static org.apache.openmeetings.util.OmFileHelper.getUploadFilesDir;
 import static org.apache.openmeetings.util.OmFileHelper.getUploadWmlDir;
 
 import java.io.File;
-import java.util.Date;
 import java.util.List;
 
 import javax.persistence.Column;
@@ -48,7 +47,7 @@ import javax.persistence.Table;
 import javax.persistence.Transient;
 import javax.xml.bind.annotation.XmlType;
 
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.HistoricalEntity;
 import org.simpleframework.xml.Element;
 
 @Entity
@@ -67,7 +66,7 @@ import org.simpleframework.xml.Element;
 })
 @Table(name = "file")
 @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
-public abstract class BaseFileItem implements IDataProviderEntity {
+public abstract class BaseFileItem extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
 
 	@XmlType(namespace = "org.apache.openmeetings.file")
@@ -107,18 +106,6 @@ public abstract class BaseFileItem implements IDataProviderEntity {
 	@Element(data = true, required = false)
 	private Long insertedBy;
 
-	@Column(name = "inserted")
-	@Element(data = true, required = false)
-	private Date inserted;
-
-	@Column(name = "updated")
-	@Element(data = true, required = false)
-	private Date updated;
-
-	@Column(name = "deleted", nullable = false)
-	@Element(data = true)
-	private boolean deleted;
-
 	@Column(name = "width")
 	@Element(data = true, required = false)
 	private Integer width;
@@ -205,30 +192,6 @@ public abstract class BaseFileItem implements IDataProviderEntity {
 		this.insertedBy = insertedBy;
 	}
 
-	public Date getInserted() {
-		return inserted;
-	}
-
-	public void setInserted(Date inserted) {
-		this.inserted = inserted;
-	}
-
-	public Date getUpdated() {
-		return updated;
-	}
-
-	public void setUpdated(Date updated) {
-		this.updated = updated;
-	}
-
-	public boolean isDeleted() {
-		return deleted;
-	}
-
-	public void setDeleted(boolean deleted) {
-		this.deleted = deleted;
-	}
-
 	public Integer getWidth() {
 		return width;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingMetaData.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingMetaData.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingMetaData.java
index 6865cd2..5730b9b 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingMetaData.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingMetaData.java
@@ -36,7 +36,7 @@ import javax.persistence.Table;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.HistoricalEntity;
 import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
@@ -60,7 +60,7 @@ import org.simpleframework.xml.Root;
 })
 @Table(name = "recording_metadata")
 @Root(name = "flvrecordingmetadata")
-public class RecordingMetaData implements IDataProviderEntity {
+public class RecordingMetaData extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
 	@XmlType(namespace="org.apache.openmeetings.record.meta")
 	public enum Status {
@@ -113,17 +113,6 @@ public class RecordingMetaData implements IDataProviderEntity {
 	@Element(data = true, required = false)
 	private Long insertedBy;
 
-	@Column(name = "inserted")
-	@Element(data = true)
-	private Date inserted;
-
-	@Column(name = "updated")
-	@Element(data = true, required = false)
-	private Date updated;
-
-	@Column(name = "deleted", nullable = false)
-	private boolean deleted;
-
 	@Column(name = "wav_audio_data")
 	@Element(data = true, required = false)
 	private String wavAudioData;
@@ -214,30 +203,6 @@ public class RecordingMetaData implements IDataProviderEntity {
 		this.insertedBy = insertedBy;
 	}
 
-	public Date getInserted() {
-		return inserted;
-	}
-
-	public void setInserted(Date inserted) {
-		this.inserted = inserted;
-	}
-
-	public boolean isDeleted() {
-		return deleted;
-	}
-
-	public void setDeleted(boolean deleted) {
-		this.deleted = deleted;
-	}
-
-	public Date getUpdated() {
-		return updated;
-	}
-
-	public void setUpdated(Date updated) {
-		this.updated = updated;
-	}
-
 	public boolean isScreenData() {
 		return screenData;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java
index bd002aa..e82700f 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java
@@ -37,7 +37,7 @@ import javax.persistence.Table;
 import javax.persistence.Transient;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.HistoricalEntity;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.db.entity.user.User;
@@ -49,7 +49,7 @@ import org.apache.openmeetings.db.entity.user.User;
 	@NamedQuery(name = "getInvitationByAppointment", query = "SELECT i FROM Invitation i WHERE i.appointment.id = :appointmentId  ")
 })
 @Table(name = "invitation")
-public class Invitation implements IDataProviderEntity {
+public class Invitation extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
 
 	public enum MessageType {
@@ -78,15 +78,6 @@ public class Invitation implements IDataProviderEntity {
 	@ForeignKey(enabled = true)
 	private User invitedBy;
 
-	@Column(name = "inserted")
-	private Date inserted;
-
-	@Column(name = "updated")
-	private Date updated;
-
-	@Column(name = "deleted", nullable = false)
-	private boolean deleted;
-
 	@ManyToOne(fetch = FetchType.EAGER)
 	@JoinColumn(name = "room_id", nullable = true)
 	@ForeignKey(enabled = true)
@@ -143,9 +134,9 @@ public class Invitation implements IDataProviderEntity {
 	public Invitation(Invitation i) {
 		id = i.id;
 		invitedBy = i.invitedBy;
-		inserted = i.inserted;
-		updated = i.updated;
-		deleted = i.deleted;
+		setInserted(i.getInserted());
+		setUpdated(i.getUpdated());
+		setDeleted(i.isDeleted());
 		room = i.room;
 		recording = i.recording;
 		hash = i.hash;
@@ -193,30 +184,6 @@ public class Invitation implements IDataProviderEntity {
 		this.invitedBy = invitedBy;
 	}
 
-	public Date getInserted() {
-		return inserted;
-	}
-
-	public void setInserted(Date inserted) {
-		this.inserted = inserted;
-	}
-
-	public Date getUpdated() {
-		return updated;
-	}
-
-	public void setUpdated(Date updated) {
-		this.updated = updated;
-	}
-
-	public boolean isDeleted() {
-		return deleted;
-	}
-
-	public void setDeleted(boolean deleted) {
-		this.deleted = deleted;
-	}
-
 	public String getHash() {
 		return hash;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
index 4da21d5..48a3614 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
@@ -19,7 +19,6 @@
 package org.apache.openmeetings.db.entity.room;
 
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -52,7 +51,7 @@ import org.apache.openjpa.persistence.FetchAttribute;
 import org.apache.openjpa.persistence.FetchGroup;
 import org.apache.openjpa.persistence.FetchGroups;
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.HistoricalEntity;
 import org.simpleframework.xml.Element;
 import org.simpleframework.xml.ElementList;
 import org.simpleframework.xml.Root;
@@ -79,15 +78,15 @@ import org.simpleframework.xml.Root;
 	@NamedQuery(name = "countRooms", query = "SELECT COUNT(r) FROM Room r WHERE r.deleted = false"),
 	@NamedQuery(name = "getBackupRooms", query = "SELECT r FROM Room r ORDER BY r.id"),
 	@NamedQuery(name = "getRoomsCapacityByIds", query = "SELECT SUM(r.capacity) FROM Room r WHERE r.deleted = false AND r.id IN :ids")
-	, @NamedQuery(name = "getGroupRooms", query = "SELECT DISTINCT r.room FROM RoomGroup r LEFT JOIN FETCH r.room "
-			+ "WHERE r.group.id = :groupId AND r.deleted = false AND r.room.deleted = false AND r.room.appointment = false "
-			+ "AND r.group.deleted = false ORDER BY r.room.name ASC")
+	, @NamedQuery(name = "getGroupRooms", query = "SELECT DISTINCT rg.room FROM RoomGroup rg LEFT JOIN FETCH rg.room "
+			+ "WHERE rg.group.id = :groupId AND rg.room.deleted = false AND rg.room.appointment = false "
+			+ "ORDER BY rg.room.name ASC")
 })
 @Table(name = "room")
 @Root(name = "room")
 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)
-public class Room implements IDataProviderEntity {
+public class Room extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
 	public static final int CONFERENCE_TYPE_ID = 1;
 	public static final int PRESENTATION_TYPE_ID = 3;
@@ -177,16 +176,6 @@ public class Room implements IDataProviderEntity {
 	@Element(name = "roomtypeId", data = true, required = false)
 	private Type type = Type.conference;
 
-	@Column(name = "inserted")
-	private Date inserted;
-
-	@Column(name = "updated")
-	private Date updated;
-
-	@Column(name = "deleted", nullable = false)
-	@Element(data = true)
-	private boolean deleted;
-
 	@Column(name = "ispublic", nullable = false)
 	@Element(name = "ispublic", data = true, required = false)
 	private boolean ispublic;
@@ -344,30 +333,6 @@ public class Room implements IDataProviderEntity {
 		this.type = type;
 	}
 
-	public Date getInserted() {
-		return inserted;
-	}
-
-	public void setInserted(Date inserted) {
-		this.inserted = inserted;
-	}
-
-	public Date getUpdated() {
-		return updated;
-	}
-
-	public void setUpdated(Date updated) {
-		this.updated = updated;
-	}
-
-	public boolean isDeleted() {
-		return deleted;
-	}
-
-	public void setDeleted(boolean deleted) {
-		this.deleted = deleted;
-	}
-
 	public boolean getIspublic() {
 		return ispublic;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomGroup.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomGroup.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomGroup.java
index feb4625..ec9c655 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomGroup.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomGroup.java
@@ -18,8 +18,6 @@
  */
 package org.apache.openmeetings.db.entity.room;
 
-import java.util.Date;
-
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -83,16 +81,6 @@ public class RoomGroup implements IDataProviderEntity {
 	@Element(name = "organisation_id", data = true, required = false)
 	private Group group;
 
-	@Column(name = "inserted")
-	private Date inserted;
-
-	@Column(name = "updated")
-	private Date updated;
-
-	@Column(name = "deleted", nullable = false)
-	@Element(data = true)
-	private boolean deleted;
-
 	public RoomGroup() {
 		//def constructor
 	}
@@ -127,28 +115,4 @@ public class RoomGroup implements IDataProviderEntity {
 	public void setId(Long id) {
 		this.id = id;
 	}
-
-	public Date getInserted() {
-		return inserted;
-	}
-
-	public void setInserted(Date inserted) {
-		this.inserted = inserted;
-	}
-
-	public Date getUpdated() {
-		return updated;
-	}
-
-	public void setUpdated(Date updated) {
-		this.updated = updated;
-	}
-
-	public boolean isDeleted() {
-		return deleted;
-	}
-
-	public void setDeleted(boolean deleted) {
-		this.deleted = deleted;
-	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
index 20533e1..5a774fe 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
@@ -18,9 +18,6 @@
  */
 package org.apache.openmeetings.db.entity.room;
 
-import java.io.Serializable;
-import java.util.Date;
-
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -34,6 +31,7 @@ import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.HistoricalEntity;
 import org.apache.openmeetings.db.entity.user.User;
 import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
@@ -48,7 +46,7 @@ import org.simpleframework.xml.Root;
 })
 @Table(name = "room_moderator")
 @Root(name = "room_moderator")
-public class RoomModerator implements Serializable {
+public class RoomModerator extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
 
 	@Id
@@ -69,16 +67,12 @@ public class RoomModerator implements Serializable {
 	@Element(name = "user_id", data = true, required = false)
 	private User user;
 
-	@Column(name = "inserted")
-	private Date inserted;
-
-	@Column(name = "updated")
-	private Date updated;
-
+	@Override
 	public Long getId() {
 		return id;
 	}
 
+	@Override
 	public void setId(Long id) {
 		this.id = id;
 	}
@@ -99,22 +93,6 @@ public class RoomModerator implements Serializable {
 		this.user = user;
 	}
 
-	public Date getInserted() {
-		return inserted;
-	}
-
-	public void setInserted(Date inserted) {
-		this.inserted = inserted;
-	}
-
-	public Date getUpdated() {
-		return updated;
-	}
-
-	public void setUpdated(Date updated) {
-		this.updated = updated;
-	}
-
 	public Long getRoomId() {
 		return roomId;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/LdapConfig.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/LdapConfig.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/LdapConfig.java
index 3b514ed..7b467f4 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/LdapConfig.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/LdapConfig.java
@@ -18,8 +18,6 @@
  */
 package org.apache.openmeetings.db.entity.server;
 
-import java.util.Date;
-
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -34,7 +32,7 @@ import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.HistoricalEntity;
 import org.apache.openmeetings.db.entity.user.User;
 import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
@@ -48,7 +46,7 @@ import org.simpleframework.xml.Root;
 })
 @Table(name = "ldapconfig")
 @Root(name="ldapconfig")
-public class LdapConfig implements IDataProviderEntity {
+public class LdapConfig extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
 	@Id
 	@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -75,12 +73,6 @@ public class LdapConfig implements IDataProviderEntity {
 	@Element(data = true, name = "isActive")
 	private boolean active;
 
-	@Column(name = "inserted")
-	private Date inserted;
-
-	@Column(name = "updated")
-	private Date updated;
-
 	@ManyToOne(fetch = FetchType.EAGER)
 	@JoinColumn(name = "insertedby_id", updatable = true, insertable = true)
 	@ForeignKey(enabled = true)
@@ -91,9 +83,6 @@ public class LdapConfig implements IDataProviderEntity {
 	@ForeignKey(enabled = true)
 	private User updatedby;
 
-	@Column(name = "deleted", nullable = false)
-	private boolean deleted;
-
 	@Lob
 	@Column(name = "comment", length = 2048)
 	@Element(data = true, required = false)
@@ -149,22 +138,6 @@ public class LdapConfig implements IDataProviderEntity {
 		this.active = active;
 	}
 
-	public Date getInserted() {
-		return inserted;
-	}
-
-	public void setInserted(Date inserted) {
-		this.inserted = inserted;
-	}
-
-	public Date getUpdated() {
-		return updated;
-	}
-
-	public void setUpdated(Date updated) {
-		this.updated = updated;
-	}
-
 	public User getInsertedby() {
 		return insertedby;
 	}
@@ -181,14 +154,6 @@ public class LdapConfig implements IDataProviderEntity {
 		this.updatedby = updatedby;
 	}
 
-	public boolean isDeleted() {
-		return deleted;
-	}
-
-	public void setDeleted(boolean deleted) {
-		this.deleted = deleted;
-	}
-
 	public String getComment() {
 		return comment;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/OAuthServer.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/OAuthServer.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/OAuthServer.java
index 67f1ab5..6c45e50 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/OAuthServer.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/OAuthServer.java
@@ -29,7 +29,7 @@ import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.HistoricalEntity;
 import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
@@ -41,7 +41,7 @@ import org.simpleframework.xml.Root;
 		@NamedQuery(name = "getAllOAuthServers", query = "SELECT s FROM OAuthServer s WHERE s.deleted = false ORDER BY s.id"),
 		@NamedQuery(name = "countOAuthServers", query = "select count(s) from OAuthServer s WHERE s.deleted = false") })
 @Root
-public class OAuthServer implements IDataProviderEntity {
+public class OAuthServer extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
 
 	@Id
@@ -107,10 +107,6 @@ public class OAuthServer implements IDataProviderEntity {
 	@Element(data = true, required = false)
 	private String lastnameParamName;
 
-	@Column(name = "deleted", nullable = false)
-	@Element(data = true)
-	private boolean deleted;
-
 	@Override
 	public Long getId() {
 		return id;
@@ -233,14 +229,6 @@ public class OAuthServer implements IDataProviderEntity {
 		this.lastnameParamName = lastnameParamName;
 	}
 
-	public boolean isDeleted() {
-		return deleted;
-	}
-
-	public void setDeleted(boolean deleted) {
-		this.deleted = deleted;
-	}
-
 	@Override
 	public String toString() {
 		return "OAuthServer [id=" + id + ", name=" + name + ", iconUrl=" + iconUrl + ", enabled=" + enabled
@@ -248,7 +236,7 @@ public class OAuthServer implements IDataProviderEntity {
 				+ ", requestTokenUrl=" + requestTokenUrl + ", requestTokenAttributes=" + requestTokenAttributes
 				+ ", requestTokenMethod=" + requestTokenMethod + ", requestInfoUrl=" + requestInfoUrl
 				+ ", loginParamName=" + loginParamName + ", emailParamName=" + emailParamName + ", firstnameParamName="
-				+ firstnameParamName + ", lastnameParamName=" + lastnameParamName + ", deleted=" + deleted + "]";
+				+ firstnameParamName + ", lastnameParamName=" + lastnameParamName + ", deleted=" + isDeleted() + "]";
 	}
 
 	public enum RequestMethod {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java
index d0d0d3b..13d48da 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java
@@ -18,8 +18,6 @@
  */
 package org.apache.openmeetings.db.entity.user;
 
-import java.util.Date;
-
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
@@ -29,7 +27,7 @@ import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.HistoricalEntity;
 import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
@@ -45,7 +43,7 @@ import org.simpleframework.xml.Root;
 })
 @Table(name = "om_group")
 @Root(name = "organisation")
-public class Group implements IDataProviderEntity {
+public class Group extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
 
 	@Id
@@ -64,16 +62,6 @@ public class Group implements IDataProviderEntity {
 	@Column(name = "updatedby")
 	private Long updatedby;
 
-	@Column(name = "inserted")
-	private Date inserted;
-
-	@Column(name = "updated")
-	private Date updated;
-
-	@Column(name = "deleted", nullable = false)
-	@Element(data = true, required = false)
-	private boolean deleted;
-
 	@Column(name = "tag")
 	@Element(data = true, required = false)
 	private String tag;
@@ -140,30 +128,6 @@ public class Group implements IDataProviderEntity {
 		this.updatedby = updatedby;
 	}
 
-	public Date getInserted() {
-		return inserted;
-	}
-
-	public void setInserted(Date inserted) {
-		this.inserted = inserted;
-	}
-
-	public Date getUpdated() {
-		return updated;
-	}
-
-	public void setUpdated(Date updated) {
-		this.updated = updated;
-	}
-
-	public boolean isDeleted() {
-		return deleted;
-	}
-
-	public void setDeleted(boolean deleted) {
-		this.deleted = deleted;
-	}
-
 	public String getTag() {
 		return tag;
 	}
@@ -230,6 +194,6 @@ public class Group implements IDataProviderEntity {
 
 	@Override
 	public String toString() {
-		return "Group [id=" + id + ", name=" + name + ", deleted=" + deleted + "]";
+		return "Group [id=" + id + ", name=" + name + ", deleted=" + isDeleted() + "]";
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/GroupUser.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/GroupUser.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/GroupUser.java
index c9f2339..f2c0830 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/GroupUser.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/GroupUser.java
@@ -18,8 +18,6 @@
  */
 package org.apache.openmeetings.db.entity.user;
 
-import java.util.Date;
-
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -33,7 +31,7 @@ import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.HistoricalEntity;
 import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
@@ -47,7 +45,7 @@ import org.simpleframework.xml.Root;
 })
 @Table(name = "group_user")
 @Root(name="user_organisation")
-public class GroupUser implements IDataProviderEntity {
+public class GroupUser extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
 	@Id
 	@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -65,12 +63,6 @@ public class GroupUser implements IDataProviderEntity {
 	@ForeignKey(enabled = true)
 	private User user;
 
-	@Column(name = "inserted")
-	private Date inserted;
-
-	@Column(name = "updated")
-	private Date updated;
-
 	@Column(name = "is_moderator", nullable = false)
 	@Element(data = true, required = false)
 	private boolean moderator;
@@ -102,22 +94,6 @@ public class GroupUser implements IDataProviderEntity {
 		this.id = id;
 	}
 
-	public Date getInserted() {
-		return inserted;
-	}
-
-	public void setInserted(Date inserted) {
-		this.inserted = inserted;
-	}
-
-	public Date getUpdated() {
-		return updated;
-	}
-
-	public void setUpdated(Date updated) {
-		this.updated = updated;
-	}
-
 	public boolean isModerator() {
 		return moderator;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
index 666a7a7..4a99a0e 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
@@ -56,7 +56,7 @@ import org.apache.openjpa.persistence.FetchGroups;
 import org.apache.openjpa.persistence.LoadFetchGroup;
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.HistoricalEntity;
 import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.apache.openmeetings.util.crypt.CryptProvider;
 import org.apache.openmeetings.util.crypt.MD5;
@@ -100,7 +100,7 @@ import org.simpleframework.xml.Root;
 })
 @Table(name = "om_user")
 @Root(name = "user")
-public class User implements IDataProviderEntity {
+public class User extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
 	public static final int SALUTATION_MR_ID = 1;
 	public static final int SALUTATION_MS_ID = 2;
@@ -212,20 +212,10 @@ public class User implements IDataProviderEntity {
 	@Element(name = "title_id", data = true, required = false)
 	private Salutation salutation;
 
-	@Column(name = "inserted")
-	private Date inserted;
-
-	@Column(name = "updated")
-	private Date updated;
-
 	@Column(name = "pictureuri")
 	@Element(data = true, required = false)
 	private String pictureuri;
 
-	@Column(name = "deleted", nullable = false)
-	@Element(data = true, required = false)
-	private boolean deleted;
-
 	@Column(name = "language_id")
 	@Element(name = "language_id", data = true, required = false)
 	private long languageId;
@@ -428,30 +418,6 @@ public class User implements IDataProviderEntity {
 		this.salutation = salutation;
 	}
 
-	public Date getInserted() {
-		return inserted;
-	}
-
-	public void setInserted(Date inserted) {
-		this.inserted = inserted;
-	}
-
-	public Date getUpdated() {
-		return updated;
-	}
-
-	public void setUpdated(Date updated) {
-		this.updated = updated;
-	}
-
-	public boolean isDeleted() {
-		return deleted;
-	}
-
-	public void setDeleted(boolean deleted) {
-		this.deleted = deleted;
-	}
-
 	public String getPictureuri() {
 		return pictureuri;
 	}
@@ -629,7 +595,7 @@ public class User implements IDataProviderEntity {
 	public String toString() {
 		return "User [id=" + id + ", firstname=" + firstname
 				+ ", lastname=" + lastname + ", login=" + login
-				+ ", pictureuri=" + pictureuri + ", deleted=" + deleted
+				+ ", pictureuri=" + pictureuri + ", deleted=" + isDeleted()
 				+ ", languageId=" + languageId + ", address=" + address
 				+ ", externalId=" + externalId + ", externalType=" + externalType
 				+ ", type=" + type + "]";

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
index b7a083b..82df8e4 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
@@ -60,7 +60,6 @@ import org.apache.openmeetings.db.dao.file.FileItemDao;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.room.PollDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.room.RoomGroupDao;
 import org.apache.openmeetings.db.dao.server.LdapConfigDao;
 import org.apache.openmeetings.db.dao.server.OAuth2Dao;
 import org.apache.openmeetings.db.dao.user.GroupDao;
@@ -144,8 +143,6 @@ public class BackupExport {
 	private GroupDao groupDao;
 	@Autowired
 	private RoomDao roomDao;
-	@Autowired
-	private RoomGroupDao roomGroupDao;
 
 	public void performExport(File zip, boolean includeFiles, ProgressHolder progressHolder) throws Exception {
 		if (zip.getParentFile() != null && !zip.getParentFile().exists()) {
@@ -245,7 +242,7 @@ public class BackupExport {
 		registry.bind(Group.class, GroupConverter.class);
 		registry.bind(Room.class, RoomConverter.class);
 
-		writeList(serializer, zos, "rooms_organisation.xml", "room_organisations", roomGroupDao.get());
+		writeList(serializer, zos, "rooms_organisation.xml", "room_organisations", roomDao.getGroups());
 		progressHolder.setProgress(17);
 	}
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
index 55520bf..b43a91c 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
@@ -146,7 +146,6 @@ import org.apache.openmeetings.db.dao.file.FileItemDao;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.room.PollDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.room.RoomGroupDao;
 import org.apache.openmeetings.db.dao.server.LdapConfigDao;
 import org.apache.openmeetings.db.dao.server.OAuth2Dao;
 import org.apache.openmeetings.db.dao.user.GroupDao;
@@ -317,8 +316,6 @@ public class BackupImport {
 	private OAuth2Dao auth2Dao;
 	@Autowired
 	private GroupDao groupDao;
-	@Autowired
-	private RoomGroupDao roomGroupDao;
 
 	private final Map<Long, Long> userMap = new HashMap<>();
 	private final Map<Long, Long> groupMap = new HashMap<>();
@@ -596,11 +593,17 @@ public class BackupImport {
 
 		List<RoomGroup> list = readList(serializer, f, "rooms_organisation.xml", "room_organisations", RoomGroup.class);
 		for (RoomGroup ro : list) {
-			if (!ro.isDeleted() && ro.getRoom() != null && ro.getRoom().getId() != null && ro.getGroup() != null && ro.getGroup().getId() != null) {
-				// We need to reset this as openJPA reject to store them otherwise
-				ro.setId(null);
-				roomGroupDao.update(ro);
+			Room r = roomDao.get(ro.getRoom().getId());
+			if (r == null || ro.getGroup() == null || ro.getGroup().getId() == null) {
+				continue;
+			}
+			if (r.getGroups() == null) {
+				r.setGroups(new ArrayList<>());
 			}
+			ro.setId(null);
+			ro.setRoom(r);
+			r.getGroups().add(ro);
+			roomDao.update(r, null);
 		}
 	}
 
@@ -898,6 +901,9 @@ public class BackupImport {
 		List<RoomFile> list = readList(serializer, f, "roomFiles.xml", "RoomFiles", RoomFile.class, true);
 		for (RoomFile rf : list) {
 			Room r = roomDao.get(roomMap.get(rf.getRoomId()));
+			if (r == null || rf.getFile() == null || rf.getFile().getId() == null) {
+				continue;
+			}
 			if (r.getFiles() == null) {
 				r.setFiles(new ArrayList<>());
 			}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
index 96082c7..8b0d996 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
@@ -542,8 +542,10 @@ public class Admin {
 			a.process(args);
 
 			log("... Done");
+			System.exit(0);
 		} catch (ExitException e) {
 			a.handleError(e, false, false);
+			System.exit(1);
 		} catch (Exception e) {
 			_log.error("Unexpected error", e);
 			e.printStackTrace();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
index 6980ad2..fbc7cf5 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
@@ -371,7 +371,6 @@ public class ImportInitvalues {
 			RoomGroup ro = new RoomGroup();
 			ro.setRoom(r);
 			ro.setGroup(groupDao.get(groupId));
-			ro.setInserted(new Date());
 			r.getGroups().add(ro);
 		}
 		r = roomDao.update(r, null);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-server/src/site/stylesheets/errortable.xsl
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/stylesheets/errortable.xsl b/openmeetings-server/src/site/stylesheets/errortable.xsl
index 3f58fa3..4a66c8d 100644
--- a/openmeetings-server/src/site/stylesheets/errortable.xsl
+++ b/openmeetings-server/src/site/stylesheets/errortable.xsl
@@ -11,7 +11,7 @@
    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.
- -->
+-->
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 	<xsl:param name="languagesDir"/>
 	<xsl:output method="xml"/>
@@ -39,8 +39,7 @@
 		<section name="Openmeetings Errors table">
 		<table>
 			<tr>
-				<th>Code</th>
-				<th>Type</th>
+				<th>Error Code</th>
 				<th>Description</th>
 			</tr>
 			<xsl:apply-templates/>
@@ -54,11 +53,7 @@
 		<xsl:variable name="englishPath"><xsl:value-of select="concat($languagesDir, '/Application.properties.xml')"/></xsl:variable>
 		<xsl:variable name="descId" select="field[@name='labelKey']"/>
 			<tr>
-				<td>-<xsl:value-of select="$descId"/></td>
-				<td>
-					<xsl:variable name="type" select="concat('error.type.', field[@name='type'])"/>
-					<xsl:value-of select="document($englishPath)/properties/entry[@key=$type]/text()" />
-				</td>
+				<td><xsl:value-of select="$descId"/></td>
 				<td>
 					<xsl:value-of select="document($englishPath)/properties/entry[@key=$descId]/text()" />
 				</td>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-server/src/site/stylesheets/errorvalues.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/stylesheets/errorvalues.xml b/openmeetings-server/src/site/stylesheets/errorvalues.xml
index e8c18f9..87cd23a 100644
--- a/openmeetings-server/src/site/stylesheets/errorvalues.xml
+++ b/openmeetings-server/src/site/stylesheets/errorvalues.xml
@@ -22,65 +22,38 @@
 		xsi:noNamespaceSchemaLocation="errorvalues.xsd">
 	<row>
 		<field name="starttime">2007-12-06 19:01:07</field>
-		<field name="updatetime" />
-		<field name="deleted">false</field>
 		<field name="labelKey">error.unknown</field>
-		<field name="type">error</field>
 	</row>
 	<row>
 		<field name="starttime">2017-05-18 19:01:07</field>
-		<field name="updatetime" />
-		<field name="deleted">false</field>
 		<field name="labelKey">error.bad.credentials</field>
-		<field name="type">error</field>
 	</row>
 	<row>
 		<field name="starttime">2007-12-06 19:01:07</field>
-		<field name="updatetime" />
-		<field name="deleted">false</field>
 		<field name="labelKey">error.short.login</field>
-		<field name="type">error</field>
 	</row>
 	<row>
 		<field name="starttime">2007-12-06 19:01:07</field>
-		<field name="updatetime" />
-		<field name="deleted">false</field>
 		<field name="labelKey">error.reg.disabled</field>
-		<field name="type">error</field>
 	</row>
 	<row>
 		<field name="starttime">2007-12-06 19:01:07</field>
-		<field name="updatetime" />
-		<field name="deleted">false</field>
 		<field name="labelKey">error.login.inuse</field>
-		<field name="type">error</field>
 	</row>
 	<row>
 		<field name="starttime">2007-12-06 19:01:07</field>
-		<field name="updatetime" />
-		<field name="deleted">false</field>
 		<field name="labelKey">error.email.inuse</field>
-		<field name="type">error</field>
 	</row>
 	<row>
 		<field name="starttime">2007-12-06 19:01:07</field>
-		<field name="updatetime" />
-		<field name="deleted">false</field>
 		<field name="labelKey">error.notallowed</field>
-		<field name="type">error</field>
 	</row>
 	<row>
 		<field name="starttime"/>
-		<field name="updatetime" />
-		<field name="deleted">false</field>
 		<field name="labelKey">error.nogroup</field>
-		<field name="type">error</field>
 	</row>
 	<row>
 		<field name="starttime" />
-		<field name="updatetime" />
-		<field name="deleted">false</field>
 		<field name="labelKey">error.notactivated</field>
-		<field name="type">error</field>
 	</row>
 </ROOT>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml
index 1933f3a..51b8455 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml
@@ -24,6 +24,7 @@
 		version="2.0">
 	<persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+		<class>org.apache.openmeetings.db.entity.HistoricalEntity</class>
 		<class>org.apache.openmeetings.db.entity.basic.ChatMessage</class>
 		<class>org.apache.openmeetings.db.entity.basic.Configuration</class>
 		<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml
index 3524c46..9619b42 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml
@@ -24,6 +24,7 @@
 		version="2.0">
 	<persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+		<class>org.apache.openmeetings.db.entity.HistoricalEntity</class>
 		<class>org.apache.openmeetings.db.entity.basic.ChatMessage</class>
 		<class>org.apache.openmeetings.db.entity.basic.Configuration</class>
 		<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml
index c6d856a..f21ee4d 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml
@@ -24,6 +24,7 @@
 		version="2.0">
 	<persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+		<class>org.apache.openmeetings.db.entity.HistoricalEntity</class>
 		<class>org.apache.openmeetings.db.entity.basic.ChatMessage</class>
 		<class>org.apache.openmeetings.db.entity.basic.Configuration</class>
 		<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
index 2bacd2c..290e277 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
@@ -24,6 +24,7 @@
 		version="2.0">
 	<persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+		<class>org.apache.openmeetings.db.entity.HistoricalEntity</class>
 		<class>org.apache.openmeetings.db.entity.basic.ChatMessage</class>
 		<class>org.apache.openmeetings.db.entity.basic.Configuration</class>
 		<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml
index e4a60cb..8097470 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml
@@ -24,6 +24,7 @@
 		version="2.0">
 	<persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+		<class>org.apache.openmeetings.db.entity.HistoricalEntity</class>
 		<class>org.apache.openmeetings.db.entity.basic.ChatMessage</class>
 		<class>org.apache.openmeetings.db.entity.basic.Configuration</class>
 		<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml
index dbdedbd..96eaf31 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml
@@ -24,6 +24,7 @@
 		version="2.0">
 	<persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+		<class>org.apache.openmeetings.db.entity.HistoricalEntity</class>
 		<class>org.apache.openmeetings.db.entity.basic.ChatMessage</class>
 		<class>org.apache.openmeetings.db.entity.basic.Configuration</class>
 		<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestOldBackups.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestOldBackups.java b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestOldBackups.java
index 8b2bf7b..59c808a 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestOldBackups.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestOldBackups.java
@@ -32,7 +32,6 @@ import org.apache.openmeetings.AbstractJUnitDefaults;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.room.RoomGroupDao;
 import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.entity.basic.Configuration;
 import org.junit.After;
@@ -55,8 +54,6 @@ public class TestOldBackups extends AbstractJUnitDefaults {
 	private AppointmentDao appointmentDao;
 	@Autowired
 	private MeetingMemberDao meetingMemberDao;
-	@Autowired
-	private RoomGroupDao roomGroupDao;
 
 	@Override
 	public void setUp() throws Exception {
@@ -95,7 +92,7 @@ public class TestOldBackups extends AbstractJUnitDefaults {
 				long newGroupCount = groupDao.count();
 				long newUserCount = userDao.count();
 				long newRoomCount = roomDao.count();
-				long newRoomGroupCount = roomGroupDao.get().size();
+				long newRoomGroupCount = roomDao.getGroups().size();
 				long newApptCount = appointmentDao.get().size();
 				long newMeetingMembersCount = meetingMemberDao.getMeetingMembers().size();
 				assertTrue("Zero groups were imported from " + name, newGroupCount > groupCount);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a54e5b7d/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java
index 3b907f6..027996e 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java
@@ -56,5 +56,4 @@ public class TestGetAppointment extends AbstractJUnitDefaults {
 		assertNotNull("Failed to get Appointment By id", a);
 		assertEquals("Inapropriate MeetingMembers count", 0, a.getMeetingMembers() == null ? 0 : a.getMeetingMembers().size());
 	}
-
 }


[2/2] openmeetings git commit: [OPENMEETINGS-1714] tests are fixed

Posted by so...@apache.org.
[OPENMEETINGS-1714] tests are fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/84a5c2f7
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/84a5c2f7
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/84a5c2f7

Branch: refs/heads/master
Commit: 84a5c2f7f984366073d12e002ff1d4d9eb6c1e02
Parents: a54e5b7
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Thu Oct 12 23:06:10 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Thu Oct 12 23:06:10 2017 +0700

----------------------------------------------------------------------
 .../openmeetings/db/dao/calendar/AppointmentDao.java   |  2 +-
 .../openmeetings/calendar/TestGetAppointment.java      | 13 +++++++++++++
 .../openmeetings/webservice/TestCalendarService.java   |  1 +
 3 files changed, 15 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/84a5c2f7/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
index f12b351..240f621 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
@@ -91,7 +91,7 @@ public class AppointmentDao {
 			r.setName(a.getTitle());
 			r.setCapacity(cfgDao.getLong(CONFIG_CALENDAR_ROOM_CAPACITY, 50L));
 		}
-		roomDao.update(r, userId);
+		a.setRoom(roomDao.update(r, userId));
 		if (sendmails) {
 			Set<Long> mmIds = a.getId() == null ? new HashSet<>()
 					: meetingMemberDao.getMeetingMemberIdsByAppointment(a.getId());

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/84a5c2f7/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java
index 027996e..40e7955 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java
@@ -23,9 +23,11 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
 import java.util.Calendar;
+import java.util.Date;
 
 import org.apache.openmeetings.AbstractJUnitDefaults;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.junit.Test;
 import org.red5.logging.Red5LoggerFactory;
@@ -37,6 +39,8 @@ public class TestGetAppointment extends AbstractJUnitDefaults {
 
 	@Autowired
 	private AppointmentDao appointmentDao;
+	@Autowired
+	private RoomDao roomDao;
 
 	@Test
 	public void getAppoinment() {
@@ -56,4 +60,13 @@ public class TestGetAppointment extends AbstractJUnitDefaults {
 		assertNotNull("Failed to get Appointment By id", a);
 		assertEquals("Inapropriate MeetingMembers count", 0, a.getMeetingMembers() == null ? 0 : a.getMeetingMembers().size());
 	}
+
+	@Test
+	public void testGetByRoom() {
+		Date start = new Date();
+		Appointment a = createAppointment(getAppointment(userDao.get(1L), roomDao.get(5L), start, new Date(start.getTime() + ONE_HOUR)));
+		Appointment a1 = appointmentDao.getByRoom(1L, 5L);
+		assertNotNull("Created appointment should be found", a1);
+		assertEquals(a.getId(), a1.getId());
+	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/84a5c2f7/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
index f7c780e..ac6bcc6 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
@@ -68,6 +68,7 @@ public class TestCalendarService extends AbstractWebServiceTest {
 		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
 		webCreateUser(u);
 		ServiceResult sr = login(u.getLogin(), createPass());
+		u = userDao.get(u.getId());
 
 		Date start = new Date();
 		Appointment a = createAppointment(getAppointment(u, r, start, new Date(start.getTime() + ONE_HOUR)));