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 }