package org.runnerup.util; import org.runnerup.db.entities.ActivityEntity; import org.runnerup.export.SyncManager; public class SyncActivityItem { private Long id; private Long duration; private Long startTime; // in seconds since epoch private String uri; private Float distance; private Integer sport; private Boolean skipFlag; private Boolean presentFlag; public SyncActivityItem(ActivityEntity ac) { this.id = ac.getId(); this.duration = ac.getTime(); this.startTime = ac.getStartTime(); this.distance = ac.getDistance(); this.sport = ac.getSport(); this.skipFlag = Boolean.FALSE; this.presentFlag = Boolean.TRUE; } public SyncActivityItem() { this.id = null; this.duration = null; this.startTime = null; this.distance = null; this.sport = null; this.skipFlag = Boolean.TRUE; this.presentFlag = Boolean.FALSE; } public boolean isSimilarTo(SyncActivityItem o) { return this.getSport().equals(o.getSport()) && Math.abs(this.getStartTime() - o.getStartTime()) < 30 && (Math.abs(this.getDuration() - o.getDuration()) < 30 || Math.abs(this.getDistance().longValue() - o.getDistance().longValue()) < 100); } public Boolean skipActivity() { return skipFlag; } public void setSkipFlag(Boolean skipFlag) { this.skipFlag = skipFlag; } public Boolean isRelevantForSynch(SyncManager.SyncMode syncMode) { return (presentFlag && SyncManager.SyncMode.UPLOAD.equals(syncMode)) || (!presentFlag && SyncManager.SyncMode.DOWNLOAD.equals(syncMode)); } public void setPresentFlag(Boolean presentFlag) { this.presentFlag = presentFlag; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Long getDuration() { return duration; } public void setDuration(Long duration) { this.duration = duration; } public void setStartTime(Long startTime) { this.startTime = startTime; } public Long getStartTime() { return startTime; } public void setURI(String url) { this.uri = url; } public String getURI() { return uri; } public void setDistance(Float distance) { this.distance = distance; } public Float getDistance() { return distance; } public void setSport(Integer sport) { this.sport = sport; } public Integer getSport() { return sport; } public boolean synchronize(SyncManager.SyncMode syncMode) { return !this.skipActivity() && this.isRelevantForSynch(syncMode); } }