// Path: app/src/main/java/org/swistowski/vaulthelper/storage/Labels.java
// public class Labels {
// 
//     private DB mDb;
//     private static Labels mInstance = new Labels();
//     private Context context;
//     private HashMap<Long, Set<Long>> items;
//     private HashMap<Long, Label> labels;
//     private HashMap<Long, Set<Long>> itemLabels;
//     private List<Label> labelsList;
// 
//     private long current = -1;
// 
// 
//     private Labels() {
//     }
// 
//     public static Labels getInstance() {
//         return mInstance;
//     }
// 
//     public DB getDb() {
//         if (mDb == null) {
//             mDb = new DB(getContext());
//         }
//         return mDb;
//     }
// 
//     private HashMap<Long, Set<Long>> getItems() {
//         if (items == null) {
//             items = getDb().getAllItems();
//         }
//         return items;
//     }
// 
//     public List<Label> getLabelList() {
//         if (labelsList == null) {
//             Collection<Label> labelsFromDb = getDb().getLabels();
//             labelsList = new ArrayList<>(labelsFromDb);
//         }
//         return labelsList;
//     }
// 
// 
//     public Map<Long, Label> getLabels() {
//         if (labels == null) {
//             labels = new HashMap<>();
//             for (Label label : getLabelList()) {
//                 labels.put(label.getId(), label);
//             }
//         }
//         return labels;
//     }
// 
//     private Set<Long> getLabelItems(Long labelId) {
//         if(!getItems().containsKey(labelId)){
//             getItems().put(labelId, new HashSet<Long>());
//         }
//         return getItems().get(labelId);
//     }
// 
//     public void addLabelToItem(long item, long labelId) {
//         getDb().addItem(item, labelId);
//         getLabelItems(labelId).add(item);
//     }
// 
//     public void deleteLabelFromItem(long item, long labelId) {
//         getDb().deleteItem(item, labelId);
//         getLabelItems(labelId).remove(item);
//     }
// 
//     public boolean hasLabel(long item, long labelId) {
//         return getLabelItems(labelId).contains(item);
//     }
// 
//     public void setContext(Context context) {
//         this.context = context;
//     }
// 
//     public Context getContext() {
//         return context;
//     }
// 
//     public int count() {
//         return getItems().size();
//     }
// 
//     public long getCurrent() {
//         if(current==-1){
//             current = getLabelList().get(0).getId();
//         }
//         return current;
//     }
// 
//     public void setCurrent(long current){
//         this.current = current;
//         ItemMonitor.getInstance().notifyChanged();
//         //LabelMonitor.getInstance().notifyChanged();
//     }
// 
// 
//     public Label add(Label label) {
//         label.setId(getDb().addLabel(label.getName(), label.getColor()));
//         cleanLocalCache();
//         LabelMonitor.getInstance().notifyChanged();
//         return label;
//     }
// 
//     private void cleanLocalCache() {
//         labelsList = null;
//         labels = null;
//         items = null;
//         itemLabels = null;
//     }
// 
//     public void update(Label label) {
//         getDb().updateLabel(label.getId(), label.getName(), label.getColor());
//         LabelMonitor.getInstance().notifyChanged();
//     }
// 
//     public void delete(Label label) {
//         getDb().deleteLabel(label.getId());
//         cleanLocalCache();
//         if(current==label.getId()){
//             current = -1;
//         }
//         LabelMonitor.getInstance().notifyChanged();
//     }
// 
//     private Map<Long, Set<Long>> getItemLabels(){
//         if(itemLabels==null) {
//             itemLabels = new HashMap<>();
//             for(Map.Entry<Long, Set<Long>> entry: getItems().entrySet()){
//                 for (Long itemId : entry.getValue()) {
//                     if(!itemLabels.containsKey(itemId)){
//                         itemLabels.put(itemId, new HashSet<Long>());
//                     }
//                     itemLabels.get(itemId).add(entry.getKey());
//                 }
//             }
//         }
//         return itemLabels;
//     }
// 
//     public List<Label> getLabelsForItem(long itemId) {
//         LinkedList<Label> labels = new LinkedList<>();
//         if(getItemLabels().containsKey(itemId)){
//             for (Long labelId : getItemLabels().get(itemId)) {
//                 labels.add(getLabels().get(labelId));
//             }
//         }
//         return labels;
//     }
// }


import org.swistowski.vaulthelper.storage.Labels;
import java.io.Serializable;
        this.id = id;
        this.color = color;
    }

    public long getId() {
        return id;
    }

    @Override
    public String toString() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setColor(long color){
        this.color = color;
    }
    public long getColor(){
        return color;
    }

    public void save() {
        if(id==-1){
// Path: app/src/main/java/org/swistowski/vaulthelper/storage/Labels.java
// public class Labels {
// 
//     private DB mDb;
//     private static Labels mInstance = new Labels();
//     private Context context;
//     private HashMap<Long, Set<Long>> items;
//     private HashMap<Long, Label> labels;
//     private HashMap<Long, Set<Long>> itemLabels;
//     private List<Label> labelsList;
// 
//     private long current = -1;
// 
// 
//     private Labels() {
//     }
// 
//     public static Labels getInstance() {
//         return mInstance;
//     }
// 
//     public DB getDb() {
//         if (mDb == null) {
//             mDb = new DB(getContext());
//         }
//         return mDb;
//     }
// 
//     private HashMap<Long, Set<Long>> getItems() {
//         if (items == null) {
//             items = getDb().getAllItems();
//         }
//         return items;
//     }
// 
//     public List<Label> getLabelList() {
//         if (labelsList == null) {
//             Collection<Label> labelsFromDb = getDb().getLabels();
//             labelsList = new ArrayList<>(labelsFromDb);
//         }
//         return labelsList;
//     }
// 
// 
//     public Map<Long, Label> getLabels() {
//         if (labels == null) {
//             labels = new HashMap<>();
//             for (Label label : getLabelList()) {
//                 labels.put(label.getId(), label);
//             }
//         }
//         return labels;
//     }
// 
//     private Set<Long> getLabelItems(Long labelId) {
//         if(!getItems().containsKey(labelId)){
//             getItems().put(labelId, new HashSet<Long>());
//         }
//         return getItems().get(labelId);
//     }
// 
//     public void addLabelToItem(long item, long labelId) {
//         getDb().addItem(item, labelId);
//         getLabelItems(labelId).add(item);
//     }
// 
//     public void deleteLabelFromItem(long item, long labelId) {
//         getDb().deleteItem(item, labelId);
//         getLabelItems(labelId).remove(item);
//     }
// 
//     public boolean hasLabel(long item, long labelId) {
//         return getLabelItems(labelId).contains(item);
//     }
// 
//     public void setContext(Context context) {
//         this.context = context;
//     }
// 
//     public Context getContext() {
//         return context;
//     }
// 
//     public int count() {
//         return getItems().size();
//     }
// 
//     public long getCurrent() {
//         if(current==-1){
//             current = getLabelList().get(0).getId();
//         }
//         return current;
//     }
// 
//     public void setCurrent(long current){
//         this.current = current;
//         ItemMonitor.getInstance().notifyChanged();
//         //LabelMonitor.getInstance().notifyChanged();
//     }
// 
// 
//     public Label add(Label label) {
//         label.setId(getDb().addLabel(label.getName(), label.getColor()));
//         cleanLocalCache();
//         LabelMonitor.getInstance().notifyChanged();
//         return label;
//     }
// 
//     private void cleanLocalCache() {
//         labelsList = null;
//         labels = null;
//         items = null;
//         itemLabels = null;
//     }
// 
//     public void update(Label label) {
//         getDb().updateLabel(label.getId(), label.getName(), label.getColor());
//         LabelMonitor.getInstance().notifyChanged();
//     }
// 
//     public void delete(Label label) {
//         getDb().deleteLabel(label.getId());
//         cleanLocalCache();
//         if(current==label.getId()){
//             current = -1;
//         }
//         LabelMonitor.getInstance().notifyChanged();
//     }
// 
//     private Map<Long, Set<Long>> getItemLabels(){
//         if(itemLabels==null) {
//             itemLabels = new HashMap<>();
//             for(Map.Entry<Long, Set<Long>> entry: getItems().entrySet()){
//                 for (Long itemId : entry.getValue()) {
//                     if(!itemLabels.containsKey(itemId)){
//                         itemLabels.put(itemId, new HashSet<Long>());
//                     }
//                     itemLabels.get(itemId).add(entry.getKey());
//                 }
//             }
//         }
//         return itemLabels;
//     }
// 
//     public List<Label> getLabelsForItem(long itemId) {
//         LinkedList<Label> labels = new LinkedList<>();
//         if(getItemLabels().containsKey(itemId)){
//             for (Long labelId : getItemLabels().get(itemId)) {
//                 labels.add(getLabels().get(labelId));
//             }
//         }
//         return labels;
//     }
// }


// Path: app/src/main/java/org/swistowski/vaulthelper/models/Label.java
import org.swistowski.vaulthelper.storage.Labels;
import java.io.Serializable;

        this.id = id;
        this.color = color;
    }

    public long getId() {
        return id;
    }

    @Override
    public String toString() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setColor(long color){
        this.color = color;
    }
    public long getColor(){
        return color;
    }

    public void save() {
        if(id==-1){
            Labels.getInstance().add(this);