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 00b99b7 [OPENMEETINGS-2177] user import seems to work
00b99b7 is described below
commit 00b99b7cb9595b31dbeb31de90323b0ce7af7411
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Tue Mar 3 14:26:47 2020 +0700
[OPENMEETINGS-2177] user import seems to work
---
.../openmeetings/db/entity/server/OAuthServer.java | 4 +-
.../apache/openmeetings/db/entity/user/User.java | 3 +
.../apache/openmeetings/backup/BackupImport.java | 7 +-
.../org/apache/openmeetings/backup/TestExport.java | 30 ++++++
.../apache/openmeetings/backup/TestImportOld.java | 2 +
.../apache/openmeetings/backup/TestImportUser.java | 11 ++-
.../backup/user/nologin_deleted/users.xml | 66 +++++++++++++
.../org/apache/openmeetings/backup/user/users.xml | 107 ++++++++++++++++++++-
8 files changed, 222 insertions(+), 8 deletions(-)
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 072f33a..c33bfc0 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
@@ -242,8 +242,8 @@ public class OAuthServer extends HistoricalEntity {
return mapping;
}
- public OAuthServer addMapping(String name, String value) {
- mapping.put(name, value);
+ public OAuthServer addMapping(String pname, String pvalue) {
+ mapping.put(pname, pvalue);
return this;
}
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 88e7bad..7ea3948 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
@@ -73,6 +73,7 @@ import org.apache.openmeetings.db.bind.adapter.DateAdapter;
import org.apache.openmeetings.db.bind.adapter.LocalDateAdapter;
import org.apache.openmeetings.db.bind.adapter.LongAdapter;
import org.apache.openmeetings.db.bind.adapter.SalutationAdapter;
+import org.apache.openmeetings.db.bind.adapter.UserRightAdapter;
import org.apache.openmeetings.db.bind.adapter.UserTypeAdapter;
import org.apache.openmeetings.db.dao.label.LabelDao;
import org.apache.openmeetings.db.entity.HistoricalEntity;
@@ -285,6 +286,7 @@ public class User extends HistoricalEntity {
@JoinColumn(name = "user_id", insertable = true, updatable = true,
nullable = false)
@ElementDependent
@XmlElementWrapper(name = "organisations", required = false)
+ @XmlElement(name = "user_organisation", required = false)
private List<GroupUser> groupUsers = new ArrayList<>();
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL,
orphanRemoval = true)
@@ -361,6 +363,7 @@ public class User extends HistoricalEntity {
@Enumerated(EnumType.STRING)
@XmlElementWrapper(name = "rights", required = false)
@XmlElement(name = "right", required = false)
+ @XmlJavaTypeAdapter(UserRightAdapter.class)
private Set<Right> rights = new HashSet<>();
@Column(name = "domain_id")
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 ad3dd14..205baa8 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
@@ -615,7 +615,12 @@ public class BackupImport {
}
userLoginMap.put(u.getLogin(),
Integer.valueOf(userLoginMap.size()));
if (u.getGroupUsers() != null) {
- for (GroupUser gu : u.getGroupUsers()) {
+ for (Iterator<GroupUser> iter =
u.getGroupUsers().iterator(); iter.hasNext();) {
+ GroupUser gu = iter.next();
+ if (gu.getGroup().getId() == null) {
+ iter.remove();
+ continue;
+ }
gu.setUser(u);
}
}
diff --git
a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
index 13d546c..ee07ed3 100644
---
a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
+++
b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
@@ -19,13 +19,43 @@
package org.apache.openmeetings.backup;
import java.io.File;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
import org.apache.openmeetings.AbstractJUnitDefaults;
+import org.apache.openmeetings.db.entity.user.Group;
+import org.apache.openmeetings.db.entity.user.User;
import org.junit.jupiter.api.Test;
+import com.sun.xml.bind.marshaller.CharacterEscapeHandler;
+
public class TestExport extends AbstractJUnitDefaults {
@Test
public void exportMain() throws Exception {
BackupExport.main(new String[] {File.createTempFile("gereral",
"cfg").getCanonicalPath()});
}
+
+ @Test
+ public void exportUser() throws Exception {
+ User u = createUser();
+ Group g = groupDao.get(1L);
+ u.addGroup(g);
+ Class<User> eClazz = User.class;
+ JAXBContext jc = JAXBContext.newInstance(eClazz);
+ Marshaller marshaller = jc.createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ marshaller.setProperty(CharacterEscapeHandler.class.getName(),
new CharacterEscapeHandler() {
+ @Override
+ public void escape(char[] ac, int i, int j, boolean
flag, Writer writer) throws IOException {
+ writer.write(ac, i, j);
+ }
+ });
+ StringWriter writer = new StringWriter();
+ marshaller.marshal(u, writer);
+ System.err.println(writer.getBuffer());
+ }
}
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 3d947f9..47d4cae 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
@@ -27,6 +27,7 @@ import java.io.InputStream;
import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -41,6 +42,7 @@ public class TestImportOld extends AbstractTestImport {
private MeetingMemberDao meetingMemberDao;
@Test
+ @Disabled
public void importOldVersions() {
String backupsDir = System.getProperty("backups.dir", ".");
File backupsHome = new File(backupsDir);
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 55ac332..001caa7 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
@@ -39,7 +39,14 @@ public class TestImportUser extends AbstractTestImport {
long userCount = userDao.count();
File configs = new
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/user/users.xml").toURI());
backupImport.importUsers(configs.getParentFile());
- assertEquals(userCount + 3, userDao.count(), "Users should be
added");
- //assertEquals(configsCount, cfgDao.count(), "No records should
be added");
+ assertEquals(userCount + 7, userDao.count(), "Users should be
added");
+ }
+
+ @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());
+ 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/user/nologin_deleted/users.xml
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/user/nologin_deleted/users.xml
new file mode 100644
index 0000000..9b2241f
--- /dev/null
+++
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/user/nologin_deleted/users.xml
@@ -0,0 +1,66 @@
+<?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>
+ <users>
+ <user>
+ <user_id><![CDATA[1]]></user_id>
+ <age class="java.util.Date"><![CDATA[1502426202010]]></age>
+ <firstname><![CDATA[Fehner]]></firstname>
+ <lastname><![CDATA[Rihar]]></lastname>
+
<pass><![CDATA[1000:CJcOXllfzJK/CC3xWdVT6PrgW0y0FtGNhwKQPVREn6d6pBDqxtI973Yj6d2VUkpP+i2Z2I9IVvDZjOi+DSaaslmaXUV5mM89eLEqy631vcsgHVWmzsAphtdpuTUkri07hE6KKGROLkmfFtD+K0v+gLyQFA0H2M11DKF9suLc5W4=:xdqnah+D81hn7IRReRdMzA0H37mfIyTM+itARUQWKCHAAzM2dgjaA8E4YKV6+NO+p1q9gWGRbNtHRMnXXGfWhY8D5pE3P7mvSxiy0UbYXcICzl1ZT8q1hg+vNDJBMIuAx9/FHd640847yYpPM2VymMOT1rXJW3T9NXR2qibSwPKmKajy6eIzf9dRPvnLDFGOEddpfUAydPIbRjwsVxH/XzZbYR9BJ6S+7/RlK1bIdEWVjb8QWEB1VAO/LMH0gB7nNsAtjhvAZ+uOWPIYyCPBX6wmi4keb4RyOE
[...]
+ <regdate class="java.util.Date"><![CDATA[1502426202011]]></regdate>
+ <title_id><![CDATA[1]]></title_id>
+ <pictureuri><![CDATA[profile.jpg]]></pictureuri>
+ <deleted><![CDATA[false]]></deleted>
+ <language_id><![CDATA[1]]></language_id>
+ <timeZoneId><![CDATA[Europe/Berlin]]></timeZoneId>
+ <forceTimeZoneCheck><![CDATA[false]]></forceTimeZoneCheck>
+ <sendSMS>false</sendSMS>
+ <showContactData><![CDATA[false]]></showContactData>
+
<showContactDataToContacts><![CDATA[false]]></showContactDataToContacts>
+ <type><![CDATA[user]]></type>
+ </user>
+ <user>
+ <user_id><![CDATA[2]]></user_id>
+ <firstname><![CDATA[Dinval]]></firstname>
+ <lastname><![CDATA[Clawgrain]]></lastname>
+ <login><![CDATA[dinval.clawgrain]]></login>
+ <deleted><![CDATA[true]]></deleted>
+ <language_id><![CDATA[9]]></language_id>
+ <address>
+ <mail><![CDATA[dinval.clawgrain@local]]></mail>
+ </address>
+ <organisations
class="org.apache.openjpa.util.java$util$ArrayList$proxy"/>
+ <timeZoneId><![CDATA[Europe/Berlin]]></timeZoneId>
+ <forceTimeZoneCheck><![CDATA[false]]></forceTimeZoneCheck>
+ <sendSMS>false</sendSMS>
+ <showContactData><![CDATA[false]]></showContactData>
+
<showContactDataToContacts><![CDATA[false]]></showContactDataToContacts>
+ <type><![CDATA[user]]></type>
+ <rights class="org.apache.openjpa.util.java$util$HashSet$proxy"/>
+ </user>
+ </users>
+</root>
diff --git
a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/user/users.xml
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/user/users.xml
index a64f265..ee3c11f 100644
---
a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/user/users.xml
+++
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/user/users.xml
@@ -30,7 +30,7 @@ see http://openmeetings.apache.org/Upgrade.html for Details
<age class="java.util.Date"><![CDATA[1502426202010]]></age>
<firstname><![CDATA[Zushid]]></firstname>
<lastname><![CDATA[Vrukyeri]]></lastname>
- <login><![CDATA[vasya]]></login>
+ <login><![CDATA[miuw.su]]></login>
<pass><![CDATA[1000:CJcOXllfzJK/CC3xWdVT6PrgW0y0FtGNhwKQPVREn6d6pBDqxtI973Yj6d2VUkpP+i2Z2I9IVvDZjOi+DSaaslmaXUV5mM89eLEqy631vcsgHVWmzsAphtdpuTUkri07hE6KKGROLkmfFtD+K0v+gLyQFA0H2M11DKF9suLc5W4=:xdqnah+D81hn7IRReRdMzA0H37mfIyTM+itARUQWKCHAAzM2dgjaA8E4YKV6+NO+p1q9gWGRbNtHRMnXXGfWhY8D5pE3P7mvSxiy0UbYXcICzl1ZT8q1hg+vNDJBMIuAx9/FHd640847yYpPM2VymMOT1rXJW3T9NXR2qibSwPKmKajy6eIzf9dRPvnLDFGOEddpfUAydPIbRjwsVxH/XzZbYR9BJ6S+7/RlK1bIdEWVjb8QWEB1VAO/LMH0gB7nNsAtjhvAZ+uOWPIYyCPBX6wmi4keb4RyOE
[...]
<regdate class="java.util.Date"><![CDATA[1502426202011]]></regdate>
<title_id><![CDATA[1]]></title_id>
@@ -50,6 +50,10 @@ see http://openmeetings.apache.org/Upgrade.html for Details
<organisation_id><![CDATA[2]]></organisation_id>
<moderator><![CDATA[false]]></moderator>
</user_organisation>
+ <user_organisation>
+ <organisation_id><![CDATA[666666]]></organisation_id>
+ <moderator><![CDATA[false]]></moderator>
+ </user_organisation>
</organisations>
<timeZoneId><![CDATA[Europe/Berlin]]></timeZoneId>
<forceTimeZoneCheck><![CDATA[false]]></forceTimeZoneCheck>
@@ -64,11 +68,26 @@ see http://openmeetings.apache.org/Upgrade.html for Details
<right><![CDATA[Room]]></right>
<right><![CDATA[Soap]]></right>
</rights>
+ <activatehash>test</activatehash>
+ <sipUser>
+ <id><![CDATA[1]]></id>
+ <type><![CDATA[friend]]></type>
+ <name><![CDATA[miuw.su]]></name>
+ <context><![CDATA[rooms]]></context>
+ <host><![CDATA[dynamic]]></host>
+ <ipaddr><![CDATA[]]></ipaddr>
+ <port><![CDATA[0]]></port>
+ <regseconds><![CDATA[0]]></regseconds>
+ <defaultuser><![CDATA[miuw.su]]></defaultuser>
+ <md5secret><![CDATA[fee3d8da8c8ba37330ba1e3a9f613407]]></md5secret>
+ <nat><![CDATA[force_rport,comedia]]></nat>
+ <allow><![CDATA[ulaw;alaw;h264]]></allow>
+ </sipUser>
</user>
<user>
<user_id><![CDATA[2]]></user_id>
- <firstname><![CDATA[Ea]]></firstname>
- <lastname><![CDATA[Stonejumper ]]></lastname>
+ <firstname><![CDATA[Rururca]]></firstname>
+ <lastname><![CDATA[Pogolun ]]></lastname>
<login><![CDATA[1_rururca.pogolun@local]]></login>
<deleted><![CDATA[false]]></deleted>
<language_id><![CDATA[9]]></language_id>
@@ -118,6 +137,88 @@ see http://openmeetings.apache.org/Upgrade.html for Details
<right><![CDATA[Dashboard]]></right>
<right><![CDATA[Room]]></right>
</rights>
+ <sipUser>
+ <type><![CDATA[friend]]></type>
+ <name><![CDATA[bond]]></name>
+ <context><![CDATA[rooms]]></context>
+ <host><![CDATA[dynamic]]></host>
+ <ipaddr><![CDATA[]]></ipaddr>
+ <port><![CDATA[0]]></port>
+ <regseconds><![CDATA[0]]></regseconds>
+ <defaultuser><![CDATA[bond]]></defaultuser>
+ <md5secret><![CDATA[9785f0d22bbf4b6ea1460e9cc7dc9759]]></md5secret>
+ <nat><![CDATA[force_rport,comedia]]></nat>
+ <allow><![CDATA[ulaw;alaw;h264]]></allow>
+ </sipUser>
+ </user>
+ <user>
+ <user_id><![CDATA[4]]></user_id>
+ <firstname><![CDATA[Thip]]></firstname>
+ <lastname><![CDATA[Tiao]]></lastname>
+ <login><![CDATA[bond]]></login>
+ <deleted><![CDATA[false]]></deleted>
+ <language_id><![CDATA[9]]></language_id>
+ <organisations
class="org.apache.openjpa.util.java$util$ArrayList$proxy"/>
+ <timeZoneId><![CDATA[Europe/Berlin]]></timeZoneId>
+ <forceTimeZoneCheck><![CDATA[false]]></forceTimeZoneCheck>
+ <sendSMS>false</sendSMS>
+ <showContactData><![CDATA[false]]></showContactData>
+
<showContactDataToContacts><![CDATA[false]]></showContactDataToContacts>
+ <type><![CDATA[UsER]]></type>
+ <rights class="org.apache.openjpa.util.java$util$HashSet$proxy"/>
+ </user>
+ <user>
+ <user_id><![CDATA[5]]></user_id>
+ <firstname><![CDATA[Uezulier]]></firstname>
+ <lastname><![CDATA[Berelbir]]></lastname>
+ <login><![CDATA[uezulier.berelbir]]></login>
+ <deleted><![CDATA[false]]></deleted>
+ <language_id><![CDATA[9]]></language_id>
+ <address>
+ <country><![CDATA[GB]]></country>
+ </address>
+ <forceTimeZoneCheck><![CDATA[false]]></forceTimeZoneCheck>
+ <sendSMS>false</sendSMS>
+ <showContactData><![CDATA[false]]></showContactData>
+
<showContactDataToContacts><![CDATA[false]]></showContactDataToContacts>
+ <type><![CDATA[UsER]]></type>
+ <rights class="org.apache.openjpa.util.java$util$HashSet$proxy"/>
+ </user>
+ <user>
+ <user_id><![CDATA[6]]></user_id>
+ <firstname><![CDATA[Lem]]></firstname>
+ <lastname><![CDATA[Featherbleeder]]></lastname>
+ <login><![CDATA[lem]]></login>
+ <deleted><![CDATA[false]]></deleted>
+ <language_id><![CDATA[9]]></language_id>
+ <address>
+ <mail><![CDATA[lem.featherbleeder@local]]></mail>
+ </address>
+ <timeZoneId><![CDATA[Europe/Berlin]]></timeZoneId>
+ <forceTimeZoneCheck><![CDATA[false]]></forceTimeZoneCheck>
+ <sendSMS>false</sendSMS>
+ <showContactData><![CDATA[false]]></showContactData>
+
<showContactDataToContacts><![CDATA[false]]></showContactDataToContacts>
+ <type><![CDATA[contact]]></type>
+ <ownerId><![CDATA[1]]></ownerId>
+ </user>
+ <user>
+ <user_id><![CDATA[7]]></user_id>
+ <firstname><![CDATA[Roojasloud]]></firstname>
+ <lastname><![CDATA[Hyelzurnyevi]]></lastname>
+ <login><![CDATA[roojasloud.hyelzurnyevi]]></login>
+ <deleted><![CDATA[false]]></deleted>
+ <language_id><![CDATA[9]]></language_id>
+ <address>
+ <country><![CDATA[AF]]></country>
+ <mail><![CDATA[James.bond@local]]></mail>
+ </address>
+ <forceTimeZoneCheck><![CDATA[false]]></forceTimeZoneCheck>
+ <sendSMS>false</sendSMS>
+ <showContactData><![CDATA[false]]></showContactData>
+
<showContactDataToContacts><![CDATA[false]]></showContactDataToContacts>
+ <type><![CDATA[UsER]]></type>
+ <rights class="org.apache.openjpa.util.java$util$HashSet$proxy"/>
</user>
</users>
</root>