This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
The following commit(s) were added to refs/heads/master by this push:
new 82e94d4 [OPENMEETINGS-2177] more work on import
82e94d4 is described below
commit 82e94d4b0163df1e9c5a57c639dd5ac702d9e4b7
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Tue Mar 3 21:48:07 2020 +0700
[OPENMEETINGS-2177] more work on import
---
.../org/apache/openmeetings/db/bind/Constants.java | 6 ++
.../{UserAdapter.java => EntityAdapter.java} | 26 ++++-----
.../openmeetings/db/bind/adapter/GroupAdapter.java | 33 ++---------
.../openmeetings/db/bind/adapter/RoomAdapter.java | 39 +++++++++++++
.../openmeetings/db/bind/adapter/UserAdapter.java | 33 ++---------
.../openmeetings/db/entity/basic/ChatMessage.java | 44 +++++++++++----
.../db/entity/calendar/OmCalendar.java | 29 +++++++---
.../openmeetings/db/entity/room/RoomGroup.java | 22 ++++++--
.../apache/openmeetings/backup/BackupImport.java | 65 +++++++++++-----------
.../org/apache/openmeetings/backup/TestImport.java | 35 +++++++++---
.../openmeetings/backup/TestImportConfig.java | 2 +-
.../apache/openmeetings/backup/TestImportRoom.java | 47 ++++++++++++++++
.../apache/openmeetings/backup/TestImportUser.java | 4 +-
.../openmeetings/backup/calendar/calendars.xml | 33 +++++++++++
.../openmeetings/backup/chat/chat_messages.xml | 52 +++++++++++++++++
.../backup/chat/skip/chat_messages.xml | 58 +++++++++++++++++++
.../config/{nokey_deleted => skip}/configs.xml | 0
.../configs.xml => room/rooms_organisation.xml} | 35 ++++++------
.../user/{nologin_deleted => skip}/users.xml | 0
19 files changed, 412 insertions(+), 151 deletions(-)
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/Constants.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/Constants.java
index 1b85664..76f0e8f 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/Constants.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/Constants.java
@@ -33,4 +33,10 @@ public class Constants {
public static final String USER_NODE = "user";
public static final String ROOM_LIST_NODE = "rooms";
public static final String ROOM_NODE = "room";
+ public static final String ROOM_GRP_LIST_NODE = "room_organisations";
+ public static final String ROOM_GRP_NODE = "room_organisation";
+ public static final String CHAT_LIST_NODE = "chat_messages";
+ public static final String CHAT_NODE = "ChatMessage";
+ public static final String CALENDAR_LIST_NODE = "calendars";
+ public static final String CALENDAR_NODE = "calendar";
}
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/UserAdapter.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/EntityAdapter.java
similarity index 71%
copy from
openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/UserAdapter.java
copy to
openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/EntityAdapter.java
index 6c09170..7c3bc1c 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/UserAdapter.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/EntityAdapter.java
@@ -26,35 +26,35 @@ import java.util.Map;
import javax.xml.bind.annotation.adapters.XmlAdapter;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.user.User;
-import org.springframework.beans.factory.annotation.Configurable;
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
-@Configurable
-public class UserAdapter extends XmlAdapter<String, User> {
- private final UserDao userDao;
+public abstract class EntityAdapter<E extends IDataProviderEntity> extends
XmlAdapter<String, E> {
+ private final IDataProviderDao<E> dao;
private final Map<Long, Long> idMap;
- public UserAdapter() {
+ public EntityAdapter() {
this(null, null);
}
- public UserAdapter(UserDao userDao, Map<Long, Long> idMap) {
- this.userDao = userDao;
+ public EntityAdapter(IDataProviderDao<E> dao, Map<Long, Long> idMap) {
+ this.dao = dao;
this.idMap = idMap;
}
@Override
- public String marshal(User v) throws Exception {
+ public String marshal(E v) throws Exception {
return CDATA_BEGIN + v.getId() + CDATA_END;
}
@Override
- public User unmarshal(String v) throws Exception {
+ public E unmarshal(String v) throws Exception {
long oldId = toLong(v);
Long newId = idMap.containsKey(oldId) ? idMap.get(oldId) :
oldId;
- User u = userDao.get(newId);
- return u == null ? new User() : u;
+ E r = dao.get(newId);
+ return r == null ? newEntity() : r;
}
+
+ protected abstract E newEntity();
}
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/GroupAdapter.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/GroupAdapter.java
index 9185407..9c8823c 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/GroupAdapter.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/GroupAdapter.java
@@ -18,43 +18,22 @@
*/
package org.apache.openmeetings.db.bind.adapter;
-import static org.apache.commons.lang3.math.NumberUtils.toLong;
-import static org.apache.openmeetings.db.bind.adapter.CDATAAdapter.CDATA_BEGIN;
-import static org.apache.openmeetings.db.bind.adapter.CDATAAdapter.CDATA_END;
-
import java.util.Map;
-import javax.xml.bind.annotation.adapters.XmlAdapter;
-
import org.apache.openmeetings.db.dao.user.GroupDao;
import org.apache.openmeetings.db.entity.user.Group;
-import org.springframework.beans.factory.annotation.Configurable;
-
-@Configurable
-public class GroupAdapter extends XmlAdapter<String, Group> {
- private final GroupDao groupDao;
- private final Map<Long, Long> idMap;
+public class GroupAdapter extends EntityAdapter<Group> {
public GroupAdapter() {
- this(null, null);
+ super();
}
- public GroupAdapter(GroupDao groupDao, Map<Long, Long> idMap) {
- this.groupDao = groupDao;
- this.idMap = idMap;
+ public GroupAdapter(GroupDao dao, Map<Long, Long> idMap) {
+ super(dao, idMap);
}
@Override
- public String marshal(Group v) throws Exception {
- return CDATA_BEGIN + v.getId() + CDATA_END;
- }
-
- @Override
- public Group unmarshal(String v) throws Exception {
- long oldId = toLong(v);
- Long newId = idMap.containsKey(oldId) ? idMap.get(oldId) :
oldId;
-
- Group g = groupDao.get(newId);
- return g == null ? new Group() : g;
+ protected Group newEntity() {
+ return new Group();
}
}
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RoomAdapter.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RoomAdapter.java
new file mode 100644
index 0000000..2b06c6a
--- /dev/null
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RoomAdapter.java
@@ -0,0 +1,39 @@
+/*
+ * 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.bind.adapter;
+
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.entity.room.Room;
+
+public class RoomAdapter extends EntityAdapter<Room> {
+ public RoomAdapter() {
+ super();
+ }
+
+ public RoomAdapter(RoomDao dao, Map<Long, Long> idMap) {
+ super(dao, idMap);
+ }
+
+ @Override
+ protected Room newEntity() {
+ return new Room();
+ }
+}
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/UserAdapter.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/UserAdapter.java
index 6c09170..66fa5d2 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/UserAdapter.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/UserAdapter.java
@@ -18,43 +18,22 @@
*/
package org.apache.openmeetings.db.bind.adapter;
-import static org.apache.commons.lang3.math.NumberUtils.toLong;
-import static org.apache.openmeetings.db.bind.adapter.CDATAAdapter.CDATA_BEGIN;
-import static org.apache.openmeetings.db.bind.adapter.CDATAAdapter.CDATA_END;
-
import java.util.Map;
-import javax.xml.bind.annotation.adapters.XmlAdapter;
-
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.entity.user.User;
-import org.springframework.beans.factory.annotation.Configurable;
-
-@Configurable
-public class UserAdapter extends XmlAdapter<String, User> {
- private final UserDao userDao;
- private final Map<Long, Long> idMap;
+public class UserAdapter extends EntityAdapter<User> {
public UserAdapter() {
- this(null, null);
+ super();
}
- public UserAdapter(UserDao userDao, Map<Long, Long> idMap) {
- this.userDao = userDao;
- this.idMap = idMap;
+ public UserAdapter(UserDao dao, Map<Long, Long> idMap) {
+ super(dao, idMap);
}
@Override
- public String marshal(User v) throws Exception {
- return CDATA_BEGIN + v.getId() + CDATA_END;
- }
-
- @Override
- public User unmarshal(String v) throws Exception {
- long oldId = toLong(v);
- Long newId = idMap.containsKey(oldId) ? idMap.get(oldId) :
oldId;
-
- User u = userDao.get(newId);
- return u == null ? new User() : u;
+ protected User newEntity() {
+ return new User();
}
}
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/ChatMessage.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/ChatMessage.java
index db801d0..7a20d0b 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/ChatMessage.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/ChatMessage.java
@@ -18,6 +18,8 @@
*/
package org.apache.openmeetings.db.entity.basic;
+import static org.apache.openmeetings.db.bind.Constants.CHAT_NODE;
+
import java.util.Date;
import javax.persistence.Column;
@@ -32,13 +34,22 @@ import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
+import org.apache.openmeetings.db.bind.adapter.CDATAAdapter;
+import org.apache.openmeetings.db.bind.adapter.DateAdapter;
+import org.apache.openmeetings.db.bind.adapter.LongAdapter;
+import org.apache.openmeetings.db.bind.adapter.RoomAdapter;
+import org.apache.openmeetings.db.bind.adapter.UserAdapter;
import org.apache.openmeetings.db.entity.IDataProviderEntity;
import org.apache.openmeetings.db.entity.room.Room;
import org.apache.openmeetings.db.entity.user.User;
-import org.simpleframework.xml.Element;
-import org.simpleframework.xml.Root;
@Entity
@NamedQuery(name = "getChatMessageById", query = "SELECT c FROM ChatMessage c
WHERE c.id = :id")
@@ -60,7 +71,8 @@ import org.simpleframework.xml.Root;
@NamedQuery(name = "deleteChatUser", query = "DELETE FROM ChatMessage c WHERE
c.toRoom IS NULL AND c.toUser.id = :userId")
@NamedQuery(name = "purgeChatUserName", query = "UPDATE ChatMessage c SET
c.fromName = :purged WHERE c.fromUser.id = :userId")
@Table(name = "chat")
-@Root(name = "ChatMessage")
+@XmlRootElement(name = CHAT_NODE)
+@XmlAccessorType(XmlAccessType.FIELD)
public class ChatMessage implements IDataProviderEntity {
private static final long serialVersionUID = 1L;
@@ -72,47 +84,55 @@ public class ChatMessage implements IDataProviderEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
- @Element(name = "id", data = true)
+ @XmlElement(name = "id", required = false)
+ @XmlJavaTypeAdapter(LongAdapter.class)
private Long id;
@ManyToOne
@JoinColumn(name = "from_user_id")
- @Element(name = "fromUserId", data = true, required = false)
@ForeignKey(enabled = true)
+ @XmlElement(name = "fromUserId", required = false)
+ @XmlJavaTypeAdapter(UserAdapter.class)
private User fromUser;
@ManyToOne
@JoinColumn(name = "to_room_id")
- @Element(name = "toRoomId", data = true, required = false)
@ForeignKey(enabled = true)
+ @XmlElement(name = "toRoomId", required = false)
+ @XmlJavaTypeAdapter(RoomAdapter.class)
private Room toRoom;
@ManyToOne
@JoinColumn(name = "to_user_id")
- @Element(name = "toUserId", data = true, required = false)
@ForeignKey(enabled = true)
+ @XmlElement(name = "toUserId", required = false)
+ @XmlJavaTypeAdapter(UserAdapter.class)
private User toUser;
@Column(name = "message")
@Lob
- @Element(name = "message", data = true, required = false)
+ @XmlElement(name = "message", required = false)
+ @XmlJavaTypeAdapter(CDATAAdapter.class)
private String message;
@Column(name = "sent")
- @Element(name = "sent", data = true, required = false)
+ @XmlElement(name = "sent", required = false)
+ @XmlJavaTypeAdapter(DateAdapter.class)
private Date sent;
@Column(name = "need_moderation", nullable = false)
- @Element(name = "needModeration", data = true, required = false)
+ @XmlElement(name = "needModeration", required = false)
+ @XmlJavaTypeAdapter(value = BooleanAdapter.class, type = boolean.class)
private boolean needModeration;
@Column(name = "from_name")
- @Element(name = "from_name", data = true, required = false)
+ @XmlElement(name = "from_name", required = false)
+ @XmlJavaTypeAdapter(CDATAAdapter.class)
private String fromName; // this is required for users with no
first/last name specified
@Column(name = "status")
- @Element(data = true, required = false)
@Enumerated(EnumType.STRING)
+ @XmlElement(name = "status", required = false)
private Status status;
@Override
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 f51d767..dc6f7a2 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,6 +18,8 @@
*/
package org.apache.openmeetings.db.entity.calendar;
+import static org.apache.openmeetings.db.bind.Constants.CALENDAR_NODE;
+
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
@@ -30,12 +32,16 @@ import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.bind.adapter.CDATAAdapter;
+import org.apache.openmeetings.db.bind.adapter.LongAdapter;
+import org.apache.openmeetings.db.bind.adapter.UserAdapter;
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;
@Entity
@Table(name = "om_calendar")
@@ -56,7 +62,7 @@ import org.simpleframework.xml.Root;
+ " )"
+ " 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")
+@XmlRootElement(name = CALENDAR_NODE)
public class OmCalendar extends HistoricalEntity {
private static final long serialVersionUID = 1L;
@@ -67,32 +73,37 @@ public class OmCalendar extends HistoricalEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
- @Element(name = "id", data = true)
+ @XmlElement(name = "id", required = false)
+ @XmlJavaTypeAdapter(LongAdapter.class)
private Long id;
@Column(name = "title")
- @Element(name = "title", data = true, required = false)
+ @XmlElement(name = "title", required = false)
+ @XmlJavaTypeAdapter(CDATAAdapter.class)
private String title;
// Can Also act as the Google Calendar ID for Google Calendars
@Column(name = "href")
- @Element(name = "href", data = true)
+ @XmlElement(name = "href", required = false)
+ @XmlJavaTypeAdapter(CDATAAdapter.class)
private String href;
// Can also act as the Google API Key for Google Calendars. Note, not
always needed.
@Column(name = "sync_token")
- @Element(name = "token", data = true, required = false)
+ @XmlElement(name = "token", required = false)
+ @XmlJavaTypeAdapter(CDATAAdapter.class)
private String token;
@Column(name = "sync_type")
@Enumerated(EnumType.STRING)
- @Element(name = "syncType", data = true)
+ @XmlElement(name = "syncType")
private SyncType syncType = SyncType.NONE;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id", nullable = true)
@ForeignKey(enabled = true)
- @Element(name = "ownerId", data = true, required = false)
+ @XmlElement(name = "ownerId", required = false)
+ @XmlJavaTypeAdapter(UserAdapter.class)
private User owner;
// Getters + Setters
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 4717e60..6a919f5 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,6 +18,8 @@
*/
package org.apache.openmeetings.db.entity.room;
+import static org.apache.openmeetings.db.bind.Constants.ROOM_GRP_NODE;
+
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
@@ -28,35 +30,47 @@ import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.bind.adapter.GroupAdapter;
+import org.apache.openmeetings.db.bind.adapter.LongAdapter;
+import org.apache.openmeetings.db.bind.adapter.RoomAdapter;
import org.apache.openmeetings.db.entity.IDataProviderEntity;
import org.apache.openmeetings.db.entity.user.Group;
-import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;
@Entity
@NamedQuery(name = "getAllRoomGroups", query = "SELECT rg FROM RoomGroup rg
ORDER BY rg.id")
@Table(name = "room_group")
@Root(name="room_organisation")
+@XmlRootElement(name = ROOM_GRP_NODE)
+@XmlAccessorType(XmlAccessType.FIELD)
public class RoomGroup implements IDataProviderEntity {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
- @Element(data = true, name = "rooms_organisation_id")
+ @XmlElement(name = "rooms_organisation_id", required = false)
+ @XmlJavaTypeAdapter(LongAdapter.class)
private Long id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "room_id", nullable = true)
@ForeignKey(enabled = true)
- @Element(name="rooms_id", data = true, required = false)
+ @XmlElement(name = "rooms_id", required = false)
+ @XmlJavaTypeAdapter(RoomAdapter.class)
private Room room;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "group_id", nullable = true)
@ForeignKey(enabled = true)
- @Element(name = "organisation_id", data = true, required = false)
+ @XmlElement(name = "organisation_id", required = false)
+ @XmlJavaTypeAdapter(GroupAdapter.class)
private Group group;
public RoomGroup() {
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 84d7f43..ab0df5f 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
@@ -19,12 +19,18 @@
package org.apache.openmeetings.backup;
import static java.util.UUID.randomUUID;
+import static org.apache.openmeetings.db.bind.Constants.CALENDAR_LIST_NODE;
+import static org.apache.openmeetings.db.bind.Constants.CALENDAR_NODE;
import static org.apache.openmeetings.db.bind.Constants.CFG_LIST_NODE;
import static org.apache.openmeetings.db.bind.Constants.CFG_NODE;
+import static org.apache.openmeetings.db.bind.Constants.CHAT_LIST_NODE;
+import static org.apache.openmeetings.db.bind.Constants.CHAT_NODE;
import static org.apache.openmeetings.db.bind.Constants.GROUP_LIST_NODE;
import static org.apache.openmeetings.db.bind.Constants.GROUP_NODE;
import static org.apache.openmeetings.db.bind.Constants.OAUTH_LIST_NODE;
import static org.apache.openmeetings.db.bind.Constants.OAUTH_NODE;
+import static org.apache.openmeetings.db.bind.Constants.ROOM_GRP_LIST_NODE;
+import static org.apache.openmeetings.db.bind.Constants.ROOM_GRP_NODE;
import static org.apache.openmeetings.db.bind.Constants.ROOM_LIST_NODE;
import static org.apache.openmeetings.db.bind.Constants.ROOM_NODE;
import static org.apache.openmeetings.db.bind.Constants.USER_LIST_NODE;
@@ -147,7 +153,6 @@ import
org.apache.openmeetings.backup.converter.AppointmentConverter;
import
org.apache.openmeetings.backup.converter.AppointmentReminderTypeConverter;
import org.apache.openmeetings.backup.converter.BaseFileItemConverter;
import org.apache.openmeetings.backup.converter.DateConverter;
-import org.apache.openmeetings.backup.converter.GroupConverter;
import org.apache.openmeetings.backup.converter.OmCalendarConverter;
import org.apache.openmeetings.backup.converter.PollTypeConverter;
import org.apache.openmeetings.backup.converter.RecordingStatusConverter;
@@ -156,6 +161,7 @@ import
org.apache.openmeetings.backup.converter.UserConverter;
import org.apache.openmeetings.backup.converter.WbConverter;
import org.apache.openmeetings.core.converter.DocumentConverter;
import org.apache.openmeetings.db.bind.adapter.GroupAdapter;
+import org.apache.openmeetings.db.bind.adapter.RoomAdapter;
import org.apache.openmeetings.db.bind.adapter.UserAdapter;
import org.apache.openmeetings.db.dao.basic.ChatDao;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
@@ -680,26 +686,25 @@ public class BackupImport {
/*
* ##################### Import Room Groups
*/
- private void importRoomGroups(File base) throws Exception {
+ void importRoomGroups(File base) throws Exception {
log.info("Room import complete, starting room groups import");
- Registry registry = new Registry();
- Strategy strategy = new RegistryStrategy(registry);
- Serializer serializer = new Persister(strategy);
-
- registry.bind(Group.class, new GroupConverter(groupDao,
groupMap));
- registry.bind(Room.class, new RoomConverter(roomDao, roomMap));
+ Class<RoomGroup> eClazz = RoomGroup.class;
+ JAXBContext jc = JAXBContext.newInstance(eClazz);
+ Unmarshaller unmarshaller = jc.createUnmarshaller();
+ unmarshaller.setAdapter(new RoomAdapter(roomDao, roomMap));
+ unmarshaller.setAdapter(new GroupAdapter(groupDao, groupMap));
- readList(null, base, "rooms_organisation.xml",
"room_organisations", "room_organisation", RoomGroup.class, ro -> {
- Room r = roomDao.get(ro.getRoom().getId());
- if (r == null || ro.getGroup() == null ||
ro.getGroup().getId() == null) {
+ readList(unmarshaller, base, "rooms_organisation.xml",
ROOM_GRP_LIST_NODE, ROOM_GRP_NODE, eClazz, rg -> {
+ Room r = roomDao.get(rg.getRoom().getId());
+ if (r == null || rg.getGroup().getId() == null) {
return;
}
if (r.getGroups() == null) {
r.setGroups(new ArrayList<>());
}
- ro.setId(null);
- ro.setRoom(r);
- r.getGroups().add(ro);
+ rg.setId(null);
+ rg.setRoom(r);
+ r.getGroups().add(rg);
roomDao.update(r, null);
});
}
@@ -707,20 +712,16 @@ public class BackupImport {
/*
* ##################### Import Chat messages
*/
- private void importChat(File base) throws Exception {
+ void importChat(File base) throws Exception {
log.info("Room groups import complete, starting chat messages
import");
- Registry registry = new Registry();
- Strategy strategy = new RegistryStrategy(registry);
- Serializer serializer = new Persister(strategy);
-
- registry.bind(User.class, new UserConverter(userDao, userMap));
- registry.bind(Room.class, new RoomConverter(roomDao, roomMap));
- registry.bind(Date.class, DateConverter.class);
-
- readList(null, base, "chat_messages.xml", "chat_messages",
"chat_message", ChatMessage.class, m -> {
+ Class<ChatMessage> eClazz = ChatMessage.class;
+ JAXBContext jc = JAXBContext.newInstance(eClazz);
+ Unmarshaller unmarshaller = jc.createUnmarshaller();
+ unmarshaller.setAdapter(new UserAdapter(userDao, userMap));
+ unmarshaller.setAdapter(new RoomAdapter(roomDao, roomMap));
+ readList(unmarshaller, base, "chat_messages.xml",
CHAT_LIST_NODE, CHAT_NODE, eClazz, m -> {
m.setId(null);
- if (m.getFromUser() == null
- || m.getFromUser().getId() == null
+ if (m.getFromUser() == null || m.getFromUser().getId()
== null
|| (m.getToRoom() != null &&
m.getToRoom().getId() == null)
|| (m.getToUser() != null &&
m.getToUser().getId() == null))
{
@@ -733,13 +734,13 @@ public class BackupImport {
/*
* ##################### Import Calendars
*/
- private void importCalendars(File base) throws Exception {
+ void importCalendars(File base) throws Exception {
log.info("Chat messages import complete, starting calendar
import");
- Registry registry = new Registry();
- Strategy strategy = new RegistryStrategy(registry);
- Serializer serializer = new Persister(strategy);
- registry.bind(User.class, new UserConverter(userDao, userMap));
- readList(null, base, "calendars.xml", "calendars", "calendar",
OmCalendar.class, c -> {
+ Class<OmCalendar> eClazz = OmCalendar.class;
+ JAXBContext jc = JAXBContext.newInstance(eClazz);
+ Unmarshaller unmarshaller = jc.createUnmarshaller();
+ unmarshaller.setAdapter(new UserAdapter(userDao, userMap));
+ readList(unmarshaller, base, "calendars.xml",
CALENDAR_LIST_NODE, CALENDAR_NODE, eClazz, c -> {
Long id = c.getId();
c.setId(null);
c = calendarDao.update(c);
diff --git
a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java
b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java
index d01d50d..561a81a 100644
---
a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java
+++
b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java
@@ -23,7 +23,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import java.io.File;
-import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.basic.ChatDao;
+import org.apache.openmeetings.db.dao.calendar.OmCalendarDao;
import org.apache.openmeetings.db.dao.server.LdapConfigDao;
import org.apache.openmeetings.db.dao.server.OAuth2Dao;
import org.apache.openmeetings.db.entity.basic.Configuration;
@@ -37,11 +38,13 @@ public class TestImport extends AbstractTestImport {
@Autowired
private OAuth2Dao oauthDao;
@Autowired
- private RoomDao roomDao;
+ private ChatDao chatDao;
+ @Autowired
+ private OmCalendarDao calendarDao;
@Test
public void importVersionNE() throws Exception {
- File configs = new
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/config/nokey_deleted/configs.xml").toURI());
+ File configs = new
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/config/skip/configs.xml").toURI());
BackupVersion ver =
BackupImport.getVersion(configs.getParentFile());
assertEquals(new BackupVersion(), ver);
}
@@ -86,10 +89,26 @@ public class TestImport extends AbstractTestImport {
}
@Test
- public void importRooms() throws Exception {
- long roomsCount = roomDao.count();
- File rooms = new
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/room/rooms.xml").toURI());
- backupImport.importRooms(rooms.getParentFile());
- assertEquals(roomsCount + 1, roomDao.count(), "Room should be
added");
+ public void importChatSkip() throws Exception {
+ long chatCount = chatDao.get(0, Integer.MAX_VALUE).size();
+ File chats = new
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/chat/skip/chat_messages.xml").toURI());
+ backupImport.importChat(chats.getParentFile());
+ assertEquals(chatCount, chatDao.get(0,
Integer.MAX_VALUE).size(), "No Chat messages should be added");
+ }
+
+ @Test
+ public void importChat() throws Exception {
+ long chatCount = chatDao.get(0, Integer.MAX_VALUE).size();
+ File chats = new
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/chat/chat_messages.xml").toURI());
+ backupImport.importChat(chats.getParentFile());
+ assertEquals(chatCount + 3, chatDao.get(0,
Integer.MAX_VALUE).size(), "Chat messages should be added");
+ }
+
+ @Test
+ public void importCalendars() throws Exception {
+ long calCount = calendarDao.get().size();
+ File cals = new
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/calendar/calendars.xml").toURI());
+ backupImport.importCalendars(cals.getParentFile());
+ assertEquals(calCount + 1, calendarDao.get().size(), "Calendars
should be added");
}
}
diff --git
a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportConfig.java
b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportConfig.java
index 2bf85c2..87e2554 100644
---
a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportConfig.java
+++
b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportConfig.java
@@ -34,7 +34,7 @@ public class TestImportConfig extends AbstractTestImport {
@Test
public void importConfigsNoKeyDeleted() throws Exception {
long configsCount = cfgDao.count();
- File configs = new
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/config/nokey_deleted/configs.xml").toURI());
+ File configs = new
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/config/skip/configs.xml").toURI());
backupImport.importConfigs(configs.getParentFile());
assertEquals(configsCount, cfgDao.count(), "No records should
be added");
}
diff --git
a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportRoom.java
b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportRoom.java
new file mode 100644
index 0000000..4882a14
--- /dev/null
+++
b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportRoom.java
@@ -0,0 +1,47 @@
+/*
+ * 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.backup;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.io.File;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestImportRoom extends AbstractTestImport {
+ @Autowired
+ private RoomDao roomDao;
+
+ @Test
+ public void importRooms() throws Exception {
+ long roomsCount = roomDao.count();
+ File rooms = new
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/room/rooms.xml").toURI());
+ backupImport.importRooms(rooms.getParentFile());
+ assertEquals(roomsCount + 1, roomDao.count(), "Room should be
added");
+ }
+
+ @Test
+ public void importRoomGroups() throws Exception {
+ //TODO need to check it somehow
+ File rooms = new
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/room/rooms.xml").toURI());
+ backupImport.importRoomGroups(rooms.getParentFile());
+ }
+}
diff --git
a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportUser.java
b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportUser.java
index 001caa7..0709af4 100644
---
a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportUser.java
+++
b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportUser.java
@@ -29,7 +29,7 @@ public class TestImportUser extends AbstractTestImport {
@Test
public void importUserNE() throws Exception {
Assertions.assertThrows(BackupException.class, () -> {
- File configs = new
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/config/nokey_deleted/configs.xml").toURI());
+ File configs = new
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/config/skip/configs.xml").toURI());
backupImport.importUsers(configs.getParentFile());
});
}
@@ -45,7 +45,7 @@ public class TestImportUser extends AbstractTestImport {
@Test
public void importNoLoginDeleted() throws Exception {
long userCount = userDao.count();
- File configs = new
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/user/nologin_deleted/users.xml").toURI());
+ File configs = new
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/user/skip/users.xml").toURI());
backupImport.importUsers(configs.getParentFile());
assertEquals(userCount, userDao.count(), "No records should be
added");
}
diff --git
a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/calendar/calendars.xml
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/calendar/calendars.xml
new file mode 100644
index 0000000..57f570b
--- /dev/null
+++
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/calendar/calendars.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+
+-->
+<!-- ###############################################
+This File is auto-generated by the Backup Tool
+you should use the BackupPanel to modify or change this file
+see http://openmeetings.apache.org/Upgrade.html for Details
+###############################################
+ --><root>
+ <calendars>
+ <calendar>
+ <title>test</title>
+ <created class="org.apache.openjpa.util.java$util$Date$proxy"/>
+ </calendar>
+ </calendars>
+</root>
diff --git
a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/chat/chat_messages.xml
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/chat/chat_messages.xml
new file mode 100644
index 0000000..5521dbe
--- /dev/null
+++
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/chat/chat_messages.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+
+-->
+<!-- ###############################################
+This File is auto-generated by the Backup Tool
+you should use the BackupPanel to modify or change this file
+see http://openmeetings.apache.org/Upgrade.html for Details
+###############################################
+ --><root>
+ <chat_messages>
+ <ChatMessage>
+ <id><![CDATA[1]]></id>
+ <fromUserId><![CDATA[1]]></fromUserId>
+ <message><![CDATA[hi all<br>]]></message>
+ <sent class="java.util.Date"><![CDATA[1502679447497]]></sent>
+ <needModeration><![CDATA[false]]></needModeration>
+ </ChatMessage>
+ <ChatMessage>
+ <id><![CDATA[3]]></id>
+ <fromUserId><![CDATA[1]]></fromUserId>
+ <message><![CDATA[hi all<br>]]></message>
+ <sent class="java.util.Date"><![CDATA[1502679447497]]></sent>
+ <toRoomId>5</toRoomId>
+ <needModeration><![CDATA[false]]></needModeration>
+ </ChatMessage>
+ <ChatMessage>
+ <id><![CDATA[2]]></id>
+ <fromUserId><![CDATA[1]]></fromUserId>
+ <message><![CDATA[hello :-)]]></message>
+ <sent class="java.util.Date"><![CDATA[1502681802060]]></sent>
+ <toUserId>1</toUserId>
+ <needModeration><![CDATA[false]]></needModeration>
+ </ChatMessage>
+ </chat_messages>
+</root>
diff --git
a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/chat/skip/chat_messages.xml
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/chat/skip/chat_messages.xml
new file mode 100644
index 0000000..8f27825
--- /dev/null
+++
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/chat/skip/chat_messages.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+
+-->
+<!-- ###############################################
+This File is auto-generated by the Backup Tool
+you should use the BackupPanel to modify or change this file
+see http://openmeetings.apache.org/Upgrade.html for Details
+###############################################
+ --><root>
+ <chat_messages>
+ <ChatMessage>
+ <id><![CDATA[1]]></id>
+ <message><![CDATA[hi all<br>]]></message>
+ <sent class="java.util.Date"><![CDATA[1502679447497]]></sent>
+ <needModeration><![CDATA[false]]></needModeration>
+ </ChatMessage>
+ <ChatMessage>
+ <id><![CDATA[2]]></id>
+ <fromUserId><![CDATA[-101]]></fromUserId>
+ <message><![CDATA[hello :-)]]></message>
+ <sent class="java.util.Date"><![CDATA[1502681802060]]></sent>
+ <needModeration><![CDATA[false]]></needModeration>
+ </ChatMessage>
+ <ChatMessage>
+ <id><![CDATA[3]]></id>
+ <fromUserId><![CDATA[1]]></fromUserId>
+ <message><![CDATA[hi all<br>]]></message>
+ <sent class="java.util.Date"><![CDATA[1502679447497]]></sent>
+ <toRoomId>-666</toRoomId>
+ <needModeration><![CDATA[false]]></needModeration>
+ </ChatMessage>
+ <ChatMessage>
+ <id><![CDATA[2]]></id>
+ <fromUserId><![CDATA[1]]></fromUserId>
+ <message><![CDATA[hello :-)]]></message>
+ <sent class="java.util.Date"><![CDATA[1502681802060]]></sent>
+ <toUserId>-666</toUserId>
+ <needModeration><![CDATA[false]]></needModeration>
+ </ChatMessage>
+ </chat_messages>
+</root>
diff --git
a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/config/nokey_deleted/configs.xml
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/config/skip/configs.xml
similarity index 100%
copy from
openmeetings-web/src/test/resources/org/apache/openmeetings/backup/config/nokey_deleted/configs.xml
copy to
openmeetings-web/src/test/resources/org/apache/openmeetings/backup/config/skip/configs.xml
diff --git
a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/config/nokey_deleted/configs.xml
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/room/rooms_organisation.xml
similarity index 50%
rename from
openmeetings-web/src/test/resources/org/apache/openmeetings/backup/config/nokey_deleted/configs.xml
rename to
openmeetings-web/src/test/resources/org/apache/openmeetings/backup/room/rooms_organisation.xml
index acc38fa..2170f52 100644
---
a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/config/nokey_deleted/configs.xml
+++
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/room/rooms_organisation.xml
@@ -24,21 +24,24 @@ you should use the BackupPanel to modify or change this file
see http://openmeetings.apache.org/Upgrade.html for Details
###############################################
--><root>
- <configs>
- <config>
- <id><![CDATA[1]]></id>
-
<value><![CDATA[org.apache.openmeetings.util.crypt.SHA256Implementation]]></value>
- <created class="java.util.Date"><![CDATA[1502426201301]]></created>
- <comment><![CDATA[This Class is used for Authentification-Crypting.
Be carefull what you do here! If you change it while running previous Pass of
users will not be workign anymore! for more Information see
http://openmeetings.apache.org/CustomCryptMechanism.html]]></comment>
+ <room_organisations>
+ <room_organisation>
+ <rooms_organisation_id><![CDATA[1]]></rooms_organisation_id>
+ <rooms_id><![CDATA[666]]></rooms_id>
+ <organisation_id><![CDATA[1]]></organisation_id>
<deleted><![CDATA[false]]></deleted>
- </config>
- <config>
- <id><![CDATA[1]]></id>
- <key><![CDATA[deleted_test]]></key>
-
<value><![CDATA[org.apache.openmeetings.util.crypt.SHA256Implementation]]></value>
- <created class="java.util.Date"><![CDATA[1502426201301]]></created>
- <comment><![CDATA[This Class is used for Authentification-Crypting.
Be carefull what you do here! If you change it while running previous Pass of
users will not be workign anymore! for more Information see
http://openmeetings.apache.org/CustomCryptMechanism.html]]></comment>
- <deleted><![CDATA[true]]></deleted>
- </config>
- </configs>
+ </room_organisation>
+ <room_organisation>
+ <rooms_organisation_id><![CDATA[2]]></rooms_organisation_id>
+ <rooms_id><![CDATA[8]]></rooms_id>
+ <organisation_id><![CDATA[666]]></organisation_id>
+ <deleted><![CDATA[false]]></deleted>
+ </room_organisation>
+ <room_organisation>
+ <rooms_organisation_id><![CDATA[3]]></rooms_organisation_id>
+ <rooms_id><![CDATA[8]]></rooms_id>
+ <organisation_id><![CDATA[1]]></organisation_id>
+ <deleted><![CDATA[false]]></deleted>
+ </room_organisation>
+ </room_organisations>
</root>
diff --git
a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/user/nologin_deleted/users.xml
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/user/skip/users.xml
similarity index 100%
rename from
openmeetings-web/src/test/resources/org/apache/openmeetings/backup/user/nologin_deleted/users.xml
rename to
openmeetings-web/src/test/resources/org/apache/openmeetings/backup/user/skip/users.xml