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 9be0a78 [OPENMEETINGS-2604] extra menu import/export 9be0a78 is described below commit 9be0a78399a9ef0318f5b1207f456f1d4c5bf7dc Author: Maxim Solodovnik <solomax...@gmail.com> AuthorDate: Sat Jun 19 12:37:17 2021 +0700 [OPENMEETINGS-2604] extra menu import/export --- .../org/apache/openmeetings/db/bind/Constants.java | 2 + .../db/entity/basic/Configuration.java | 3 + .../db/entity/calendar/Appointment.java | 3 + .../db/entity/calendar/MeetingMember.java | 3 + .../db/entity/calendar/OmCalendar.java | 3 + .../openmeetings/db/entity/file/FileItem.java | 3 + .../openmeetings/db/entity/record/Recording.java | 3 + .../db/entity/record/RecordingChunk.java | 3 + .../openmeetings/db/entity/room/ExtraMenu.java | 7 ++ .../apache/openmeetings/db/entity/room/Room.java | 3 + .../openmeetings/db/entity/room/RoomModerator.java | 3 + .../openmeetings/db/entity/server/LdapConfig.java | 3 + .../openmeetings/db/entity/server/OAuthServer.java | 3 + .../openmeetings/db/entity/server/Sessiondata.java | 3 + .../openmeetings/db/entity/user/Address.java | 3 + .../apache/openmeetings/db/entity/user/Group.java | 3 + .../openmeetings/db/entity/user/GroupUser.java | 3 + .../apache/openmeetings/db/entity/user/User.java | 3 + .../apache/openmeetings/backup/BackupExport.java | 12 ++++ .../apache/openmeetings/backup/BackupImport.java | 26 +++++++- .../web/common/tree/FileTreePanel.java | 6 +- .../org/apache/openmeetings/backup/TestImport.java | 30 ++++++--- .../openmeetings/backup/TestImportCalendar.java | 7 +- .../openmeetings/backup/TestImportConfig.java | 7 +- .../apache/openmeetings/backup/TestImportOld.java | 3 +- .../apache/openmeetings/backup/TestImportRoom.java | 5 +- .../apache/openmeetings/backup/TestImportUser.java | 9 +-- .../apache/openmeetings/backup/menu/extraMenus.xml | 75 ++++++++++++++++++++++ 28 files changed, 213 insertions(+), 24 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 10c15c1..67f1af6 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 @@ -57,6 +57,8 @@ public class Constants { public static final String POLL_NODE = "roompoll"; public static final String ROOM_FILE_LIST_NODE = "RoomFiles"; public static final String ROOM_FILE_NODE = "RoomFile"; + public static final String EXTRA_MENU_LIST_NODE = "ExtraMenus"; + public static final String EXTRA_MENU_NODE = "ExtraMenu"; private Constants() { //shoudn't be used 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 092b71d..f1a79b1 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 @@ -35,6 +35,8 @@ 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; @@ -59,6 +61,7 @@ import org.apache.openmeetings.db.entity.user.User; @Index(name = "key_idx", columnList = "om_key", unique = true) }) @XmlRootElement(name = CFG_NODE) +@XmlAccessorType(XmlAccessType.FIELD) public class Configuration extends HistoricalEntity { private static final long serialVersionUID = 1L; 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 28572bd..13cb47e 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 @@ -42,6 +42,8 @@ import javax.persistence.ManyToOne; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; 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.XmlTransient; @@ -130,6 +132,7 @@ import org.apache.openmeetings.db.entity.user.User; @NamedQuery(name = "deleteAppointmentsbyCalendar", query = "UPDATE Appointment a SET a.deleted = true WHERE a.calendar.id = :calId") @XmlRootElement(name = APPOINTMENT_NODE) +@XmlAccessorType(XmlAccessType.FIELD) public class Appointment extends HistoricalEntity { private static final long serialVersionUID = 1L; public static final int REMINDER_NONE_ID = 1; 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 3185fa3..63a5de1 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 @@ -32,6 +32,8 @@ import javax.persistence.ManyToOne; import javax.persistence.NamedQuery; import javax.persistence.OneToOne; 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.XmlTransient; @@ -53,6 +55,7 @@ import org.apache.openmeetings.db.entity.user.User; @NamedQuery(name="getMeetingMemberIdsByAppointment" , query="SELECT mm.id FROM MeetingMember mm WHERE mm.deleted = false AND mm.appointment.id = :id") @XmlRootElement(name = MMEMBER_NODE) +@XmlAccessorType(XmlAccessType.FIELD) public class MeetingMember extends HistoricalEntity { private static final long serialVersionUID = 1L; @Id 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 c82dabe..0dd1bfc 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 @@ -32,6 +32,8 @@ 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; @@ -62,6 +64,7 @@ import org.apache.openmeetings.db.entity.user.User; + " 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") @XmlRootElement(name = CALENDAR_NODE) +@XmlAccessorType(XmlAccessType.FIELD) public class OmCalendar extends HistoricalEntity { private static final long serialVersionUID = 1L; diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java index 3f0b458..90e84f5 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java @@ -23,6 +23,8 @@ import static org.apache.openmeetings.db.bind.Constants.FILE_NODE; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.NamedQuery; +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; @@ -48,6 +50,7 @@ import org.apache.openmeetings.db.bind.adapter.LongAdapter; + "AND f.groupId = :groupId AND f.parentId IS NULL AND f.type IN :filter " + "ORDER BY f.type ASC, f.name") @XmlRootElement(name = FILE_NODE) +@XmlAccessorType(XmlAccessType.FIELD) public class FileItem extends BaseFileItem { private static final long serialVersionUID = 1L; diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java index db18cc5..2253b34 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java @@ -35,6 +35,8 @@ import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; @@ -98,6 +100,7 @@ import org.apache.openmeetings.db.entity.file.BaseFileItem; + " OR r.roomId IN (SELECT rg.room.id FROM RoomGroup rg WHERE rg.group.id = :groupId)" + " ) order by r.inserted ASC") @XmlRootElement(name = RECORDING_NODE) +@XmlAccessorType(XmlAccessType.FIELD) public class Recording extends BaseFileItem { private static final long serialVersionUID = 1L; diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingChunk.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingChunk.java index 369534f..5cf2ee3 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingChunk.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingChunk.java @@ -32,6 +32,8 @@ 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.XmlTransient; @@ -60,6 +62,7 @@ import org.apache.openmeetings.db.entity.HistoricalEntity; @NamedQuery(name = "getScreenChunkByRecording", query = "SELECT c FROM RecordingChunk c WHERE c.recording.id = :recordingId AND c.type = :screen") @Table(name = "recording_chunk") @XmlRootElement(name = "flvrecordingmetadata") +@XmlAccessorType(XmlAccessType.FIELD) public class RecordingChunk extends HistoricalEntity { private static final long serialVersionUID = 1L; @XmlType(namespace="org.apache.openmeetings.record.chunk") diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/ExtraMenu.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/ExtraMenu.java index 609b0b2..ff280f7 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/ExtraMenu.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/ExtraMenu.java @@ -18,6 +18,8 @@ */ package org.apache.openmeetings.db.entity.room; +import static org.apache.openmeetings.db.bind.Constants.EXTRA_MENU_NODE; + import java.util.ArrayList; import java.util.List; @@ -33,8 +35,11 @@ import javax.persistence.JoinColumn; import javax.persistence.NamedQueries; 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.XmlElementWrapper; +import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import org.apache.openmeetings.db.bind.adapter.LongAdapter; @@ -48,6 +53,8 @@ import org.apache.openmeetings.db.entity.IDataProviderEntity; , @NamedQuery(name = "countExtraMenus", query = "SELECT COUNT(m) FROM ExtraMenu m") }) @Table(name = "extra_menu") +@XmlRootElement(name = EXTRA_MENU_NODE) +@XmlAccessorType(XmlAccessType.FIELD) public class ExtraMenu implements IDataProviderEntity { private static final long serialVersionUID = 1L; 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 bd222a8..4e7f986 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 @@ -47,6 +47,8 @@ import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Transient; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; @@ -98,6 +100,7 @@ import org.apache.openmeetings.db.entity.user.Group; @Index(name = "room_name_idx", columnList = "name") }) @XmlRootElement(name = ROOM_NODE) +@XmlAccessorType(XmlAccessType.FIELD) public class Room extends HistoricalEntity { private static final long serialVersionUID = 1L; public static final int CONFERENCE_TYPE_ID = 1; 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 310a418..f26fd32 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 @@ -28,6 +28,8 @@ 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.XmlTransient; @@ -47,6 +49,7 @@ import org.apache.openmeetings.db.entity.user.User; + "where c.roomId = :roomId AND c.deleted = false AND c.user.id = :userId") @Table(name = "room_moderator") @XmlRootElement(name = "room_moderator") +@XmlAccessorType(XmlAccessType.FIELD) public class RoomModerator extends HistoricalEntity { private static final long serialVersionUID = 1L; 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 1ce2585..1e322e5 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 @@ -31,6 +31,8 @@ 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.XmlTransient; @@ -48,6 +50,7 @@ import org.apache.openmeetings.db.entity.user.User; @NamedQuery(name="getActiveLdapConfigs", query="SELECT c FROM LdapConfig c WHERE c.deleted = false AND c.active = :isActive ORDER BY c.id") @Table(name = "ldapconfig") @XmlRootElement(name = LDAP_NODE) +@XmlAccessorType(XmlAccessType.FIELD) public class LdapConfig extends HistoricalEntity { private static final long serialVersionUID = 1L; @Id 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 d223706..049eba8 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 @@ -37,6 +37,8 @@ import javax.persistence.JoinColumn; import javax.persistence.MapKeyColumn; 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.XmlAnyElement; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -55,6 +57,7 @@ import org.apache.openmeetings.db.entity.HistoricalEntity; @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") @XmlRootElement(name = OAUTH_NODE) +@XmlAccessorType(XmlAccessType.FIELD) public class OAuthServer extends HistoricalEntity { private static final long serialVersionUID = 1L; diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Sessiondata.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Sessiondata.java index edeb124..9ba80c5 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Sessiondata.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Sessiondata.java @@ -30,6 +30,8 @@ import javax.persistence.Index; import javax.persistence.Lob; 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.XmlRootElement; @Entity @@ -39,6 +41,7 @@ import javax.xml.bind.annotation.XmlRootElement; @Index(name = "session_id_idx", columnList = "session_id", unique = true) }) @XmlRootElement +@XmlAccessorType(XmlAccessType.FIELD) public class Sessiondata implements Serializable { private static final long serialVersionUID = 1L; @Id diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Address.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Address.java index b60cec8..4836fed 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Address.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Address.java @@ -26,6 +26,8 @@ import javax.persistence.Id; import javax.persistence.Index; import javax.persistence.Lob; 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.XmlTransient; @@ -37,6 +39,7 @@ import org.apache.openmeetings.db.entity.HistoricalEntity; @Index(name = "email_idx", columnList = "email") }) @XmlRootElement(name = "address") +@XmlAccessorType(XmlAccessType.FIELD) public class Address extends HistoricalEntity { private static final long serialVersionUID = 1L; @Id 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 95b5d6115..30b0c33 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 @@ -28,6 +28,8 @@ import javax.persistence.Id; import javax.persistence.Index; 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.XmlTransient; @@ -52,6 +54,7 @@ import org.apache.openmeetings.db.entity.HistoricalEntity; @Index(name = "group_name_idx", columnList = "name") }) @XmlRootElement(name = GROUP_NODE) +@XmlAccessorType(XmlAccessType.FIELD) public class Group extends HistoricalEntity { private static final long serialVersionUID = 1L; 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 4f4b7d1..b693ef5 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 @@ -28,6 +28,8 @@ 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.XmlTransient; @@ -48,6 +50,7 @@ import org.apache.openmeetings.db.entity.HistoricalEntity; @NamedQuery(name = "getGroupModerators", query = "SELECT gu.user FROM GroupUser gu WHERE gu.deleted = false AND gu.moderator = true AND gu.group.id = :id") @Table(name = "group_user") @XmlRootElement(name = "user_organisation") +@XmlAccessorType(XmlAccessType.FIELD) public class GroupUser extends HistoricalEntity { private static final long serialVersionUID = 1L; @Id 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 fb9cb98..33a6386 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 @@ -57,6 +57,8 @@ import javax.persistence.OneToOne; import javax.persistence.PrimaryKeyJoinColumn; import javax.persistence.Table; import javax.persistence.Transient; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; @@ -126,6 +128,7 @@ import org.apache.wicket.util.string.Strings; , @Index(name = "type_idx", columnList = "type") }) @XmlRootElement(name = USER_NODE) +@XmlAccessorType(XmlAccessType.FIELD) public class User extends HistoricalEntity { private static final long serialVersionUID = 1L; public static final String DISPLAY_NAME_NA = "N/A"; 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 a12f60b..6990b12 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 @@ -23,6 +23,7 @@ import static org.apache.openmeetings.db.bind.Constants.CALENDAR_LIST_NODE; import static org.apache.openmeetings.db.bind.Constants.CFG_LIST_NODE; import static org.apache.openmeetings.db.bind.Constants.CHAT_LIST_NODE; import static org.apache.openmeetings.db.bind.Constants.CONTACT_LIST_NODE; +import static org.apache.openmeetings.db.bind.Constants.EXTRA_MENU_LIST_NODE; import static org.apache.openmeetings.db.bind.Constants.FILE_LIST_NODE; import static org.apache.openmeetings.db.bind.Constants.GROUP_LIST_NODE; import static org.apache.openmeetings.db.bind.Constants.LDAP_LIST_NODE; @@ -71,6 +72,7 @@ import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao; import org.apache.openmeetings.db.dao.calendar.OmCalendarDao; import org.apache.openmeetings.db.dao.file.FileItemDao; import org.apache.openmeetings.db.dao.record.RecordingDao; +import org.apache.openmeetings.db.dao.room.ExtraMenuDao; import org.apache.openmeetings.db.dao.room.PollDao; import org.apache.openmeetings.db.dao.room.RoomDao; import org.apache.openmeetings.db.dao.server.LdapConfigDao; @@ -86,6 +88,7 @@ import org.apache.openmeetings.db.entity.calendar.Appointment; import org.apache.openmeetings.db.entity.calendar.OmCalendar; import org.apache.openmeetings.db.entity.file.FileItem; import org.apache.openmeetings.db.entity.record.Recording; +import org.apache.openmeetings.db.entity.room.ExtraMenu; import org.apache.openmeetings.db.entity.room.Room; import org.apache.openmeetings.db.entity.room.RoomPoll; import org.apache.openmeetings.db.entity.server.LdapConfig; @@ -147,6 +150,8 @@ public class BackupExport { private GroupDao groupDao; @Autowired private RoomDao roomDao; + @Autowired + private ExtraMenuDao menuDao; public void performExport(File zip, boolean includeFiles, ProgressHolder progressHolder) throws Exception { if (zip.getParentFile() != null && !zip.getParentFile().exists()) { @@ -195,6 +200,8 @@ public class BackupExport { progressHolder.setProgress(80); exportChat(zos); progressHolder.setProgress(85); + exportExtraMenus(zos); + progressHolder.setProgress(87); if (includeFiles) { exportFiles(progressHolder, zos); @@ -369,6 +376,11 @@ public class BackupExport { writeList(zos, "chat_messages.xml", CHAT_LIST_NODE, list); } + private void exportExtraMenus(ZipOutputStream zos) throws Exception { + List<ExtraMenu> list = menuDao.get(0, Integer.MAX_VALUE); + writeList(zos, "extraMenus.xml", EXTRA_MENU_LIST_NODE, list); + } + /* * Package private for tests */ 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 b9906d3..8a66ea9 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 @@ -30,6 +30,8 @@ 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.CONTACT_LIST_NODE; import static org.apache.openmeetings.db.bind.Constants.CONTACT_NODE; +import static org.apache.openmeetings.db.bind.Constants.EXTRA_MENU_LIST_NODE; +import static org.apache.openmeetings.db.bind.Constants.EXTRA_MENU_NODE; import static org.apache.openmeetings.db.bind.Constants.FILE_LIST_NODE; import static org.apache.openmeetings.db.bind.Constants.FILE_NODE; import static org.apache.openmeetings.db.bind.Constants.GROUP_LIST_NODE; @@ -191,6 +193,7 @@ import org.apache.openmeetings.db.dao.calendar.OmCalendarDao; import org.apache.openmeetings.db.dao.file.BaseFileItemDao; import org.apache.openmeetings.db.dao.file.FileItemDao; import org.apache.openmeetings.db.dao.record.RecordingDao; +import org.apache.openmeetings.db.dao.room.ExtraMenuDao; import org.apache.openmeetings.db.dao.room.PollDao; import org.apache.openmeetings.db.dao.room.RoomDao; import org.apache.openmeetings.db.dao.server.LdapConfigDao; @@ -210,6 +213,7 @@ import org.apache.openmeetings.db.entity.file.BaseFileItem; import org.apache.openmeetings.db.entity.file.FileItem; import org.apache.openmeetings.db.entity.record.Recording; import org.apache.openmeetings.db.entity.record.RecordingChunk; +import org.apache.openmeetings.db.entity.room.ExtraMenu; import org.apache.openmeetings.db.entity.room.Room; import org.apache.openmeetings.db.entity.room.RoomFile; import org.apache.openmeetings.db.entity.room.RoomGroup; @@ -347,6 +351,8 @@ public class BackupImport { @Autowired private GroupDao groupDao; @Autowired + private ExtraMenuDao menuDao; + @Autowired private DocumentConverter docConverter; private final Map<Long, Long> ldapMap = new HashMap<>(); @@ -446,8 +452,10 @@ public class BackupImport { progressHolder.setProgress(87); importRoomFiles(f); progressHolder.setProgress(92); + importExtraMenus(f); + progressHolder.setProgress(95); - log.info("Room files import complete, starting copy of files and folders"); + log.info("Extra menus import complete, starting copy of files and folders"); /* * ##################### Import real files and folders */ @@ -1133,6 +1141,22 @@ public class BackupImport { }, true); } + void importExtraMenus(File base) throws Exception { + log.info("Room files complete, starting extra menus import"); + Class<ExtraMenu> eClazz = ExtraMenu.class; + JAXBContext jc = JAXBContext.newInstance(eClazz); + Unmarshaller unmarshaller = jc.createUnmarshaller(); + unmarshaller.setAdapter(new GroupAdapter(groupDao, groupMap)); + + readList(unmarshaller, base, "extraMenus.xml", EXTRA_MENU_LIST_NODE, EXTRA_MENU_NODE, eClazz, m -> { + if (Strings.isEmpty(m.getName()) || Strings.isEmpty(m.getLink())) { + return; + } + m.setId(null); + menuDao.update(m, null); + }, true); + } + private static <T> void readList(File baseDir, String fileName, String listNodeName, String nodeName, Class<T> clazz, Consumer<T> consumer) { readList(baseDir, fileName, listNodeName, nodeName, clazz, consumer, false); } diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java index abf1b7d..8ea79c8 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java @@ -293,7 +293,11 @@ public abstract class FileTreePanel extends Panel { ? fi.getOriginal() : fi.getFile(ext); if (f != null && f.exists()) { dwnldFile = f; - dwnldName = fi.getName() + "." + OmFileHelper.getFileExt(f.getName()); + String fileExt = OmFileHelper.getFileExt(f.getName()); + dwnldName = fi.getName(); + if (!dwnldName.endsWith(fileExt)) { + dwnldName += "." + fileExt; + } downloader.initiate(target); } } 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 835e19e..249e38b 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 @@ -25,6 +25,7 @@ import java.io.File; import org.apache.openmeetings.db.dao.basic.ChatDao; import org.apache.openmeetings.db.dao.record.RecordingDao; +import org.apache.openmeetings.db.dao.room.ExtraMenuDao; import org.apache.openmeetings.db.dao.server.LdapConfigDao; import org.apache.openmeetings.db.dao.server.OAuth2Dao; import org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao; @@ -34,6 +35,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; class TestImport extends AbstractTestImport { + public static final String BACKUP_ROOT = "org/apache/openmeetings/backup/"; @Autowired private LdapConfigDao ldapDao; @Autowired @@ -44,17 +46,19 @@ class TestImport extends AbstractTestImport { private RecordingDao recDao; @Autowired private PrivateMessageFolderDao msgFolderDao; + @Autowired + private ExtraMenuDao menuDao; @Test void importVersionNE() throws Exception { - File configs = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/config/skip/configs.xml").toURI()); + File configs = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "config/skip/configs.xml").toURI()); BackupVersion ver = BackupImport.getVersion(configs.getParentFile()); assertEquals(new BackupVersion(), ver); } @Test void importVersion() throws Exception { - File version = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/version/version.xml").toURI()); + File version = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "version/version.xml").toURI()); BackupVersion ver = BackupImport.getVersion(version.getParentFile()); assertEquals(5, ver.getMajor(), "major"); assertEquals(0, ver.getMinor(), "minor"); @@ -63,7 +67,7 @@ class TestImport extends AbstractTestImport { @Test void importGroups() throws Exception { long grpCount = groupDao.count(); - File groups = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/group/organizations.xml").toURI()); + File groups = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "group/organizations.xml").toURI()); backupImport.importGroups(groups.getParentFile()); assertEquals(grpCount + 1, groupDao.count(), "Group should be added"); } @@ -76,7 +80,7 @@ class TestImport extends AbstractTestImport { cfgDao.update(def, null); } long ldapCount = ldapDao.count(); - File ldaps = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/ldap/ldapconfigs.xml").toURI()); + File ldaps = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "ldap/ldapconfigs.xml").toURI()); Long id = backupImport.importLdap(ldaps.getParentFile()); assertEquals(ldapCount + 1, ldapDao.count(), "Ldap should be added"); LdapConfig ldap = ldapDao.get(id); @@ -86,7 +90,7 @@ class TestImport extends AbstractTestImport { @Test void importOauths() throws Exception { long oauthCount = oauthDao.count(); - File oauths = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/oauth/oauth2servers.xml").toURI()); + File oauths = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "oauth/oauth2servers.xml").toURI()); backupImport.importOauth(oauths.getParentFile()); assertEquals(oauthCount + 2, oauthDao.count(), "OAuth should be added"); } @@ -94,7 +98,7 @@ class TestImport extends AbstractTestImport { @Test 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()); + File chats = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "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"); } @@ -102,15 +106,23 @@ class TestImport extends AbstractTestImport { @Test 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()); + File chats = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "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 + void importExtraMenu() throws Exception { + long menuCount = menuDao.count(); + File menus = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "menu/extraMenus.xml").toURI()); + backupImport.importExtraMenus(menus.getParentFile()); + assertEquals(menuCount + 3, menuDao.count(), "Extra menus should be added"); + } + + @Test void importRecordings() throws Exception { long recCount = recDao.get().size(); - File recs = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/file/flvRecordings.xml").toURI()); + File recs = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "file/flvRecordings.xml").toURI()); backupImport.importRecordings(recs.getParentFile()); assertEquals(recCount + 4, recDao.get().size(), "Recordings should be added"); } @@ -118,7 +130,7 @@ class TestImport extends AbstractTestImport { @Test void importMsgFolders() throws Exception { long fldrCount = msgFolderDao.get(0, Integer.MAX_VALUE).size(); - File fldrs = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/msg/privateMessageFolder.xml").toURI()); + File fldrs = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "msg/privateMessageFolder.xml").toURI()); backupImport.importPrivateMsgFolders(fldrs.getParentFile()); assertEquals(fldrCount + 1, msgFolderDao.get(0, Integer.MAX_VALUE).size(), "Message folders should be added"); } diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportCalendar.java b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportCalendar.java index ba445a3..46a759a 100644 --- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportCalendar.java +++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportCalendar.java @@ -18,6 +18,7 @@ */ package org.apache.openmeetings.backup; +import static org.apache.openmeetings.backup.TestImport.BACKUP_ROOT; import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.File; @@ -36,7 +37,7 @@ class TestImportCalendar extends AbstractTestImport { @Test void importCalendars() throws Exception { long calCount = calendarDao.get().size(); - File cals = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/calendar/calendars.xml").toURI()); + File cals = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "calendar/calendars.xml").toURI()); backupImport.importCalendars(cals.getParentFile()); assertEquals(calCount + 1, calendarDao.get().size(), "Calendars should be added"); } @@ -44,7 +45,7 @@ class TestImportCalendar extends AbstractTestImport { @Test void importAppointmentsSkip() throws Exception { long appCount = appointmentDao.get().size(); - File apps = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/calendar/skip/appointements.xml").toURI()); + File apps = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "calendar/skip/appointements.xml").toURI()); backupImport.importAppointments(apps.getParentFile()); assertEquals(appCount, appointmentDao.get().size(), "No Appointments should be added"); } @@ -52,7 +53,7 @@ class TestImportCalendar extends AbstractTestImport { @Test void importAppointments() throws Exception { long appCount = appointmentDao.get().size(); - File apps = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/calendar/appointements.xml").toURI()); + File apps = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "calendar/appointements.xml").toURI()); backupImport.importAppointments(apps.getParentFile()); assertEquals(appCount + 2, appointmentDao.get().size(), "Appointments 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 5f7d1fe..de3c7b3 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 @@ -18,6 +18,7 @@ */ package org.apache.openmeetings.backup; +import static org.apache.openmeetings.backup.TestImport.BACKUP_ROOT; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REGISTER_FRONTEND; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REGISTER_OAUTH; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REGISTER_SOAP; @@ -34,7 +35,7 @@ class TestImportConfig extends AbstractTestImport { @Test void importConfigsNoKeyDeleted() throws Exception { long configsCount = cfgDao.count(); - File configs = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/config/skip/configs.xml").toURI()); + File configs = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "config/skip/configs.xml").toURI()); backupImport.importConfigs(configs.getParentFile()); assertEquals(configsCount, cfgDao.count(), "No records should be added"); } @@ -52,7 +53,7 @@ class TestImportConfig extends AbstractTestImport { cfgNE2.setType(Configuration.Type.BOOL); } cfgDao.update(cfgNE2, null, true); - File configs = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/config/bool/configs.xml").toURI()); + File configs = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "config/bool/configs.xml").toURI()); backupImport.importConfigs(configs.getParentFile()); cfgDao.get(CONFIG_REGISTER_FRONTEND, CONFIG_REGISTER_SOAP, CONFIG_REGISTER_OAUTH, CONFIG_REPLY_TO_ORGANIZER).forEach(cfg -> { boolean exp = !cfg.getKey().equals(CONFIG_REPLY_TO_ORGANIZER); @@ -62,7 +63,7 @@ class TestImportConfig extends AbstractTestImport { @Test void importConfigs() throws Exception { - File configs = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/config/configs.xml").toURI()); + File configs = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "config/configs.xml").toURI()); backupImport.importConfigs(configs.getParentFile()); } } diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportOld.java b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportOld.java index 2653104..2d80d25 100644 --- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportOld.java +++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportOld.java @@ -18,6 +18,7 @@ */ package org.apache.openmeetings.backup; +import static org.apache.openmeetings.backup.TestImport.BACKUP_ROOT; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; @@ -99,7 +100,7 @@ class TestImportOld extends AbstractTestImport { */ @Test void importJira2423() throws Exception { - try (InputStream is = getClass().getClassLoader().getResourceAsStream("org/apache/openmeetings/backup/jira2423/backup_2423.zip")) { + try (InputStream is = getClass().getClassLoader().getResourceAsStream(BACKUP_ROOT + "jira2423/backup_2423.zip")) { backupImport.performImport(is, new ProgressHolder()); Group grp2 = groupDao.get("group2_jira_2423"); 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 index 591088a..e96f0f6 100644 --- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportRoom.java +++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportRoom.java @@ -18,6 +18,7 @@ */ package org.apache.openmeetings.backup; +import static org.apache.openmeetings.backup.TestImport.BACKUP_ROOT; import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.File; @@ -33,7 +34,7 @@ class TestImportRoom extends AbstractTestImport { @Test void importRooms() throws Exception { long roomsCount = roomDao.count(); - File rooms = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/room/rooms.xml").toURI()); + File rooms = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "room/rooms.xml").toURI()); backupImport.importRooms(rooms.getParentFile()); assertEquals(roomsCount + 1, roomDao.count(), "Room should be added"); } @@ -41,7 +42,7 @@ class TestImportRoom extends AbstractTestImport { @Test 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()); + File rooms = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "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 a6c479e..57b2023 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 @@ -18,6 +18,7 @@ */ package org.apache.openmeetings.backup; +import static org.apache.openmeetings.backup.TestImport.BACKUP_ROOT; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -38,7 +39,7 @@ class TestImportUser extends AbstractTestImport { @Test void importUserNE() throws Exception { Assertions.assertThrows(BackupException.class, () -> { - File configs = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/config/skip/configs.xml").toURI()); + File configs = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "config/skip/configs.xml").toURI()); backupImport.importUsers(configs.getParentFile()); }); } @@ -46,7 +47,7 @@ class TestImportUser extends AbstractTestImport { @Test void importUsers() throws Exception { long userCount = userDao.count(); - File users = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/user/users.xml").toURI()); + File users = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "user/users.xml").toURI()); backupImport.importUsers(users.getParentFile()); assertEquals(userCount + 8, userDao.count(), "Users should be added"); User ext = userDao.getExternalUser("234", "TheBestCms"); @@ -56,7 +57,7 @@ class TestImportUser extends AbstractTestImport { @Test void importNoLoginDeleted() throws Exception { long userCount = userDao.count(); - File users = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/user/skip/users.xml").toURI()); + File users = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "user/skip/users.xml").toURI()); backupImport.importUsers(users.getParentFile()); assertEquals(userCount, userDao.count(), "No records should be added"); } @@ -69,7 +70,7 @@ class TestImportUser extends AbstractTestImport { for (LdapConfig cfg : ldapDao.get(0, Integer.MAX_VALUE)) { ldapDao.delete(cfg, null); } - File users = new File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/user/ldap/users.xml").toURI()); + File users = new File(getClass().getClassLoader().getResource(BACKUP_ROOT + "user/ldap/users.xml").toURI()); backupImport.cleanup(); backupImport.importLdap(users.getParentFile()); List<LdapConfig> ldapConfigs = ldapDao.get("om_2294_ldap", 0, 100, null); diff --git a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/menu/extraMenus.xml b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/menu/extraMenus.xml new file mode 100644 index 0000000..d3e4656 --- /dev/null +++ b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/menu/extraMenus.xml @@ -0,0 +1,75 @@ +<?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 +############################################### + --> + <!--############################################### +This File is auto-generated by the Backup Tool +you should use the BackupPanel to modify or change this file +see https://openmeetings.apache.org/Upgrade.html for Details +############################################### +--> +<root> +<ExtraMenus> +<ExtraMenu> + <id>1</id> + <name>test</name> + <link>unipro.ru</link> + <description>Unipro</description> + <groups/> +</ExtraMenu> +<ExtraMenu> + <id>2</id> + <name>aasdadasd</name> + <link>asdasdasdsad.com</link> + <groups> + <group>1</group> + </groups> +</ExtraMenu> +<ExtraMenu> + <id>3</id> + <name>wwwwww</name> + <link>wwwww.ru</link> + <description>test group</description> + <groups> + <group>2</group> + </groups> +</ExtraMenu> +<ExtraMenu> + <id>4</id> + <name></name> + <link>aaa.com</link> + <description>test no name</description> +</ExtraMenu> +<ExtraMenu> + <id>5</id> + <name>bbbbbb</name> + <description>test no link</description> +</ExtraMenu> +<ExtraMenu> + <id>6</id> + <description>test no name and link</description> +</ExtraMenu> +</ExtraMenus> +</root>