]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/model/Currency.java
Room-based profile management
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / model / Currency.java
index 6933930b6834494c5bccaf96fd3972f0b93864b5..bfe84ea031355d93baf1fc03b375b3ec372a8cb0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2019 Damyan Ivanov.
+ * Copyright © 2020 Damyan Ivanov.
  * This file is part of MoLe.
  * MoLe is free software: you can distribute it and/or modify it
  * under the term of the GNU General Public License as published by
 
 package net.ktnx.mobileledger.model;
 
-import android.database.Cursor;
-import android.database.sqlite.SQLiteDatabase;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.DiffUtil;
-
-import net.ktnx.mobileledger.App;
 import net.ktnx.mobileledger.utils.Misc;
 
 public class Currency {
-    public static final DiffUtil.ItemCallback<Currency> DIFF_CALLBACK =
-            new DiffUtil.ItemCallback<Currency>() {
-                @Override
-                public boolean areItemsTheSame(@NonNull Currency oldItem,
-                                               @NonNull Currency newItem) {
-                    return oldItem.id == newItem.id;
-                }
-                @Override
-                public boolean areContentsTheSame(@NonNull Currency oldItem,
-                                                  @NonNull Currency newItem) {
-                    return oldItem.name.equals(newItem.name) &&
-                           oldItem.position.equals(newItem.position) &&
-                           (oldItem.hasGap == newItem.hasGap);
-                }
-            };
-    private int id;
+    private final int id;
     private String name;
     private Position position;
     private boolean hasGap;
@@ -58,32 +36,6 @@ public class Currency {
         this.position = position;
         this.hasGap = hasGap;
     }
-    public Currency(MobileLedgerProfile profile, String name, Position position, boolean hasGap) {
-        SQLiteDatabase db = App.getDatabase();
-        int attempts = 0;
-        while (true) {
-            if (++attempts > 10)
-                throw new RuntimeException("Giving up getting next ID after 10 attempts");
-
-            try (Cursor c = db.rawQuery("select max(rowid) from currencies", null)) {
-                c.moveToNext();
-                int nextId = c.getInt(0) + 1;
-                db.execSQL("insert into currencies(id, name, position, has_gap) values(?, ?, ?, ?)",
-                        new Object[]{nextId, name, position.toString(), hasGap});
-
-                this.id = nextId;
-                break;
-            }
-        }
-
-        this.name = name;
-        this.position = position;
-        this.hasGap = hasGap;
-    }
-    public static Currency loadByName(String name) {
-        MobileLedgerProfile profile = Data.getProfile();
-        return profile.loadCurrencyByName(name);
-    }
     static public boolean equal(Currency left, Currency right) {
         if (left == null) {
             return right == null;
@@ -127,24 +79,6 @@ public class Currency {
         this.hasGap = hasGap;
     }
     public enum Position {
-        before(-1), after(1), unknown(0), none(-2);
-        private int value;
-        Position(int value) {
-            this.value = value;
-        }
-        static Position valueOf(int value) {
-            switch (value) {
-                case -1:
-                    return before;
-                case +1:
-                    return after;
-                case 0:
-                    return unknown;
-                case -2:
-                    return none;
-                default:
-                    throw new IllegalStateException(String.format("Unexpected value (%d)", value));
-            }
-        }
+        before, after, unknown, none
     }
 }