67 final UsersExportStrategy usersExportStrategy = ExportImportConfig.getUsersExportStrategy();
68 final int usersPerFile = ExportImportConfig.getUsersPerFile();
69 final UsersHolder usersHolder =
new UsersHolder();
70 final boolean exportUsersIntoRealmFile = usersExportStrategy == UsersExportStrategy.REALM_FILE;
71 FederatedUsersHolder federatedUsersHolder =
new FederatedUsersHolder();
73 KeycloakModelUtils.runJobInTransaction(factory,
new ExportImportSessionTask() {
76 protected void runExportImportTask(KeycloakSession session)
throws IOException {
77 RealmModel realm = session.realms().getRealmByName(realmName);
78 RealmRepresentation rep = ExportUtils.exportRealm(session, realm, exportUsersIntoRealmFile,
true);
80 logger.info(
"Realm '" + realmName +
"' - data exported");
83 if (!exportUsersIntoRealmFile) {
84 usersHolder.totalCount = session.users().getUsersCount(realm,
true);
85 federatedUsersHolder.totalCount = session.userFederatedStorage().getStoredUsersCount(realm);
91 if (usersExportStrategy != UsersExportStrategy.SKIP && !exportUsersIntoRealmFile) {
93 usersHolder.currentPageStart = 0;
96 final int countPerPage = (usersExportStrategy == UsersExportStrategy.SAME_FILE) ? usersHolder.totalCount : usersPerFile;
98 while (usersHolder.currentPageStart < usersHolder.totalCount) {
99 if (usersHolder.currentPageStart + countPerPage < usersHolder.totalCount) {
100 usersHolder.currentPageEnd = usersHolder.currentPageStart + countPerPage;
102 usersHolder.currentPageEnd = usersHolder.totalCount;
105 KeycloakModelUtils.runJobInTransaction(factory,
new ExportImportSessionTask() {
108 protected void runExportImportTask(KeycloakSession session)
throws IOException {
109 RealmModel realm = session.realms().getRealmByName(realmName);
110 usersHolder.users = session.users().getUsers(realm, usersHolder.currentPageStart, usersHolder.currentPageEnd - usersHolder.currentPageStart,
true);
112 writeUsers(realmName +
"-users-" + (usersHolder.currentPageStart / countPerPage) +
".json", session, realm, usersHolder.users);
114 logger.info(
"Users " + usersHolder.currentPageStart +
"-" + (usersHolder.currentPageEnd -1) +
" exported");
119 usersHolder.currentPageStart = usersHolder.currentPageEnd;
122 if (usersExportStrategy != UsersExportStrategy.SKIP && !exportUsersIntoRealmFile) {
124 federatedUsersHolder.currentPageStart = 0;
127 final int countPerPage = (usersExportStrategy == UsersExportStrategy.SAME_FILE) ? federatedUsersHolder.totalCount : usersPerFile;
129 while (federatedUsersHolder.currentPageStart < federatedUsersHolder.totalCount) {
130 if (federatedUsersHolder.currentPageStart + countPerPage < federatedUsersHolder.totalCount) {
131 federatedUsersHolder.currentPageEnd = federatedUsersHolder.currentPageStart + countPerPage;
133 federatedUsersHolder.currentPageEnd = federatedUsersHolder.totalCount;
136 KeycloakModelUtils.runJobInTransaction(factory,
new ExportImportSessionTask() {
139 protected void runExportImportTask(KeycloakSession session)
throws IOException {
140 RealmModel realm = session.realms().getRealmByName(realmName);
141 federatedUsersHolder.users = session.userFederatedStorage().getStoredUsers(realm, federatedUsersHolder.currentPageStart, federatedUsersHolder.currentPageEnd - federatedUsersHolder.currentPageStart);
143 writeFederatedUsers(realmName +
"-federated-users-" + (federatedUsersHolder.currentPageStart / countPerPage) +
".json", session, realm, federatedUsersHolder.users);
145 logger.info(
"Users " + federatedUsersHolder.currentPageStart +
"-" + (federatedUsersHolder.currentPageEnd -1) +
" exported");
150 federatedUsersHolder.currentPageStart = federatedUsersHolder.currentPageEnd;
abstract void writeUsers(String fileName, KeycloakSession session, RealmModel realm, List< UserModel > users)
final Logger logger
Definition: MultipleStepsExportProvider.java:40
abstract void writeFederatedUsers(String fileName, KeycloakSession session, RealmModel realm, List< String > users)
abstract void writeRealm(String fileName, RealmRepresentation rep)