Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package cs3500.music.model;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Set;
- import java.util.stream.Collectors;
- import cs3500.music.provider.controller.INotesContainer;
- import cs3500.music.provider.model.INote;
- public class ModelOps2NotesContainerAdapter implements INotesContainer {
- private ModelOperations model;
- public ModelOps2NotesContainerAdapter(ModelOperations model) {
- this.model = model;
- }
- @Override
- public int getTempo() {
- return this.model.getTempo();
- }
- @Override
- public int getLowestNoteLevel() {
- // FIXME Probably not the same scale.
- return this.model.getLow().getVal();
- }
- @Override
- public int getHighestNoteLevel() {
- // FIXME Probably not the same scale.
- return this.model.getHigh().getVal();
- }
- @Override
- public int getNoteLevelDifference() {
- return this.getHighestNoteLevel() - this.getLowestNoteLevel();
- }
- @Override
- public HashSet<INote> getNotesArray(int beat) {
- // Get the list of notes.
- List<Note> notes = this.model.getNotes();
- // Super hackily convert it to a simple set.
- Set<INote> convertedSet = notes.stream().filter(n -> n.getStart() == beat)
- .map(n -> new cs3500.music.provider.model.Note(MappingUtils.convertToProvider(n.getPitch()),
- n.getStart(), n.getOctave(), n.getStart(), n.getVolume(), n.getInstrument()))
- .collect(Collectors.toSet());
- // Now we need to make it into a hashset, because let's ask for more
- // than we need.
- return new HashSet<>(convertedSet);
- }
- @Override
- public HashMap<Integer, HashSet<INote>> getArray() {
- // Get our notes.
- List<Note> notes = this.model.getNotes();
- // Figure out which beats we have.
- Set<Integer> beats = notes.stream().map(n -> n.getStart()).collect(Collectors.toSet());
- // Make ourselves our destination map.
- HashMap<Integer, HashSet<INote>> stupidNotes = new HashMap<>();
- for (Integer i : beats) {
- // Just get all the notes at once. (I don't know how to do this with
- // streams, lol.)
- stupidNotes.put(i, this.getNotesArray(i));
- }
- return stupidNotes;
- }
- @Override
- public HashMap<Integer, HashSet<Integer>> getHelper() {
- return null; // Just make it fail fast.
- }
- @Override
- public int getTheLastStartBeat() {
- return this.model.getNotes().stream().mapToInt(n -> n.getStart()).max().orElse(0);
- }
- @Override
- public int getLastBeat() {
- return this.model.getNotes().stream().mapToInt(n -> n.getEnd()).max().orElse(0);
- }
- @Override
- public HashSet<Integer> getNoteLevelOfTheBeat(int beat) {
- // More hacky shit.
- return new HashSet<>(this.getNotesArray(beat).stream().map(n -> n.getNoteLevel()).collect(Collectors.toSet()));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement