Projektteil 2
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.

Erdbeben.java 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package de.edotzlaff.detection.detektion;
  2. import android.os.Build;
  3. import androidx.annotation.RequiresApi;
  4. import de.edotzlaff.detection.detektion.berechnung.Endpunkt;
  5. import de.edotzlaff.detection.detektion.berechnung.EndpunktVerbindung;
  6. import de.edotzlaff.detection.detektion.berechnung.EpizentrumRechnung;
  7. import java.util.ArrayList;
  8. import java.util.HashMap;
  9. import java.util.Objects;
  10. public class Erdbeben {
  11. //ToDO anpassen an Szenario umso mehr umso wahrscheinlich ein Ergebnis, oder Abbruchbedingung mit do while
  12. public static final Integer SCHLEIFENDURCHLAUFTE = 400;
  13. private Epizentrum epizentrum;
  14. private EpizentrumRechnung epizentrumRechnung;
  15. private HashMap<String, Detektionssignal> nutzerDaten;
  16. public Erdbeben() {
  17. nutzerDaten = new HashMap<>();
  18. epizentrumRechnung = new EpizentrumRechnung();
  19. epizentrum = new Epizentrum();
  20. }
  21. public int addDetektionssignal(Detektionssignal detektionssignal) {
  22. nutzerDaten.put(detektionssignal.getDeviceId(), detektionssignal);
  23. return nutzerDaten.size();
  24. }
  25. public void addDetektionssignalList(ArrayList<Detektionssignal> detektionssignale)
  26. {
  27. for (int i = 0; i< detektionssignale.size(); i++)
  28. {
  29. nutzerDaten.put(detektionssignale.get(i).getDeviceId(),detektionssignale.get(i));
  30. }
  31. }
  32. @RequiresApi(api = Build.VERSION_CODES.O)
  33. public Epizentrum ermittleEpizentrum() {
  34. ArrayList<Detektionssignal> rechenListe = new ArrayList<>();
  35. nutzerDaten.forEach((key, value) -> rechenListe.add(value));
  36. //Initialisierung der Rechung - First Element mit delta r + alle möglichen EndpunktKombinationen (einfach)
  37. ArrayList<Endpunkt> berechnungsEndpunkte = epizentrumRechnung.initEndpunkte(rechenListe);
  38. ArrayList<EndpunktVerbindung> endpunktKonbinationen = epizentrumRechnung.ermittleEndpunktKonbinationen(berechnungsEndpunkte);
  39. //ToDo Vernünftiger Endpunkt überlegen bzw. bis wann abgebrochen wird -> Umzug in Berechnungs
  40. for (int i = 0; i <= SCHLEIFENDURCHLAUFTE; i++) {
  41. if (epizentrumRechnung.genuegendSchnittpunktevorhanden(endpunktKonbinationen)) {
  42. epizentrum = epizentrumRechnung.ueberpruefeObEpizentrum(endpunktKonbinationen);
  43. //ToDo set EnstehungsZeitpunkt -> (Bezugszeit, Koord, Koord, v;)
  44. if (!Objects.isNull(epizentrum)) {
  45. System.out.println("Epizentrum ermittelt");
  46. epizentrum.setEntstehungsZeitpunkt(
  47. epizentrumRechnung.berechneEntstehungsZeitpunkt(
  48. nutzerDaten.get(berechnungsEndpunkte.get(0).getNutzer()), epizentrum.getKoordinaten()));
  49. return epizentrum;
  50. }
  51. }
  52. epizentrumRechnung.erhoheRadius(berechnungsEndpunkte);
  53. }
  54. return null;
  55. }
  56. }