/* * * * Copyright (C) 2014 Open Whisper Systems * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * / */ package org.anhonesteffort.flock.registration.model; import android.os.Bundle; import com.fasterxml.jackson.annotation.JsonProperty; import org.anhonesteffort.flock.util.guava.Optional; /** * Programmer: rhodey */ public class FlockCardInformation { private static final String KEY_ACCOUNT_ID = "KEY_CARD_ACCOUNT_ID"; private static final String KEY_LAST_FOUR = "KEY_CARD_LAST_FOUR"; private static final String KEY_EXPIRATION = "KEY_CARD_EXPIRATION"; @JsonProperty protected String accountId; @JsonProperty protected String cardLastFour; @JsonProperty protected String cardExpiration; public FlockCardInformation(String accountId, String cardLastFour, String cardExpiration) { this.accountId = accountId; this.cardLastFour = cardLastFour; this.cardExpiration = cardExpiration; } public FlockCardInformation() {} public String getAccountId() { return accountId; } public String getCardLastFour() { return cardLastFour; } public String getCardExpiration() { if (cardExpiration.length() == 7) return cardExpiration.substring(0, 3) + cardExpiration.substring(5); return cardExpiration; } public Bundle toBundle() { Bundle bundle = new Bundle(); bundle.putString(KEY_ACCOUNT_ID, accountId); bundle.putString(KEY_LAST_FOUR, cardLastFour); bundle.putString(KEY_EXPIRATION, cardExpiration); return bundle; } public static Optional<FlockCardInformation> build(Bundle bundledCardInformation) { if (bundledCardInformation == null || bundledCardInformation.getString(KEY_ACCOUNT_ID) == null) return Optional.absent(); return Optional.of(new FlockCardInformation( bundledCardInformation.getString(KEY_ACCOUNT_ID), bundledCardInformation.getString(KEY_LAST_FOUR), bundledCardInformation.getString(KEY_EXPIRATION)) ); } @Override public boolean equals(Object other) { if (other == null) return false; if (!(other instanceof FlockCardInformation)) return false; FlockCardInformation that = (FlockCardInformation)other; return this.accountId.equals(that.accountId) && this.cardLastFour.equals(that.cardLastFour) && this.getCardExpiration().equals(that.getCardExpiration()); } @Override public int hashCode() { return accountId.hashCode() ^ cardLastFour.hashCode() ^ cardExpiration.hashCode(); } }