1   package com.atlassian.user.util.migration;
2   
3   import org.slf4j.Logger;
4   
5   public class Slf4jMigrationProgressListener implements MigrationProgressListener
6   {
7       private final Logger logger;
8   
9       private int usersToMigrate;
10  
11      private int usersMigrated = 0;
12  
13      private int groupsToMigrate;
14  
15      private int groupsMigrated = 0;
16  
17      public Slf4jMigrationProgressListener(final Logger logger)
18      {
19          if (logger == null)
20              throw new IllegalArgumentException("Logger must NOT be null");
21          this.logger = logger;
22      }
23  
24      public void userMigrationStarted(int usersToMigrate)
25      {
26          this.usersToMigrate = usersToMigrate;
27          logger.info("Starting user migration. {} users to migrate.", usersToMigrate);
28      }
29  
30      public void userMigrated()
31      {
32          if (++usersMigrated % 100 == 0)
33          {
34              logger.info("{} users migrated out of {}.", usersMigrated, usersToMigrate);
35          }
36      }
37  
38      public void userMigrationComplete()
39      {
40          logger.info("User migration complete.");
41      }
42  
43      public void groupMigrationStarted(int groupsToMigrate)
44      {
45          this.groupsToMigrate = groupsToMigrate;
46          logger.info("Group migration started. {} groups to migrate.", groupsToMigrate);
47      }
48  
49      public void groupMigrated()
50      {
51          if (++groupsMigrated % 10 == 0)
52          {
53              logger.info("{} groups migrated out of {}.", groupsMigrated, groupsToMigrate);
54          }
55      }
56  
57      public void groupMigrationComplete()
58      {
59          logger.info("Group migration complete.");
60      }
61  
62      public void readonlyGroupMembershipNotMigrated(String groupName, String userName)
63      {
64          logger.warn("Could not migrate group membership for user <{}> and group <{}>. " +
65                  "Group is read-only; it is possibly a LDAP group.", userName, groupName);
66      }
67  }