package com.example.passrepo.model;
import com.example.passrepo.crypto.PasswordHasher;
import com.example.passrepo.crypto.PasswordHasher.ScryptParameters;
import com.google.common.collect.Maps;
import java.util.Collections;
import java.util.List;
import java.util.Map;
public class Model {
public transient PasswordHasher.Keys keys;
public transient ScryptParameters scryptParameters;
private List<PasswordEntry> passwordEntries;
private long lastIndex;
private Map<String, PasswordEntry> idsToPasswordEntriesMap;
public Model(PasswordHasher.Keys keys, ScryptParameters scryptParameters, List<PasswordEntry> passwordEntries) {
this.keys = keys;
this.scryptParameters = scryptParameters;
this.passwordEntries = passwordEntries;
this.idsToPasswordEntriesMap = Maps.newHashMap();
populateIdsToPasswordEntriesMap();
}
// TODO: Change to private.
public void populateIdsToPasswordEntriesMap() {
idsToPasswordEntriesMap.clear();
lastIndex = 0;
for (PasswordEntry passwordEntry : passwordEntries) {
passwordEntry.id = Long.toString(lastIndex++);
idsToPasswordEntriesMap.put(passwordEntry.id, passwordEntry);
}
}
public PasswordEntry getPasswordEntry(String id) {
return idsToPasswordEntriesMap.get(id);
}
public static Model currentModel = null;
public List<PasswordEntry> getPasswordEntries() {
return Collections.unmodifiableList(passwordEntries);
}
public void addPasswordEntry(PasswordEntry passwordEntry) {
passwordEntry.id = Long.toString(lastIndex++);
passwordEntries.add(passwordEntry);
idsToPasswordEntriesMap.put(passwordEntry.id, passwordEntry);
}
}