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.

123 lines
4.2 KiB

  1. import device.Device;
  2. import device.cdPlayer.CD;
  3. import device.cdPlayer.CDPlayer;
  4. import device.cdPlayer.CD;
  5. import device.cdPlayer.CDPlayer;
  6. import device.radioPlayer.RadioPlayer;
  7. import device.usbPlayer.USB_Stick;
  8. import device.usbPlayer.UsbPlayer;
  9. import exception.NoItemEvenAllPreconditionAreMet;
  10. import java.io.FileReader;
  11. import java.lang.reflect.InvocationTargetException;
  12. import java.util.Arrays;
  13. import java.util.Properties;
  14. public class BordComputer {
  15. String[] deviceNames;
  16. Device[] installedDevices;
  17. Device activeDevice = null;
  18. public void readConfig() throws ClassNotFoundException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
  19. try (FileReader reader = new FileReader("Geraete.config")) {
  20. Properties properties = new Properties();
  21. properties.load(reader);
  22. String[] values = properties.values().toArray(new String[0]);
  23. Arrays.sort(values);
  24. deviceNames = new String[values.length];
  25. System.arraycopy(values, 0, deviceNames, 0, properties.size());
  26. installedDevices = new Device[values.length];
  27. } catch (Exception e) {
  28. e.printStackTrace();
  29. }
  30. setDevices();
  31. activeDevice = installedDevices[0];
  32. }
  33. public void setDevices() throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, ClassNotFoundException {
  34. Class<?> c;
  35. for (int i = 0; i < deviceNames.length; i++) {
  36. c = Class.forName(deviceNames[i]);
  37. installedDevices[i] = (Device) c.getConstructor().newInstance();
  38. }
  39. }
  40. public String changeDevice() {
  41. Device[] tempDevices = new Device[installedDevices.length];
  42. tempDevices[0] = installedDevices[1];
  43. tempDevices[1] = installedDevices[2];
  44. tempDevices[2] = installedDevices[0];
  45. //replaces the lists
  46. installedDevices = tempDevices;
  47. //setting activeDevice
  48. activeDevice = installedDevices[0];
  49. String infoText="";
  50. if(activeDevice instanceof CDPlayer){
  51. CDPlayer cdPlayer=(CDPlayer) activeDevice;
  52. String[] audioPlayList=new String[]{"Audio 01","Audio 02","Audio 03","Audio 04","Audio 05"};
  53. //some CDs
  54. CD audioCD1=new CD("Audio",audioPlayList);
  55. audioCD1.setAlbumName("Love Songs");
  56. cdPlayer.tapOnCdFlap();
  57. cdPlayer.setCD(audioCD1);
  58. cdPlayer.tapOnCdFlap();
  59. cdPlayer.setInfoText();
  60. infoText = cdPlayer.getInfoText();
  61. }else{
  62. infoText=activeDevice.getInfoText()+" ist activate";
  63. }
  64. return infoText;
  65. }
  66. public String play(){
  67. String itemToPlay=null;
  68. try {
  69. itemToPlay=activeDevice.play();
  70. }catch (RuntimeException exception) {
  71. throw new NoItemEvenAllPreconditionAreMet();
  72. }
  73. return itemToPlay;
  74. }
  75. //===== Hilf-Funktionen ======
  76. public Device getInstanceByName(String deviceName){
  77. for (int i = 0; i <installedDevices.length ; i++) {
  78. if(installedDevices[i].getClass().getSimpleName().equals(deviceName)){
  79. return installedDevices[i];
  80. }
  81. }
  82. return null;
  83. }
  84. public void meetAllPreconditionForPlay(){
  85. if(activeDevice instanceof CDPlayer) {
  86. String[] audioPlayList = new String[]{"Audio 01", "Audio 02", "Audio 03", "Audio 04", "Audio 05"};
  87. CD audioCD1 = new CD("Audio", "PopMusic", audioPlayList, "XAc20044");
  88. CD audioCD2 = new CD("Audio", "RockMusic", audioPlayList, "BLXPP78");
  89. CDPlayer cdPlayer = (CDPlayer) activeDevice;
  90. cdPlayer.changePlaySource();
  91. cdPlayer.loadCDWechseler(audioCD1, 0);
  92. cdPlayer.loadCDWechseler(audioCD2, 1);
  93. cdPlayer.setCD(cdPlayer.getCdWechseler().getCDList().get(0));
  94. activeDevice = cdPlayer;
  95. }
  96. if(activeDevice instanceof UsbPlayer) {
  97. USB_Stick USBDrive = new USB_Stick();
  98. UsbPlayer up1 = new UsbPlayer(USBDrive);
  99. activeDevice = up1;
  100. }
  101. }
  102. public void setActiveDevice(Device activeDevice) {
  103. this.activeDevice = activeDevice;
  104. }
  105. }