Advertisement
Treyzania

Adapter between two shitty-ass frameworks

Apr 15th, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.72 KB | None | 0 0
  1. package cs3500.music.model;
  2.  
  3. import java.util.HashMap;
  4. import java.util.HashSet;
  5. import java.util.List;
  6. import java.util.Set;
  7. import java.util.stream.Collectors;
  8.  
  9. import cs3500.music.provider.controller.INotesContainer;
  10. import cs3500.music.provider.model.INote;
  11.  
  12. public class ModelOps2NotesContainerAdapter implements INotesContainer {
  13.  
  14.     private ModelOperations model;
  15.  
  16.     public ModelOps2NotesContainerAdapter(ModelOperations model) {
  17.         this.model = model;
  18.     }
  19.  
  20.     @Override
  21.     public int getTempo() {
  22.         return this.model.getTempo();
  23.     }
  24.  
  25.     @Override
  26.     public int getLowestNoteLevel() {
  27.  
  28.         // FIXME Probably not the same scale.
  29.         return this.model.getLow().getVal();
  30.  
  31.     }
  32.  
  33.     @Override
  34.     public int getHighestNoteLevel() {
  35.  
  36.         // FIXME Probably not the same scale.
  37.         return this.model.getHigh().getVal();
  38.  
  39.     }
  40.  
  41.     @Override
  42.     public int getNoteLevelDifference() {
  43.         return this.getHighestNoteLevel() - this.getLowestNoteLevel();
  44.     }
  45.  
  46.     @Override
  47.     public HashSet<INote> getNotesArray(int beat) {
  48.  
  49.         // Get the list of notes.
  50.         List<Note> notes = this.model.getNotes();
  51.  
  52.         // Super hackily convert it to a simple set.
  53.         Set<INote> convertedSet = notes.stream().filter(n -> n.getStart() == beat)
  54.                 .map(n -> new cs3500.music.provider.model.Note(MappingUtils.convertToProvider(n.getPitch()),
  55.                         n.getStart(), n.getOctave(), n.getStart(), n.getVolume(), n.getInstrument()))
  56.                 .collect(Collectors.toSet());
  57.  
  58.         // Now we need to make it into a hashset, because let's ask for more
  59.         // than we need.
  60.         return new HashSet<>(convertedSet);
  61.  
  62.     }
  63.  
  64.     @Override
  65.     public HashMap<Integer, HashSet<INote>> getArray() {
  66.  
  67.         // Get our notes.
  68.         List<Note> notes = this.model.getNotes();
  69.  
  70.         // Figure out which beats we have.
  71.         Set<Integer> beats = notes.stream().map(n -> n.getStart()).collect(Collectors.toSet());
  72.  
  73.         // Make ourselves our destination map.
  74.         HashMap<Integer, HashSet<INote>> stupidNotes = new HashMap<>();
  75.         for (Integer i : beats) {
  76.  
  77.             // Just get all the notes at once. (I don't know how to do this with
  78.             // streams, lol.)
  79.             stupidNotes.put(i, this.getNotesArray(i));
  80.  
  81.         }
  82.  
  83.         return stupidNotes;
  84.  
  85.     }
  86.  
  87.     @Override
  88.     public HashMap<Integer, HashSet<Integer>> getHelper() {
  89.         return null; // Just make it fail fast.
  90.     }
  91.  
  92.     @Override
  93.     public int getTheLastStartBeat() {
  94.         return this.model.getNotes().stream().mapToInt(n -> n.getStart()).max().orElse(0);
  95.     }
  96.  
  97.     @Override
  98.     public int getLastBeat() {
  99.         return this.model.getNotes().stream().mapToInt(n -> n.getEnd()).max().orElse(0);
  100.     }
  101.  
  102.     @Override
  103.     public HashSet<Integer> getNoteLevelOfTheBeat(int beat) {
  104.  
  105.         // More hacky shit.
  106.         return new HashSet<>(this.getNotesArray(beat).stream().map(n -> n.getNoteLevel()).collect(Collectors.toSet()));
  107.  
  108.     }
  109.  
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement