{"id":19010900,"url":"https://github.com/rylei-m/cs5700_2024_tracking_simulator","last_synced_at":"2026-05-15T01:36:07.148Z","repository":{"id":247310214,"uuid":"825505167","full_name":"rylei-m/CS5700_2024_Tracking_Simulator","owner":"rylei-m","description":"a shipment tracking simulator accompanied by a GUI where a user can type in the id of their shipment and get updates in real time about their shipment. This is just a simulation and shipment information will be read from a file rather than generated as a result of a user actually ordering something","archived":false,"fork":false,"pushed_at":"2024-07-08T23:59:43.000Z","size":90,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-09T12:31:55.656Z","etag":null,"topics":["gradle","kotlin","testing","uml-diagram"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rylei-m.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-08T00:49:40.000Z","updated_at":"2024-07-09T16:51:46.000Z","dependencies_parsed_at":"2025-02-21T15:44:07.703Z","dependency_job_id":null,"html_url":"https://github.com/rylei-m/CS5700_2024_Tracking_Simulator","commit_stats":null,"previous_names":["rylei-m/cs5700_2024_tracking_simulator"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rylei-m/CS5700_2024_Tracking_Simulator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rylei-m%2FCS5700_2024_Tracking_Simulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rylei-m%2FCS5700_2024_Tracking_Simulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rylei-m%2FCS5700_2024_Tracking_Simulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rylei-m%2FCS5700_2024_Tracking_Simulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rylei-m","download_url":"https://codeload.github.com/rylei-m/CS5700_2024_Tracking_Simulator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rylei-m%2FCS5700_2024_Tracking_Simulator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33050337,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gradle","kotlin","testing","uml-diagram"],"created_at":"2024-11-08T19:12:50.596Z","updated_at":"2026-05-15T01:36:07.116Z","avatar_url":"https://github.com/rylei-m.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Assignment #2 - Shipment Tracking Simulator\n\nAssignment: build a shipment tracking simulator accompanied by a GUI where a user can type in the id of their shipment and get updates in real time about their shipment. This is just a simulation and shipment information will be read from a file rather than generated as a result of a user actually ordering something.\n\nUser interface creates and uses tracker view helper which has the responsibility of preparing data for the using interface to display. The Tracking simulator is a static class the can be accessed from anywhere.\n\n\n## Objectives\nContinue to practice by implement a system that follows the principles of abstraction, encapsulation, and modularity.\nBecome more familiar with conceptual modelling using UML.\nBecome more familiar with the basics of unit testing.\nProperly apply the strategy and observer patterns.\nRequirements\nYour shipping simulator should meet the following requirements:\n\n## UML (20 pts)\n1.1 Conceptual model using UML first before writing any code.\n\n1.2 UML diagram should include all classes and should correctly model their relationships, attributes, and methods. Indicate which methods are public or private (all attributes should be private).\n\n1.3 UML should correctly model the design patterns you plan on implementing.\n\n## Implementation - System should meet the following requirements (65 pts)\n2.1: User should be able to type in one or more tracking numbers (IDs) and get real-time updates as the data around each shipment changes. \n- This doesn't mean that you need to allow users to type multiple numbers in the same field, rather, they can type in a number and push a \"track\" button then type in another number and push \"track\" again. The user should see both shipment information on the screen being updated in real-time.\n- You are not required to do anything to the UI when a new shipment is created only when an existing shipment is updated, though if you implement that it might make debugging easier.\n\n2.2: User should be able to stop tracking a shipment at any time.\n\n2.3: When a user starts tracking a shipment they should immediately see the following information about the shipment\n- The status\n- The location\n- The date and time that delivery is expected\n- The notes added to the shipment\n- The updates\n  - Should be text read like \"Shipment went from {previousStatus} to {newStatus} on {dateOfUpdate}\"\n\nDefine what the statuses are but you will need at least the following statuses: created, shipped, lost, canceled, delivered\n\n2.4: If a user tries to track a shipment that doesn't exist then the UI should notify the user in some way (just some text explaining the issue is fine)\n\n2.5: System should read the shipment information from one of the files provided below.\n\nEach line in the file represents an update to shipment and have the following form\nupdateType,shipmentId,timestampOfUpdate,otherInfo. (otherInfo is optional)\nThere are 8 types of updates, here is an explanation of each of them.\n- \"created\" - a new shipment has been created\n  - Example: \"created,1243234,1999283774\"\n- \"shipped\" - the shipment has shipped\n  - Example: \"shipped,1243234,1999437478,19999488398\"\n  - The final value is the timestamp of the expected delivery date.\n- \"location\" - the shipment has arrived at a new location\n  - Example: \"location,1243234,1983893498,Los Angeles CA\n- \"delivered\" - the shipment has been delivered to the consumer\n  - Example: \"delivered,1243234,1999345988\"\n- \"delayed\" - the shipment has been delayed\n  - Example: \"delayed,1243234,1999948389,19999387834\"\n  - The otherInfo is the new expected delivery date timestamp.\n- \"lost\" - the shipment has been lost\n  - Example \"lost,1243234,1999934873\"\n- \"canceled\" - the shipment was canceled by the consumer\n  - Example: \"canceled,1243234,199993487\"\n- \"noteadded\" - a note was added by the shipper to the shipment\n  - Example: \"noteadded,1243234,199999495,packaging was damaged slightly during shipping\"\nThe simulation, should only process one update per second. Kotlin coroutines make this easy https://kotlinlang.org/docs/coroutines-guide.htmlLinks to an external site.\n\n2.6: Look for opportunities as a developer to use the strategy pattern (I hope it should be pretty obvious where you could use it)\n\n2.7: Look for opportunities as a developer to use the observer pattern (again, hopefully pretty obvious...)\n\n## Unit Tests (35 points)\nExecutable unit test cases should give reasonable assurances that the system is working correctly.\n\nExecutable unit test cases should have high coverage in terms of code path.\n\nYou do not need to write unit tests for your user interface but you should test the user interface thoroughly by using it yourself (we call this ad hoc testing).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frylei-m%2Fcs5700_2024_tracking_simulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frylei-m%2Fcs5700_2024_tracking_simulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frylei-m%2Fcs5700_2024_tracking_simulator/lists"}