Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions app/src/main/java/protect/card_locker/DBHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
public class DBHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "Catima.db";
public static final int ORIGINAL_DATABASE_VERSION = 1;
public static final int DATABASE_VERSION = 17;
public static final int DATABASE_VERSION = 18;

// NB: changing these values requires a migration
public static final int DEFAULT_ZOOM_LEVEL = 100;
Expand All @@ -42,6 +42,7 @@ public static class LoyaltyCardDbIds {
public static final String VALID_FROM = "validfrom";
public static final String EXPIRY = "expiry";
public static final String BALANCE = "balance";
public static final String DEFAULT_BALANCE_CHANGE = "defaultbalancechange";
public static final String BALANCE_TYPE = "balancetype";
public static final String NOTE = "note";
public static final String HEADER_COLOR = "headercolor";
Expand Down Expand Up @@ -107,6 +108,7 @@ public void onCreate(SQLiteDatabase db) {
LoyaltyCardDbIds.VALID_FROM + " INTEGER," +
LoyaltyCardDbIds.EXPIRY + " INTEGER," +
LoyaltyCardDbIds.BALANCE + " TEXT not null DEFAULT '0'," +
LoyaltyCardDbIds.DEFAULT_BALANCE_CHANGE + " TEXT," +
LoyaltyCardDbIds.BALANCE_TYPE + " TEXT," +
LoyaltyCardDbIds.HEADER_COLOR + " INTEGER," +
LoyaltyCardDbIds.CARD_ID + " TEXT not null," +
Expand Down Expand Up @@ -335,6 +337,11 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("ALTER TABLE " + LoyaltyCardDbIds.TABLE
+ " ADD COLUMN " + LoyaltyCardDbIds.ZOOM_LEVEL_WIDTH + " INTEGER DEFAULT '100' ");
}

if (oldVersion < 18 && newVersion >= 18) {
db.execSQL("ALTER TABLE " + LoyaltyCardDbIds.TABLE
+ " ADD COLUMN " + LoyaltyCardDbIds.DEFAULT_BALANCE_CHANGE + " TEXT ");
}
}

public static Set<String> imageFiles(Context context, final SQLiteDatabase database) {
Expand Down Expand Up @@ -395,7 +402,7 @@ private static void updateFTS(final SQLiteDatabase db, final int id, final Strin

public static long insertLoyaltyCard(
final SQLiteDatabase database, final String store, final String note, final Date validFrom,
final Date expiry, final BigDecimal balance, final Currency balanceType, final String cardId,
final Date expiry, final BigDecimal balance, final BigDecimal defaultBalanceChange, final Currency balanceType, final String cardId,
final String barcodeId, final CatimaBarcode barcodeType, final Integer headerColor,
final int starStatus, final Long lastUsed, final int archiveStatus) {
database.beginTransaction();
Expand All @@ -407,6 +414,7 @@ public static long insertLoyaltyCard(
contentValues.put(LoyaltyCardDbIds.VALID_FROM, validFrom != null ? validFrom.getTime() : null);
contentValues.put(LoyaltyCardDbIds.EXPIRY, expiry != null ? expiry.getTime() : null);
contentValues.put(LoyaltyCardDbIds.BALANCE, balance.toString());
contentValues.put(LoyaltyCardDbIds.DEFAULT_BALANCE_CHANGE, defaultBalanceChange != null ? defaultBalanceChange.toString() : null);
contentValues.put(LoyaltyCardDbIds.BALANCE_TYPE, balanceType != null ? balanceType.getCurrencyCode() : null);
contentValues.put(LoyaltyCardDbIds.CARD_ID, cardId);
contentValues.put(LoyaltyCardDbIds.BARCODE_ID, barcodeId);
Expand All @@ -428,7 +436,7 @@ public static long insertLoyaltyCard(

public static long insertLoyaltyCard(
final SQLiteDatabase database, final int id, final String store, final String note,
final Date validFrom, final Date expiry, final BigDecimal balance,
final Date validFrom, final Date expiry, final BigDecimal balance, final BigDecimal defaultBalanceChange,
final Currency balanceType, final String cardId, final String barcodeId,
final CatimaBarcode barcodeType, final Integer headerColor, final int starStatus,
final Long lastUsed, final int archiveStatus) {
Expand All @@ -442,6 +450,7 @@ public static long insertLoyaltyCard(
contentValues.put(LoyaltyCardDbIds.VALID_FROM, validFrom != null ? validFrom.getTime() : null);
contentValues.put(LoyaltyCardDbIds.EXPIRY, expiry != null ? expiry.getTime() : null);
contentValues.put(LoyaltyCardDbIds.BALANCE, balance.toString());
contentValues.put(LoyaltyCardDbIds.DEFAULT_BALANCE_CHANGE, defaultBalanceChange != null ? defaultBalanceChange.toString() : null);
contentValues.put(LoyaltyCardDbIds.BALANCE_TYPE, balanceType != null ? balanceType.getCurrencyCode() : null);
contentValues.put(LoyaltyCardDbIds.CARD_ID, cardId);
contentValues.put(LoyaltyCardDbIds.BARCODE_ID, barcodeId);
Expand All @@ -463,7 +472,7 @@ public static long insertLoyaltyCard(

public static boolean updateLoyaltyCard(
SQLiteDatabase database, final int id, final String store, final String note,
final Date validFrom, final Date expiry, final BigDecimal balance,
final Date validFrom, final Date expiry, final BigDecimal balance, final BigDecimal defaultBalanceChange,
final Currency balanceType, final String cardId, final String barcodeId,
final CatimaBarcode barcodeType, final Integer headerColor, final int starStatus,
final Long lastUsed, final int archiveStatus) {
Expand All @@ -476,6 +485,7 @@ public static boolean updateLoyaltyCard(
contentValues.put(LoyaltyCardDbIds.VALID_FROM, validFrom != null ? validFrom.getTime() : null);
contentValues.put(LoyaltyCardDbIds.EXPIRY, expiry != null ? expiry.getTime() : null);
contentValues.put(LoyaltyCardDbIds.BALANCE, balance.toString());
contentValues.put(LoyaltyCardDbIds.DEFAULT_BALANCE_CHANGE, defaultBalanceChange != null ? defaultBalanceChange.toString() : null);
contentValues.put(LoyaltyCardDbIds.BALANCE_TYPE, balanceType != null ? balanceType.getCurrencyCode() : null);
contentValues.put(LoyaltyCardDbIds.CARD_ID, cardId);
contentValues.put(LoyaltyCardDbIds.BARCODE_ID, barcodeId);
Expand Down
12 changes: 12 additions & 0 deletions app/src/main/java/protect/card_locker/ImportURIHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public class ImportURIHelper {
private static final String VALID_FROM = DBHelper.LoyaltyCardDbIds.VALID_FROM;
private static final String EXPIRY = DBHelper.LoyaltyCardDbIds.EXPIRY;
private static final String BALANCE = DBHelper.LoyaltyCardDbIds.BALANCE;
private static final String DEFAULT_BALANCE_CHANGE = DBHelper.LoyaltyCardDbIds.DEFAULT_BALANCE_CHANGE;
private static final String BALANCE_TYPE = DBHelper.LoyaltyCardDbIds.BALANCE_TYPE;
private static final String CARD_ID = DBHelper.LoyaltyCardDbIds.CARD_ID;
private static final String BARCODE_ID = DBHelper.LoyaltyCardDbIds.BARCODE_ID;
Expand Down Expand Up @@ -69,6 +70,9 @@ public LoyaltyCard parse(Uri uri) throws InvalidObjectException {
Date validFrom = null;
Date expiry = null;
BigDecimal balance = new BigDecimal("0");

BigDecimal defaultBalanceChange = null;

Currency balanceType = null;
Integer headerColor = null;

Expand Down Expand Up @@ -107,6 +111,10 @@ public LoyaltyCard parse(Uri uri) throws InvalidObjectException {
if (unparsedBalance != null && !unparsedBalance.equals("")) {
balance = new BigDecimal(unparsedBalance);
}
String unparsedDefaultBalanceChange = kv.get(DEFAULT_BALANCE_CHANGE);
if (unparsedDefaultBalanceChange != null && !unparsedDefaultBalanceChange.equals("")) {
defaultBalanceChange = new BigDecimal(unparsedDefaultBalanceChange);
}
String unparsedBalanceType = kv.get(BALANCE_TYPE);
if (unparsedBalanceType != null && !unparsedBalanceType.equals("")) {
balanceType = Currency.getInstance(unparsedBalanceType);
Expand All @@ -132,6 +140,7 @@ public LoyaltyCard parse(Uri uri) throws InvalidObjectException {
validFrom,
expiry,
balance,
defaultBalanceChange,
balanceType,
cardId,
barcodeId,
Expand Down Expand Up @@ -178,6 +187,9 @@ protected Uri toUri(LoyaltyCard loyaltyCard) throws UnsupportedEncodingException
fragment = appendFragment(fragment, STORE, loyaltyCard.store);
fragment = appendFragment(fragment, NOTE, loyaltyCard.note);
fragment = appendFragment(fragment, BALANCE, loyaltyCard.balance.toString());
if (loyaltyCard.defaultBalanceChange != null) {
fragment = appendFragment(fragment, DEFAULT_BALANCE_CHANGE, loyaltyCard.defaultBalanceChange.toString());
}
if (loyaltyCard.balanceType != null) {
fragment = appendFragment(fragment, BALANCE_TYPE, loyaltyCard.balanceType.getCurrencyCode());
}
Expand Down
28 changes: 26 additions & 2 deletions app/src/main/java/protect/card_locker/LoyaltyCard.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ public class LoyaltyCard {
public Date expiry;
public BigDecimal balance;
@Nullable
public BigDecimal defaultBalanceChange;
@Nullable
public Currency balanceType;
public String cardId;
@Nullable
Expand Down Expand Up @@ -58,6 +60,7 @@ public class LoyaltyCard {
public static final String BUNDLE_LOYALTY_CARD_VALID_FROM = "loyaltyCardValidFrom";
public static final String BUNDLE_LOYALTY_CARD_EXPIRY = "loyaltyCardExpiry";
public static final String BUNDLE_LOYALTY_CARD_BALANCE = "loyaltyCardBalance";
public static final String BUNDLE_LOYALTY_CARD_DEFAULT_BALANCE_CHANGE = "loyaltyCardDefaultBalanceChange";
public static final String BUNDLE_LOYALTY_CARD_BALANCE_TYPE = "loyaltyCardBalanceType";
public static final String BUNDLE_LOYALTY_CARD_CARD_ID = "loyaltyCardCardId";
public static final String BUNDLE_LOYALTY_CARD_BARCODE_ID = "loyaltyCardBarcodeId";
Expand Down Expand Up @@ -86,6 +89,7 @@ public LoyaltyCard() {
setValidFrom(null);
setExpiry(null);
setBalance(new BigDecimal("0"));
setDefaultBalanceChange(null);
setBalanceType(null);
setCardId("");
setBarcodeId(null);
Expand All @@ -110,6 +114,7 @@ public LoyaltyCard() {
* @param validFrom
* @param expiry
* @param balance
* @param defaultBalanceChange
* @param balanceType
* @param cardId
* @param barcodeId
Expand All @@ -122,7 +127,7 @@ public LoyaltyCard() {
* @param archiveStatus
*/
public LoyaltyCard(final int id, final String store, final String note, @Nullable final Date validFrom,
@Nullable final Date expiry, final BigDecimal balance, @Nullable final Currency balanceType,
@Nullable final Date expiry, final BigDecimal balance,@Nullable final BigDecimal defaultBalanceChange, @Nullable final Currency balanceType,
final String cardId, @Nullable final String barcodeId, @Nullable final CatimaBarcode barcodeType,
@Nullable final Integer headerColor, final int starStatus,
final long lastUsed, final int zoomLevel, final int zoomLevelWidth, final int archiveStatus,
Expand All @@ -135,6 +140,7 @@ public LoyaltyCard(final int id, final String store, final String note, @Nullabl
setValidFrom(validFrom);
setExpiry(expiry);
setBalance(balance);
setDefaultBalanceChange(defaultBalanceChange);
setBalanceType(balanceType);
setCardId(cardId);
setBarcodeId(barcodeId);
Expand Down Expand Up @@ -228,6 +234,10 @@ public void setBalance(@NonNull BigDecimal balance) {
this.balance = balance;
}

public void setDefaultBalanceChange(@Nullable BigDecimal defaultBalanceChange) {
this.defaultBalanceChange = defaultBalanceChange;
}

public void setBalanceType(@Nullable Currency balanceType) {
this.balanceType = balanceType;
}
Expand Down Expand Up @@ -357,6 +367,11 @@ public void updateFromBundle(@NonNull Bundle bundle, boolean requireFull) {
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_BALANCE);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_DEFAULT_BALANCE_CHANGE)) {
setDefaultBalanceChange(new BigDecimal(bundle.getString(BUNDLE_LOYALTY_CARD_DEFAULT_BALANCE_CHANGE)));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_DEFAULT_BALANCE_CHANGE);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_BALANCE_TYPE)) {
String tmpBalanceType = bundle.getString(BUNDLE_LOYALTY_CARD_BALANCE_TYPE);
setBalanceType(tmpBalanceType != null ? Currency.getInstance(tmpBalanceType) : null);
Expand Down Expand Up @@ -450,6 +465,9 @@ public Bundle toBundle(Context context, List<String> exportLimit) {
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_BALANCE)) {
bundle.putString(BUNDLE_LOYALTY_CARD_BALANCE, balance.toString());
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_DEFAULT_BALANCE_CHANGE)) {
bundle.putString(BUNDLE_LOYALTY_CARD_DEFAULT_BALANCE_CHANGE, defaultBalanceChange.toString());
}
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_BALANCE_TYPE)) {
bundle.putString(BUNDLE_LOYALTY_CARD_BALANCE_TYPE, balanceType != null ? balanceType.toString() : null);
}
Expand Down Expand Up @@ -528,6 +546,9 @@ public static LoyaltyCard fromCursor(Context context, Cursor cursor) {
Date expiry = expiryLong > 0 ? new Date(expiryLong) : null;
// balance
BigDecimal balance = new BigDecimal(cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BALANCE)));
// defaultBalanceChange
int defaultBalanceChangeColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.DEFAULT_BALANCE_CHANGE);
BigDecimal defaultBalanceChange = !cursor.isNull(defaultBalanceChangeColumn) ? new BigDecimal(cursor.getString(defaultBalanceChangeColumn)) : null;
// balanceType
int balanceTypeColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BALANCE_TYPE);
Currency balanceType = !cursor.isNull(balanceTypeColumn) ? Currency.getInstance(cursor.getString(balanceTypeColumn)) : null;
Expand Down Expand Up @@ -560,6 +581,7 @@ public static LoyaltyCard fromCursor(Context context, Cursor cursor) {
validFrom,
expiry,
balance,
defaultBalanceChange,
balanceType,
cardId,
barcodeId,
Expand Down Expand Up @@ -588,6 +610,7 @@ public static boolean isDuplicate(Context context, final LoyaltyCard a, final Lo
Utils.equals(a.validFrom, b.validFrom) && // nullable Date
Utils.equals(a.expiry, b.expiry) && // nullable Date
a.balance.equals(b.balance) && // non-nullable BigDecimal
Utils.equals(a.defaultBalanceChange, b.defaultBalanceChange) && // nullable BigDecimal
Utils.equals(a.balanceType, b.balanceType) && // nullable Currency
a.cardId.equals(b.cardId) && // non-nullable String
Utils.equals(a.barcodeId, b.barcodeId) && // nullable String
Expand Down Expand Up @@ -619,7 +642,7 @@ public static boolean nullableBitmapsEqual(@Nullable Bitmap a, @Nullable Bitmap
public String toString() {
return String.format(
"LoyaltyCard{%n id=%s,%n store=%s,%n note=%s,%n validFrom=%s,%n expiry=%s,%n"
+ " balance=%s,%n balanceType=%s,%n cardId=%s,%n barcodeId=%s,%n barcodeType=%s,%n"
+ " balance=%s,%n defaultBalanceChange=%s,%n balanceType=%s,%n cardId=%s,%n barcodeId=%s,%n barcodeType=%s,%n"
+ " headerColor=%s,%n starStatus=%s,%n lastUsed=%s,%n zoomLevel=%s,%n zoomLevelWidth=%s,%n archiveStatus=%s%n"
+ " imageThumbnail=%s,%n imageThumbnailPath=%s,%n imageFront=%s,%n imageFrontPath=%s,%n imageBack=%s,%n imageBackPath=%s,%n}",
this.id,
Expand All @@ -628,6 +651,7 @@ public String toString() {
this.validFrom,
this.expiry,
this.balance,
this.defaultBalanceChange,
this.balanceType,
this.cardId,
this.barcodeId,
Expand Down
Loading