public void importUsers()

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());
		});
	}