extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/activity/CountedActivity.java

Code
Comments
Other
Rev Date Author Line
5376 23 Apr 19 nicklas 1 package net.sf.basedb.reggie.activity;
5376 23 Apr 19 nicklas 2
5376 23 Apr 19 nicklas 3 import java.util.Date;
5376 23 Apr 19 nicklas 4
5384 26 Apr 19 nicklas 5 import net.sf.basedb.util.EqualsHelper;
5384 26 Apr 19 nicklas 6
5376 23 Apr 19 nicklas 7 /**
5376 23 Apr 19 nicklas 8   An activity entry that contains a counter and that can be merged with
5384 26 Apr 19 nicklas 9   other activities of the same ActivityDef and name.
5384 26 Apr 19 nicklas 10   The message is created from the message template in the ActivityDef
5384 26 Apr 19 nicklas 11   where the string {COUNT} is replaced with the current value 
5384 26 Apr 19 nicklas 12   of the counter.
5376 23 Apr 19 nicklas 13   
5376 23 Apr 19 nicklas 14   Merging is done by adding the two counters together.
5376 23 Apr 19 nicklas 15   
5376 23 Apr 19 nicklas 16   @author nicklas
5376 23 Apr 19 nicklas 17   @since 4.23
5376 23 Apr 19 nicklas 18 */
5376 23 Apr 19 nicklas 19 public class CountedActivity
5376 23 Apr 19 nicklas 20   implements ActivityEntry
5376 23 Apr 19 nicklas 21 {
5376 23 Apr 19 nicklas 22   
5376 23 Apr 19 nicklas 23   private static final long serialVersionUID = -5244712351444415908L;
5376 23 Apr 19 nicklas 24
5376 23 Apr 19 nicklas 25   private final Date date;
5384 26 Apr 19 nicklas 26   private final ActivityDef activity;
5384 26 Apr 19 nicklas 27   private final String name;
5376 23 Apr 19 nicklas 28   private int count;
5421 13 May 19 nicklas 29   private String user;
5421 13 May 19 nicklas 30   private String project;
5376 23 Apr 19 nicklas 31   
5384 26 Apr 19 nicklas 32   /**
5384 26 Apr 19 nicklas 33     Creates an activity event for the given activity without a name.
5384 26 Apr 19 nicklas 34     This activity can be merged with other activities having the
5384 26 Apr 19 nicklas 35     same definition and no name.
5384 26 Apr 19 nicklas 36   */
5421 13 May 19 nicklas 37   public CountedActivity(ActivityDef activity, int count, String user, String project) 
5376 23 Apr 19 nicklas 38   {
5421 13 May 19 nicklas 39     this(activity, null, count, user, project);
5376 23 Apr 19 nicklas 40   }
5376 23 Apr 19 nicklas 41   
5384 26 Apr 19 nicklas 42   /**
5384 26 Apr 19 nicklas 43     Creates an activity event for the given activity with a name.
5384 26 Apr 19 nicklas 44     This activity can be merged with other activities having the
5384 26 Apr 19 nicklas 45     same name and definition.
5384 26 Apr 19 nicklas 46   */
5421 13 May 19 nicklas 47   public CountedActivity(ActivityDef activity, String name, int count, String user, String project) 
5376 23 Apr 19 nicklas 48   {
5384 26 Apr 19 nicklas 49     this.date = new Date();
5384 26 Apr 19 nicklas 50     this.activity = activity;
5384 26 Apr 19 nicklas 51     this.name = name;
5376 23 Apr 19 nicklas 52     this.count = count;
5421 13 May 19 nicklas 53     this.user = user;
5421 13 May 19 nicklas 54     this.project = project;
5376 23 Apr 19 nicklas 55   }
5384 26 Apr 19 nicklas 56
5376 23 Apr 19 nicklas 57   @Override
5376 23 Apr 19 nicklas 58   public Date getEventDate() 
5376 23 Apr 19 nicklas 59   {
5376 23 Apr 19 nicklas 60     return date;
5376 23 Apr 19 nicklas 61   }
5376 23 Apr 19 nicklas 62
5376 23 Apr 19 nicklas 63   @Override
5376 23 Apr 19 nicklas 64   public boolean canMerge()
5376 23 Apr 19 nicklas 65   {
5376 23 Apr 19 nicklas 66     return true;
5376 23 Apr 19 nicklas 67   }
5376 23 Apr 19 nicklas 68   
5376 23 Apr 19 nicklas 69   @Override
5376 23 Apr 19 nicklas 70   public String getMessage() 
5376 23 Apr 19 nicklas 71   {
5384 26 Apr 19 nicklas 72     return name == null ? activity.getMessage(count) : activity.getMessage(name, count);
5376 23 Apr 19 nicklas 73   }
5421 13 May 19 nicklas 74   
5421 13 May 19 nicklas 75   @Override
5421 13 May 19 nicklas 76   public String getUser() 
5421 13 May 19 nicklas 77   {
5421 13 May 19 nicklas 78     return user;
5421 13 May 19 nicklas 79   }
5376 23 Apr 19 nicklas 80
5421 13 May 19 nicklas 81   @Override
5421 13 May 19 nicklas 82   public String getProject() 
5421 13 May 19 nicklas 83   {
5421 13 May 19 nicklas 84     return project;
5421 13 May 19 nicklas 85   }
5421 13 May 19 nicklas 86
5376 23 Apr 19 nicklas 87   /**
5376 23 Apr 19 nicklas 88     Merge with the other activity if it is a CountedActivity and
5421 13 May 19 nicklas 89     it has the same 'activity', 'name', 'project' and 'user' value.
5421 13 May 19 nicklas 90     If so, the counter of this activity is increased with the value of the counter
5376 23 Apr 19 nicklas 91     from the other activity. The other activity is not modified.
5376 23 Apr 19 nicklas 92   */
5376 23 Apr 19 nicklas 93   @Override
5376 23 Apr 19 nicklas 94   public boolean merge(ActivityEntry other)
5376 23 Apr 19 nicklas 95   {
5621 23 Sep 19 nicklas 96     if (this == other) return true; // Should not happen, but if it does we should not increase the count
5376 23 Apr 19 nicklas 97     if (!(other instanceof CountedActivity)) return false;
5376 23 Apr 19 nicklas 98     CountedActivity merge = (CountedActivity)other;
5376 23 Apr 19 nicklas 99     
5384 26 Apr 19 nicklas 100     if (!EqualsHelper.equals(activity.getId(), merge.activity.getId())) return false;
5384 26 Apr 19 nicklas 101     if (!EqualsHelper.equals(name, merge.name)) return false;
5421 13 May 19 nicklas 102     if (!EqualsHelper.equals(project, merge.project)) return false;
5421 13 May 19 nicklas 103     if (!EqualsHelper.equals(user, merge.user)) return false;    
5376 23 Apr 19 nicklas 104     this.count += merge.count;
5376 23 Apr 19 nicklas 105     return true;
5376 23 Apr 19 nicklas 106   }
5376 23 Apr 19 nicklas 107
5376 23 Apr 19 nicklas 108   @Override
5376 23 Apr 19 nicklas 109   public String toString() 
5376 23 Apr 19 nicklas 110   {
5384 26 Apr 19 nicklas 111     return "CountedActivity["+activity.getId()+"; "+getEventDate()+"] "+getMessage();
5376 23 Apr 19 nicklas 112   }
5376 23 Apr 19 nicklas 113
5421 13 May 19 nicklas 114   public CountedActivity setUser(String user)
5421 13 May 19 nicklas 115   {
5421 13 May 19 nicklas 116     this.user = user;
5421 13 May 19 nicklas 117     return this;
5421 13 May 19 nicklas 118   }
5421 13 May 19 nicklas 119   
5421 13 May 19 nicklas 120   public CountedActivity setProject(String project)
5421 13 May 19 nicklas 121   {
5421 13 May 19 nicklas 122     this.project = project;
5421 13 May 19 nicklas 123     return this;
5421 13 May 19 nicklas 124   }
5421 13 May 19 nicklas 125   
5376 23 Apr 19 nicklas 126 }