package org.nusco.narjillos.genomics; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; public class VolatileDNALog implements DNALog { private final Map<Long, DNA> idToDna = new LinkedHashMap<>(); private final List<DNA> liveDna = new LinkedList<>(); @Override public void save(DNA dna) { idToDna.put(dna.getId(), dna); liveDna.add(dna); } @Override public DNA getDna(long id) { return idToDna.get(id); } @Override public void markAsDead(long id) { liveDna.remove(getDna(id)); } @Override public List<DNA> getAllDna() { LinkedList<DNA> result = new LinkedList<>(idToDna.values()); result.sort((dna1, dna2) -> (int) (dna1.getId() - dna2.getId())); return result; } @Override public List<DNA> getLiveDna() { liveDna.sort((dna1, dna2) -> (int) (dna1.getId() - dna2.getId())); return liveDna; } @Override public void delete() { idToDna.clear(); liveDna.clear(); } }