CRC Cards and UML - CMPUT301F24syzygy/syzygy-events GitHub Wiki

UML

Please find the uml .uxf file here

image

Model Classes

Dissolvable

Responsibilities Collaborators
Designates classes which are stored in the database DatabaseInstance
SubClasses are stored in cache and loaded dynamically DatabaseQuery
Subclasses must be dissolved after end of use DatabaseInfLoadQuery

Database

Responsibilities Collaborators
Contains an active connection to the Firebase database DatabaseInstance
Updates the corresponding database instance when the database is updated
Updates the database upon changes in database instances
Creates new instances of database instances
Deleted database instances
Can load and unload instances
Knows which instances have been loaded for the app
Can fetch all loaded instances of the app
Handles errors within database instances and queries

DatabaseInstance

Responsibilities Collaborators
Super class of all storage classes Database
Knows its properties User
Knows which properties are editable and nullable Event
Can edit its properties Facility
Knows if the property should cascade delete EventAssociation
Notifies the database upon modifications Image
Receives modifications from the database Notification
Alerts listeners of modifications PropertyWrapper
Handles validation of properties
Can be initialized
Can be deleted
Can auto delete if a property's instance is deleted
Can delete property instances upon deletion

DatabaseQuery

Responsibilities Collaborators
Queries the database for a collection of instances based on a given query Database
Can apply pagination to results DatabaseInstance
Knows if its on the first/last page
Knows if updates or deletions have occured
Can refresh data

DatabaseInfLoadQuery

Responsibilities Collaborators
Queries the database for a collection of instances DatabaseQuery
Can apply pagination to results, adding next page to previous results DatabaseInstance
Knows if there is more data to load
Know if updates or deletions have occurred
Can refresh data

User

Responsibilities Collaborators
Can retrieve its property values DatabaseInstance
Can edit its editable property values Facility
Knows its device ID Image
Knows if it has admin privileges
Can be deleted and deletes all its notifications and associations, its image, and its facility

Facility

Responsibilities Collaborators
Can retrieve its property values DatabaseInstance
Can edit its editable property values User
Knows its organizer Image
Can be deleted and deletes all its events

Notification

Responsibilities Collaborators
Can retrieve its property values DatabaseInstance
Knows who sent and who received the notification User
Knows if the notification has been read Event
Knows the subject and body of the notification
Knows the event associated with the notification
Can be deleted

Image

Responsibilities Collaborators
Can retrieve its property values DatabaseInstance
Knows which data object contains the image
Knows the url to the image
Can be deleted
Can be updated

Event

Responsibilities Collaborators
Can retrieve its property values DatabaseInstance
Can edit its editable property values Facility
Knows when its registration is open User
Knows the current amount of user in the waitlist and enrolled EventAssociation
Can update the count of users in the waitlist and enrolled DatabaseQuery
Can add a user to the waitlist EventQueryModifier
Can retrieve the association of a user to the event
Can retrieve all users associated to the event by status
Can modify the association status of a selection of users associated with the event
Can notify a selection of users associated with the event with a custom or hardcoded notification
Can retrieve a random selection of n users on the waitlist
Creates the QR code and handles its hashed data
Can be deleted and deletes all associations and its image

EventAssociation

Responsibilities Collaborators
Can retrieve its property values DatabaseInstance
Can edit its editable property values User
Knows the status of the association between a user and an event Event
Can modify the status EventQueryModifier
Knows where the user joined the waitlist of the event from
Can notify the user
Can be deleted

PropertyWrapper

Responsibilities Collaborators
Contains the meta data and value of a property for a database instance DatabaseInstance
Knows if the property is editable
Knows the type of the property
Knows if the property is an instance
Can validate the value
Knows if the instance property can be null
Knows if the instance should be deleted when the owner instance is deleted

EventQueryModifier

Responsibilities Collaborators
Contains a list of event associations Database
Can notify the users of the associations EventAssociation
Can update the statuses of the associations Event
User
Notification

Activities

SyzygyApplication

Responsibilities Collaborators
Knows which activity is currently selected User
Can switch to another activity AdminActivity
Can pass information from one activity to another EntrantActivity
Knows which user profile is using the application OrganizerActivity
Knows which activities are available to the user based on the permissions of the user DatabaseHandler
Can retrieve the current geolocation of the user All Fragments
Knows which fragment was last viewed SignupActivity
Knows which fragment is currently viewed SyzygyActivity
Knows which fragment's should be available on the navigation bar based on the activity
Updates the navigation bar with the available buttons
Updates the buttons with a selected overlay if the corresponding fragment or sub-fragment is selected
Updates a menu list with the available activities
Notifies the activity with a request to change fragments

SyzygyActivity

Responsibilities Collaborators
Superclass of all activities used by the application SignupAcitivity
Contains helper methods for the application EntrantActivity
OrganizerActivity
AdminActivity
InitActivity
SyzygyApplication

SignupActivity

Responsibilities Collaborators
Knows if there is a user account association with the device SyzygyApplication
Handles the sign-up fragment if an account is not associated SyzygyActivity

EntrantActivity

Responsibilities Collaborators
Handles the fragments related to signing-up to events SyzygyApplication
Handles the fragments related to the user profile SyzygyActivity
Handles the fragments related to the user's notifications EntrantProfileFragment
Knows which fragment is currently active EntrantNotificationsFragment
Can switch between fragments EntrantFacilityPageFragment
EntrantEventsFragment
EntrantEventPageFragment
EntrantEditProfileFragment
SignupFacilitySecondaryFragment
EntrantQrFragment

OrganizerActivity

Responsibilities Collaborators
Handles the fragments related to creating and modifying events SyzygyApplication
Handles the fragments related to a facility's profile SyzygyActivity
Knows which fragment is currently active OrganizerFacilityFragment
Can switch between fragments OrganizerEventsFragment
OrganizerEditFacilityFragment
OrganizerCreateEventFragment
OrganizerEventFragment

AdminActivity

Responsibilities Collaborators
Handles the fragments related to browsing and deleting user profiles SyzygyApplication
Handles the fragments related to browsing and deleting events SyzygyActivity
Handles the fragments related to browsing and deleting facilities AdminProfilesFragment
Handles fragments which warn the user when they try to delete an item AdminProfileFragment
Knows which fragment is currently active AdminEventsFragment
Can switch between fragments AdminEventFragment
AdminFacilityFragment
AdminImagesFragment

InitActivity

Responsibilities Collaborators
Displays the loading bar upon initialization of the app SyzygyApplication
SyzygyActivity

QrCaptureActivity

Responsibilities Collaborators
Opens the camera and scans a QR

Fragments

Entrant

EntrantQrFragment

Responsibilities Collaborators
Allows the user to open the camera and scan a qr QrCaptureActivity
Navigates the user to the event if a qr is scanned EntrantActivity

EntrantProfileFragment

Responsibilities Collaborators
Displays the details of the users profile EntrantActivity
Displays the users profile image User
Allows the user to navigate to the edit page

EntrantNotificationsFragment

Responsibilities Collaborators
Displays all notifications which the users has received EntrantActivity
Allows the user to browse through their notifications Notification
Allows the user to view more information for any notification DatabaseInfLoadQuery
Updates with new notifications automatically EntrantNotificationsAdapter

EntrantNotificationsAdapter

Responsibilities Collaborators
Displays a notification as a small list card EntrantNotificationsFragment
Notification

EntrantFacilityPageFragment

Responsibilities Collaborators
Displays information about a given facility EntrantActivity
Displays the facility's profile image Facility
Shows the user where the facility is located on a map Event

EntrantEventsFragment

Responsibilities Collaborators
Displays all events that the user is associated with EntrantActivity
Allows the user to browse through events Event
Allows the user to navigate to a given event DatabaseInfLoadQuery
EntrantEventsAdapter

EntrantEventsAdapter

|Displays an event as a small list card|EntrantNotificationsFragment ||EventAssocation

EntrantEventPageFragment

Responsibilities Collaborators
Displays information about an event EntrantActivity
Knows the status of the user within the event Event
Knows if which status (registration/closed) the event is in EventAssociation
Allows the user to switch between statuses
Displays the event poster
Displays a link to view the event

EntrantEditProfileFragment

Responsibilities Collaborators
Allows the user to edit their profile EntrantActivity
Allows the user to edit their profile image User
Displays the current information
Saves changes on submit

SignupFacilitySecondaryFragment

Responsibilities Collaborators
Allows the user to create a facility EntrantActivity
Validates information before creating Facility
Displays validation errors
Allows the user to upload an image
Creates the event and navigates to the Organizer Activity

Organizer

OrganizerFacilityFragment

Responsibilities Collaborators
Displays information about the user's facility OrganizerAcitivty
Displays the user's facility's profile image Facility
Allows the user to navigate to the edit facility page

OrganizerEventsFragment

Responsibilities Collaborators
Displays all events that the user has created with this facility OrganizerActivity
Allows the user to browse through events DatabaseInfLoadQuery
Navigates to the event page for a given event OrganizerEventsAdapter

OrganizerEventsAdapter

Responsibilities Collaborators
Displays an event as a list card OrganizerEventsFragment
Event

OrganizerEditFacilityFragment

Responsibilities Collaborators
Allows the user to edit their facility profile OrganizerAcitivty
Allows the user to edit the profile image Facility
Displays the current information
Saves changes on submit

OrganizerCreateEventFragment

Responsibilities Collaborators
Allows the user to create an event OrganizerAcitivty
Allows the user to upload an image for the event Event
Validates the information given before submitting
Displays validation errors
Creates the event and navigates to the event page

OrganizerEventFragment

Responsibilities Collaborators
Displays information about the given event OrganizerAcitivty
Displays the event profile image DatabaseInfLoadQuery
Allows the user to edit the profile image Event
Displays the QR code EventAssociations
Allows the user to copy the QR hash LotteryResult
Displays all users associated with event OrganizerAssociatedEntrantsAdapter
Allows the user to filter displayed users by status
Allows the user to trigger the lottery
Allows the user to cancel users who have not enrolled
Displays the location of users who have signed up

OrganizerAssociatedEntrantsAdapter

Responsibilities Collaborators
Displays an associated user as a list card OrganizerEventFragment
EventAssociation

Admin

AdminProfilesFragment

Responsibilities Collaborators
Displays all user profiles AdminActivity
Allows the user to browse through profile AdminProfilesAdapter
Navigates to the profile page for a selected user DatabaseLoadInfQuery

AdminProfilesAdapter

Responsibilities Collaborators
Displays a user as a list card AdminProfilesFragment
User

AdminProfileFragment

Responsibilities Collaborators
Displays information about a given user AdminActivity
Displays the user profile image User
Allows the admin to navigate to the user's facility Facility
Allows the admin to delete the user

AdminEventsFragment

Responsibilities Collaborators
Displays all events AdminActivity
Allows the admin to browse through events AdminEventsAdapter
Navigates to the event page of a selected event DatabaseLoadInfQuery

AdminEventsAdapter

Responsibilities Collaborators
Displays the event as a list card AdminEventsFragment
Event

AdminEventFragment

Responsibilities Collaborators
Displays information about a given event AdminActivity
Displays the event poster image Event
Displays the event QR code Facility
Allows the admin to remove the QR code
Allows the admin to navigate to the event's facility
Allows the admin to delete the event

AdminFacilityFragment

Responsibilities Collaborators
Displays information about a given facility AdminActivity
Displays the facility's profile image Facility
Allows the admin to delete the facility

AdminImagesFragment

Responsibilities Collaborators
Displays all images uploaded to the app AdminActivity
Allows the admin to browse through images AdminImagesAdapter
Displays the image in a bigger view on click DatabaseLoadInfQuery
Allows the admin to delete a selected image Image

AdminImagesAdapter

Responsibilities Collaborators
Displays the image and location details as a list card AdminImagesFragment
Image