Project for Continous Integration
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

279 lines
11 KiB

  1. package device.radioPlayer;
  2. import device.Device;
  3. import java.lang.reflect.Method;
  4. import java.time.LocalDateTime;
  5. import java.util.ArrayList;
  6. import java.util.Arrays;
  7. public class RadioPlayer implements Device {
  8. public RadioPlayer() {
  9. super();
  10. savedPlaylist.add("YouFM");
  11. savedPlaylist.add("Teddy");
  12. savedPlaylist.add("MegaHits");
  13. playedStation = savedPlaylist.get(0);
  14. }
  15. ArrayList<String> savedPlaylist = new ArrayList<>();
  16. ArrayList<String> regionPlaylist = new ArrayList<>();
  17. LocalDateTime now = LocalDateTime.now();
  18. int hour = now.getHour();
  19. int volume = 0;
  20. int savedVolume;
  21. String playedStation;
  22. String getYouFMInfoByTime(int x) {
  23. if (x >= 5 && x < 10) return YouFMInfo[0];
  24. else if (x >= 10 && x < 14) return YouFMInfo[1];
  25. else if (x >= 14 && x < 18) return YouFMInfo[2];
  26. else if (x >= 18 && x < 20) return YouFMInfo[3];
  27. else if (x >= 20 && x < 22) return YouFMInfo[4];
  28. else if (x >= 22 && x <= 23) return YouFMInfo[5];
  29. else return YouFMInfo[6];
  30. }
  31. String[] YouFMInfo = {"YOUFM Good Morning Show", "YOUFM Worktime", "YOUFM am Nachmittag", "YOUFM am Abend", "YOUFM Wir feiern euch", "YOUFM Deutschrap ideal", "YOUFM Junge Nacht der ARD"};
  32. String getBR3InfoByTime(int x) {
  33. if (x >= 5 && x < 9) return BR3Info[0];
  34. else if (x >= 9 && x < 12) return BR3Info[1];
  35. else if (x == 12) return BR3Info[2];
  36. else if (x >= 13 && x < 16) return BR3Info[3];
  37. else if (x >= 16 && x < 19) return BR3Info[4];
  38. else if (x >= 19 && x < 21) return BR3Info[5];
  39. else if (x >= 21 && x < 24) return BR3Info[6];
  40. else return BR3Info[7];
  41. }
  42. String[] BR3Info = {"Sebastian Winkler und die Frühaufdreher", "BAYERN 3 - und DU mittendrin!", "Update", "Hits, Hits, Hits für euren Nachmittag", "Die Zwei für euren Feierabend", "Was geht?!", "Matuschke - der etwas andere Abend", "Die Nacht"};
  43. String getAntenneBYInfoByTime(int x) {
  44. if (x >= 5 && x < 9) return AntenneBYInfo[0];
  45. else if (x >= 9 && x < 12) return AntenneBYInfo[1];
  46. else if (x >= 12 && x < 15) return AntenneBYInfo[2];
  47. else if (x >= 15 && x < 19) return AntenneBYInfo[3];
  48. else return AntenneBYInfo[4];
  49. }
  50. String[] AntenneBYInfo = {"ANTENNE BAYERN Guten Morgen Bayern", "ANTENNE BAYERN bei der Arbeit", "ANTENNE BAYERN am Nachmittag", "ANTENNE BAYERN am Abend", "ANTENNE BAYERN Hit-Nacht"};
  51. public void setVolume(int volume) {
  52. this.volume = volume;
  53. }
  54. public void changeRegion(String region) {
  55. switch (region) {
  56. case "BY":
  57. regionPlaylist.clear();
  58. regionPlaylist.add("Antenne Bayern");
  59. regionPlaylist.add("Bayern 1");
  60. regionPlaylist.add("Bayern 3");
  61. regionPlaylist.add("Hit Radio N1");
  62. playedStation = regionPlaylist.get(0);
  63. break;
  64. case "HE":
  65. regionPlaylist.clear();
  66. regionPlaylist.add("Hit Radio FFH");
  67. regionPlaylist.add("HR 1");
  68. regionPlaylist.add("HR 3");
  69. regionPlaylist.add("YouFM");
  70. playedStation = regionPlaylist.get(0);
  71. break;
  72. case "BW":
  73. regionPlaylist.clear();
  74. regionPlaylist.add("DASDING");
  75. regionPlaylist.add("SWR 1");
  76. regionPlaylist.add("SWR 3");
  77. regionPlaylist.add("sunshine live");
  78. playedStation = regionPlaylist.get(0);
  79. break;
  80. }
  81. }
  82. @Override
  83. public void louder() {
  84. if (volume < 100) {
  85. volume += 1;
  86. } else volume = 100;
  87. }
  88. @Override
  89. public void quieter() {
  90. if (volume > 0) {
  91. volume -= 1;
  92. } else volume = 0;
  93. }
  94. @Override
  95. public int getVolume() {
  96. return volume;
  97. }
  98. @Override
  99. public void next() {
  100. if (regionPlaylist.contains(playedStation)) {
  101. int currentIndex = regionPlaylist.indexOf(playedStation);
  102. int nextIndex = (currentIndex + 1) % regionPlaylist.size();
  103. playedStation = regionPlaylist.get(nextIndex);
  104. } else {
  105. int currentIndex = savedPlaylist.indexOf(playedStation);
  106. int nextIndex = (currentIndex + 1) % savedPlaylist.size();
  107. playedStation = savedPlaylist.get(nextIndex);
  108. }
  109. }
  110. @Override
  111. public void prev() {
  112. if (regionPlaylist.contains(playedStation)) {
  113. int currentIndex = regionPlaylist.indexOf(playedStation);
  114. int nextIndex = regionPlaylist.size() - 1;
  115. if (currentIndex != 0) {
  116. nextIndex = (currentIndex - 1);
  117. }
  118. playedStation = regionPlaylist.get(nextIndex);
  119. } else {
  120. {
  121. int currentIndex = savedPlaylist.indexOf(playedStation);
  122. int nextIndex = savedPlaylist.size() - 1;
  123. if (currentIndex != 0) {
  124. nextIndex = (currentIndex - 1);
  125. }
  126. playedStation = savedPlaylist.get(nextIndex);
  127. }
  128. }
  129. }
  130. @Override
  131. public String getInfoText() {
  132. if (showStationInfo().equals("")) return buildInfoText();
  133. return (buildInfoText() + "\n Now playing: " + showStationInfo());
  134. }
  135. private String buildInfoText() {
  136. String infoText = playedStation;
  137. if (regionPlaylist.contains(playedStation))
  138. return ("Regional playlist: " + (regionPlaylist.indexOf(playedStation) + 1) + infoText);
  139. else return ("Saved playlist: " + (savedPlaylist.indexOf(playedStation) + 1) + infoText);
  140. }
  141. @Override
  142. public String[] getOptions() {
  143. Method[] methods = this.getClass().getDeclaredMethods();
  144. return Arrays.stream(methods).map(Method::getName).toArray(String[]::new);
  145. }
  146. @Override
  147. public String chooseItem(int itemNr) {
  148. if (regionPlaylist.contains(playedStation)) {
  149. if (itemNr > regionPlaylist.size()) {
  150. playedStation = regionPlaylist.get(regionPlaylist.size() - 1);
  151. return ("Radio is playing station: 0" + regionPlaylist.size() + " " + this.playedStation + " from regional playlist");
  152. } else if (itemNr < 1) {
  153. playedStation = regionPlaylist.get(0);
  154. return ("Radio is playing station: 01 " + this.playedStation + " from regional playlist");
  155. } else {
  156. playedStation = regionPlaylist.get(itemNr - 1);
  157. return ("Radio is playing station: 0" + (regionPlaylist.indexOf(playedStation) + 1) + " " + this.playedStation + " from regional playlist");
  158. }
  159. } else {
  160. if (itemNr > savedPlaylist.size()) {
  161. playedStation = savedPlaylist.get(savedPlaylist.size() - 1);
  162. return ("Radio is playing station: 0" + savedPlaylist.size() + " " + this.playedStation + " from saved playlist");
  163. } else if (itemNr < 1) {
  164. playedStation = savedPlaylist.get(0);
  165. return ("Radio is playing station: 01 " + this.playedStation + " from saved playlist");
  166. } else {
  167. playedStation = savedPlaylist.get(itemNr - 1);
  168. return ("Radio is playing station: 0" + (savedPlaylist.indexOf(playedStation) + 1) + " " + this.playedStation + " from saved playlist");
  169. }
  170. }
  171. }
  172. @Override
  173. public String[] getItemList() {
  174. if (regionPlaylist.contains(playedStation))
  175. return regionPlaylist.toArray(new String[0]);
  176. else
  177. return savedPlaylist.toArray(new String[0]);
  178. }
  179. @Override
  180. public String mute() {
  181. savedVolume = getVolume();
  182. setVolume(0);
  183. return "RadioPlayer is muted now";
  184. }
  185. @Override
  186. public String unmute() {
  187. setVolume(savedVolume);
  188. return ("RadioPlayer is unmuted Volume is set to " + getVolume());
  189. }
  190. @Override
  191. public String play() {
  192. if (regionPlaylist.contains(playedStation))
  193. return ("Radio is playing station: 0" + (regionPlaylist.indexOf(playedStation) + 1) + " " + this.playedStation + " from regional playlist");
  194. else
  195. return ("Radio is playing station: 0" + (savedPlaylist.indexOf(playedStation) + 1) + " " + this.playedStation + " from saved playlist");
  196. }
  197. public String showStationInfo() {
  198. switch (playedStation) {
  199. case "Antenne Bayern":
  200. return getAntenneBYInfoByTime(hour);
  201. case "YouFM":
  202. return getYouFMInfoByTime(hour);
  203. case "Bayern 3":
  204. return getBR3InfoByTime(hour);
  205. default:
  206. return "";
  207. }
  208. }
  209. public String saveStation() {
  210. if (savedPlaylist.contains(playedStation)) return "Station " + playedStation + " is already saved";
  211. else savedPlaylist.add(playedStation);
  212. regionPlaylist.clear();
  213. return "Station " + playedStation + " is saved in your Station list";
  214. }
  215. public String deleteStation() {
  216. String station = playedStation;
  217. if ((savedPlaylist.size()) > 1) {
  218. savedPlaylist.remove(playedStation);
  219. playedStation = savedPlaylist.get(0);
  220. return "Station: 0" + (savedPlaylist.indexOf(playedStation) + 1) + " " + station + " has been deleted";
  221. } else return " Last Station: 01 " + station + " can´t by deleted";
  222. }
  223. public String changeToSavedPlaylist() {
  224. if (regionPlaylist.contains(playedStation)) {
  225. playedStation = savedPlaylist.get(0);
  226. regionPlaylist.clear();
  227. return "Playlist switched now playing station: 0" + (savedPlaylist.indexOf(playedStation) + 1) + " " + this.playedStation + " from saved playlist";
  228. }
  229. return "You are already in saved Playlist!";
  230. }
  231. public String changeOrderInSavedPlaylist(int nr) {
  232. String station = playedStation;
  233. if ((nr - 1) > savedPlaylist.size()) {
  234. savedPlaylist.remove(playedStation);
  235. savedPlaylist.add(savedPlaylist.size(), station);
  236. return "Station " + playedStation + " is now on place 0" + (savedPlaylist.size() + 1) + "in saved playlist";
  237. } else if (nr < 0) {
  238. savedPlaylist.remove(playedStation);
  239. savedPlaylist.add(0, station);
  240. return "Station " + playedStation + " is now on place 01 in saved playlist";
  241. } else {
  242. savedPlaylist.remove(playedStation);
  243. savedPlaylist.add(nr - 1, station);
  244. return "Station " + playedStation + " is now on place 0" + nr + "in saved playlist";
  245. }
  246. }
  247. }