sweIhm-ws2018-19 / skillproject-fr-14

skillproject-fr-14 created by GitHub Classroom
3 stars 0 forks source link

Fächer-Gegenstandszuordnung #17

Closed kkaiser12 closed 5 years ago

kkaiser12 commented 5 years ago

User Story: Fächer-Gegenstandszuordnung Als User möchte ich Fächern in meinem Stundenplan Gegenstände zuordnen, die ich für das jeweilige Fach benötige, um später abfragen zu können, was ich benötige.

Akzeptanzkriterien

sfrank13 commented 5 years ago
Name Fächer – Gegenstandszuordung (UC 1)
Kurzbeschreibung Der User muss vor der Verwendung des Skills „Tasche packen“ selbst Informationen über die benötigten Utensilien für die einzelnen Fächer einsprechen.
Akteure User
Auslöser Der Aufrufer möchte neue Utensilien hinzufügen.
Vorbedingungen ---
Eingehende Informationen Fachname, benötigte Gegenstände
Ergebnis(se) Alexa antwortet: „Daten gespeichert“
Nachbedingungen Fächer wurden mit gewünschtem Gegenstand zugeordnet.
Ablauf
1. Alexa Gegenstände hinzufügen
Der User sagt zu Alexa: „Neuen Gegenstand hinzufügen“. Daraus folgt, dass Alexa bereit ist zu einem beliebigen Fach neue Utensilien hinzuzufügen.
2. Eingabe des Users
Der Anwender muss zuerst das Fach sagen, damit Alexa weiß wo sie den neuen Gegenstand hinzufügen soll. Danach kann er beliebig viele Utensilien hinzufügen
3. Beenden der Eingabe zu aktuellem Fach
Zum beenden der Eingabe sagt der User zu Alexa: „Beende Gegenstandseingabe“. Somit nimmt Alexa zu diesem Fach keine neuen Daten mehr auf.
4. Neues Fach wählen
Will der User noch etwas zu einem anderen Fach auswählen, dann kann er das neue Fach jetzt sagen.
5. Eingabe vollständig beenden
Zum vollständigen beenden der Eingabe und endgültigen Speicherung muss der User nur noch zu Alexa sagen: „Beende Eingabe“
Offene Punkte ---
Änderungshistorie Datum, Fach, Utensil(ien)
Sonstiges, Anmerkungen Es ist schon eine Default Einpackliste vorhanden
Chrysotomus commented 5 years ago

In welcher Tabelle? Bei mir sieht das noch ganz normal aus.

kkaiser12 commented 5 years ago

Hab es jetzt geändert. Es war quasi alles ohne Zeilenumbrüche, die kann man aber mit "br" in spitzen Klammern einfügen.

sfrank13 commented 5 years ago
Name Fächer – Gegenstandszuordung (UC 1)
Kurzbeschreibung Der User muss vor der Verwendung des Skills „Tasche packen“ selbst Informationen über die benötigten Utensilien für die einzelnen Fächer einsprechen.
Akteure User
Auslöser Der Aufrufer möchte neue Utensilien hinzufügen.
Vorbedingungen ---
Eingehende Informationen Fachname, benötigte Gegenstände
Ergebnis(se) Alexa antwortet: „Daten gespeichert“
Nachbedingungen Fächer wurden mit gewünschtem Gegenstand zugeordnet.
Ablauf 1. Alexa Gegenstände hinzufügen
Der User sagt zu Alexa: „Neuen Gegenstand hinzufügen“. Daraus folgt, dass Alexa bereit ist zu einem beliebigen Fach neue Utensilien hinzuzufügen.
2. Eingabe vom User
Der Anwender muss zuerst das Fach sagen, damit Alexa weiß wo sie den neuen Gegenstand hinzufügen soll. Danach kann er beliebig viele Utensilien hinzufügen
3. Beenden der Eingabe zu momentanen Fach
Zum beenden der Eingabe sagt der User zu Alexa: „Beende Gegenstandseingabe“. Somit nimmt Alexa zu diesem Fach keine neuen Daten mehr auf.
4. Neues Fach wählen
Will der User noch etwas zu einem anderen Fach auswählen, dann kann er das neue Fach jetzt sagen.
5. Eingabe vollständig beenden
Zum vollständigen beenden der Eingabe und endgültigen Speicherung muss der User nur noch zu Alexa sagen: „Beende Eingabe“
Offene Punkte ---
Änderungshistorie geändert am 08.11.2018 von Sara Frank
Sonstiges, Anmerkungen Es ist schon eine Default Einpackliste vorhanden
ngaeng commented 5 years ago

Ich weiß nicht sicher ob die Fehler daran liegen, aber ich habe es bisher nicht auf die Reihe gebracht, dass beim Einlesen des Faches und des hinzuzufügenden Gegenstands beide erkannt werden. Mindestens eines von beiden ist null, weshalb das Programm immer ins else springt. Kann auch an meiner Inkompetenz liegen, aber ich werden jetzt mal versuchen das schrittweise umzusetzen, dh eigener Handler für Fach und eigener Handler für Item. Das macht die ganze Prozedur etwas langwieriger, aber solang es funktioniert

kkaiser12 commented 5 years ago

Könnte es evtl. sein, dass es Probleme gibt, wenn das Fach aus mehreren Wörtern besteht? Dummerweise ist das fast immer der Fall.

ngaeng commented 5 years ago
HashSet<String> items = (HashSet<String>) persistentAttributes.get(Utitlities.subjectToBeChanged.toLowerCase());`
            if(items.contains(item)) {
                items.remove(item);
                status = "Gegenstand entfernt. ";
            }
            else {
                items.add(item);
                status = "Gegenstand hinzugefügt. ";
            }

Ist hier irgendwas grundsätzlich an dem remove falsch? Ich probiere jetzt schon eine weile herum und stehe leider ein bisschen auf dem Schlauch. Das add funktioniert einwandfrei. Problem ist, wenn ich den eingegebenen item String (der bereits in dem Set enthalten ist, also entfernt werden soll) mit dem String im Set mit equals vergleiche wird false returned. Wenn ich beide ausgeben lasse sehen die aber gleich aus. Falls jemandem von euch einfällt, wo mein Fehler liegen könnte wäre ich dankbar um den Tipp.

ngaeng commented 5 years ago

Update: Irgendwie kann ich die nach dem Launch hinzugefügten Sachen nicht aus dem Set auslesen/sie werden nicht richtig gespeichert. Wenn man im AWS die datenbank anschaut steht zwar der hinzugefügte Wert im Set, aber wenn man die Größe des Sets im Developer ausgibt hat sich daran nichts geändert.

ngaeng commented 5 years ago

Ich hab mal wieder richtig mist gebaut, weil ich nicht daran gedacht habe, dass ich ja jedes Mal den Skill neu starte und alles überschreite wenn ichs neu ausgeben lasse. Ich schau dass ich das jetzt trotzdem noch irgendwie zeitlich auf die Reihe bekomme

Chrysotomus commented 5 years ago

Zu deinem ersten Problem mit dem Hashset, dass das removen nicht funktioniert: Komisch, ich bin die Java Doc von Hashset und String mal durchgegangen. Eigentlich müsste das contains vom Hashset das equals vom String aufrufen, welches zeichenweise die Strings vergleicht. Dabei sollte also eigentlich kein Fehler auftreten. Mehr fällt mir dazu leider nicht ein, sorry. Meine erste Vermutung wäre gewesen, dass du nur eine Kopie der Liste von persistantAttributes erhälst und du diese somit nicht verändern kannst. Das kann aber nicht stimmen, da du ja Elemente hinzufügen kannst..... Ich frage mich ob es am Typecast liegen könnte, obwohl ich das sehr stark bezweifel. Bei den anderen Problemen kann ich dir leider nicht weiterhelfen.

kkaiser12 commented 5 years ago

Was wird denn genau überschrieben? Die Sachen in dem Skill selbst oder in der Datenbank?

ngaeng commented 5 years ago

Danke für die Nachfrage, seit 30 Minuten geht alles

ngaeng commented 5 years ago

ist auch schon gepushed

kkaiser12 commented 5 years ago

Bei einem Test für GetRequiredItemsIntentHandler bekomme ich immer die Fehlermeldung "Attempting to read persistence attributes without configured persistence adapter". Hast du iwo was mit einem PersistenceAdapter gemacht? Das scheint ein Objekt zu sein, mit dem man die Verbindung zur Datenbank konfiguriert

ngaeng commented 5 years ago

Ja, den braucht man zum Datenbankzugriff, aber ich hab ka wie man das umgehen kann

ngaeng commented 5 years ago

Also das ist erstmal soweit fertig, je nachdem ob das mit dem ZPA noch klappt muss man evt noch ein bisschen was ändern, aber ich würde das vorzugsweise lieber in der Calender-Klasse klären.

Ich hab so ziemlich bei allen bestehenden Klassen, die irgendwas mit Fächern oder Gegenständen zu tun haben etwas geändert. An model Klassen sind Utilities, Subjects und SubjectsToday hinzugekommen. Ein UML-Diagramm wird noch erstellt.

kkaiser12 commented 5 years ago

Ok, super. Sag Bescheid, wenn irgendjemand noch was machen soll, du hattest in diesem Sprint eh schon mega viel Arbeit.

ngaeng commented 5 years ago

Gegenstand hinzufügen Aktivitätsdiagramm

gegenstandhinzufuegen

Subject Klassendiagramm

subjectumlklassendiagramm

ngaeng commented 5 years ago

Ok, super. Sag Bescheid, wenn irgendjemand noch was machen soll, du hattest in diesem Sprint eh schon mega viel Arbeit.

Ich würde die Tests für meine Handler einfach in diesem Sprint nicht mehr machen