001    package org.sonar.core.purge;
002    
003    import org.apache.commons.lang.builder.ToStringBuilder;
004    import org.sonar.api.batch.PurgeContext;
005    import org.sonar.api.database.model.Snapshot;
006    
007    public class DefaultPurgeContext implements PurgeContext {
008    
009      private Integer currentSid;
010      private Integer lastSid;
011    
012      public DefaultPurgeContext() {
013      }
014    
015      public DefaultPurgeContext(Snapshot currentSnapshot) {
016        this(currentSnapshot, null);
017      }
018    
019      public DefaultPurgeContext(Snapshot currentSnapshot, Snapshot lastSnapshot) {
020        if (currentSnapshot != null) {
021          currentSid = currentSnapshot.getId();
022        }
023        if (lastSnapshot != null) {
024          lastSid = lastSnapshot.getId();
025        }
026      }
027    
028      public DefaultPurgeContext(Integer currentSid, Integer lastSid) {
029        this.currentSid = currentSid;
030        this.lastSid = lastSid;
031      }
032    
033      public DefaultPurgeContext setLastSnapshotId(Integer lastSid) {
034        this.lastSid = lastSid;
035        return this;
036      }
037    
038      public DefaultPurgeContext setCurrentSnapshotId(Integer currentSid) {
039        this.currentSid = currentSid;
040        return this;
041      }
042    
043      public Integer getPreviousSnapshotId() {
044        return lastSid;
045      }
046    
047      public Integer getLastSnapshotId() {
048        return currentSid;
049      }
050    
051      @Override
052      public boolean equals(Object o) {
053        if (this == o) {
054          return true;
055        }
056        if (o == null || getClass() != o.getClass()) {
057          return false;
058        }
059    
060        DefaultPurgeContext context = (DefaultPurgeContext) o;
061    
062        if (!currentSid.equals(context.currentSid)) {
063          return false;
064        }
065        if (lastSid != null ? !lastSid.equals(context.lastSid) : context.lastSid != null) {
066          return false;
067        }
068    
069        return true;
070      }
071    
072      @Override
073      public int hashCode() {
074        int result = lastSid != null ? lastSid.hashCode() : 0;
075        result = 31 * result + currentSid.hashCode();
076        return result;
077      }
078    
079      @Override
080      public String toString() {
081        return new ToStringBuilder(this)
082            .append("currentSid", currentSid)
083            .append("lastSid", lastSid)
084            .toString();
085      }
086    }