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 writeFederatedUsers(String fileName, KeycloakSession session, RealmModel realm, List< String > users)
 
abstract void writeUsers(String fileName, KeycloakSession session, RealmModel realm, List< UserModel > users)
 
final Logger logger
Definition: MultipleStepsExportProvider.java:40
 
abstract void writeRealm(String fileName, RealmRepresentation rep)