in openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java [686:745]
public void importUsers(File base) throws Exception {
log.info("OAuth2 servers import complete, starting user import");
String jNameTimeZone = getDefaultTimezone();
//add existent emails from database
final Set<String> userEmails = new HashSet<>();
final Set<UserKey> userLogins = new HashSet<>();
userDao.getAllUsers().stream().forEach(u -> {
if (u.getAddress() != null && !Strings.isEmpty(u.getAddress().getEmail())) {
userEmails.add(u.getAddress().getEmail());
}
userLogins.add(new UserKey(u));
});
Class<User> eClazz = User.class;
JAXBContext jc = JAXBContext.newInstance(eClazz);
Unmarshaller unmarshaller = jc.createUnmarshaller();
unmarshaller.setAdapter(new GroupAdapter(groupDao, groupMap));
readList(unmarshaller, base, "users.xml", USER_LIST_NODE, USER_NODE, eClazz, u -> {
if (u.getLogin() == null || u.isDeleted()) {
return;
}
// check that email is unique
if (u.getAddress() != null && u.getAddress().getEmail() != null && User.Type.USER == u.getType()) {
if (userEmails.contains(u.getAddress().getEmail())) {
log.warn("Email is duplicated for user {}", u);
String updateEmail = String.format("modified_by_import_<%s>%s", randomUUID(), u.getAddress().getEmail());
u.getAddress().setEmail(updateEmail);
}
userEmails.add(u.getAddress().getEmail());
}
checkByType(u);
checkLogin(u, userLogins);
if (u.getGroupUsers() != null) {
for (Iterator<GroupUser> iter = u.getGroupUsers().iterator(); iter.hasNext();) {
GroupUser gu = iter.next();
if (gu.getGroup().getId() == null) {
iter.remove();
continue;
}
gu.setUser(u);
}
}
String tz = u.getTimeZoneId();
if (tz == null) {
u.setTimeZoneId(jNameTimeZone);
}
Long userId = u.getId();
u.setId(null);
if (u.getSipUser() != null && u.getSipUser().getId() != 0) {
u.getSipUser().setId(0);
}
if (AuthLevelUtil.hasLoginLevel(u.getRights()) && !Strings.isEmpty(u.getActivatehash())) {
u.setActivatehash(null);
}
userDao.update(u, Long.valueOf(-1));
userMap.put(userId, u.getId());
});
}