package cgeo.geocaching.connector.trackable; import cgeo.geocaching.models.Geocache; import cgeo.geocaching.connector.LogResult; import cgeo.geocaching.enumerations.StatusCode; import cgeo.geocaching.log.AbstractLoggingActivity; import cgeo.geocaching.log.LogTypeTrackable; import cgeo.geocaching.log.TrackableLog; import cgeo.geocaching.utils.Log; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; import android.support.annotation.NonNull; import java.util.ArrayList; import java.util.Calendar; import java.util.List; public class GeokretyLoggingManager extends AbstractTrackableLoggingManager { public GeokretyLoggingManager(final AbstractLoggingActivity activity) { super(activity); } @Override public List<LogTypeTrackable> loadInBackground() { return getPossibleLogTypesTrackable(); } @Override public LogResult postLog(final Geocache cache, final TrackableLog trackableLog, final Calendar date, final String log) { try { final ImmutablePair<StatusCode, List<String>> response = GeokretyConnector.postLogTrackable( getContext(), cache, trackableLog, date, log); final String logs = response.getRight().isEmpty() ? "" : StringUtils.join(response.getRight(), "\n"); return new LogResult(response.getLeft(), logs); } catch (final Exception e) { Log.e("GeokretyLoggingManager.postLog", e); } return new LogResult(StatusCode.LOG_POST_ERROR, ""); } @Override @NonNull public List<LogTypeTrackable> getPossibleLogTypesTrackable() { final List<LogTypeTrackable> list = new ArrayList<>(); list.add(LogTypeTrackable.RETRIEVED_IT); list.add(LogTypeTrackable.DISCOVERED_IT); list.add(LogTypeTrackable.DROPPED_OFF); list.add(LogTypeTrackable.VISITED); list.add(LogTypeTrackable.NOTE); return list; } @Override public boolean canLogTime() { return true; } @Override public boolean canLogCoordinates() { return true; } @Override public void setGuid(final String guid) { throw new UnsupportedOperationException(); } @Override public boolean isTrackingCodeNeededToPostNote() { return true; } @Override public boolean postReady() { return true; } }