001package co.codewizards.cloudstore.core.repo.sync;
002
003import static co.codewizards.cloudstore.core.util.Util.*;
004import static java.util.Objects.*;
005
006import java.io.Serializable;
007import java.util.UUID;
008
009import co.codewizards.cloudstore.core.oio.File;
010
011@SuppressWarnings("serial")
012public class RepoSyncActivity implements Serializable {
013
014        private final UUID localRepositoryId;
015        private final File localRoot;
016        private final RepoSyncActivityType activityType;
017
018        public RepoSyncActivity(final UUID localRepositoryId, final File localRoot, final RepoSyncActivityType activityType) {
019                this.localRepositoryId = requireNonNull(localRepositoryId, "localRepositoryId");
020                this.localRoot = requireNonNull(localRoot, "localRoot");
021                this.activityType = requireNonNull(activityType, "activityType");
022        }
023
024        public UUID getLocalRepositoryId() {
025                return localRepositoryId;
026        }
027        public File getLocalRoot() {
028                return localRoot;
029        }
030        public RepoSyncActivityType getActivityType() {
031                return activityType;
032        }
033
034        @Override
035        public int hashCode() {
036                final int prime = 31;
037                int result = 1;
038                result = prime * result + ((localRepositoryId == null) ? 0 : localRepositoryId.hashCode());
039                result = prime * result + ((activityType == null) ? 0 : activityType.hashCode());
040                return result;
041        }
042
043        @Override
044        public boolean equals(final Object obj) {
045                if (this == obj)
046                        return true;
047                if (obj == null)
048                        return false;
049                if (getClass() != obj.getClass())
050                        return false;
051                final RepoSyncActivity other = (RepoSyncActivity) obj;
052                return equal(this.localRepositoryId, other.localRepositoryId) && equal(this.activityType, other.activityType);
053        }
054
055        @Override
056        public String toString() {
057                return String.format("%s[localRepositoryId=%s, localRoot='%s', activityType=%s]",
058                                getClass().getName(), localRepositoryId, localRoot, activityType);
059        }
060}