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