-
Notifications
You must be signed in to change notification settings - Fork 1
benyoon2003/HuskSheets
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
OVERVIEW The HuskSheets application works in parallel with two different publicly deployed websites/server: https://husksheets.fly.dev/api/v1/ and https://husksheet-cb47d5864e1b.herokuapp.com/api/v1/. The application is a simpler version of excel or google sheets and its main goal is to allow collaboration of multiple users in a publisher subscriber model. The code was entirely written in Java, using libraries such as JSwing, Mockito, JUnit, Spring Boot for our framework, Jacoco to for test coverage and Gradle for our build automation tool. There are multiple ways to run the client application. 1. Run the HuskSheetsRunner using the play button or by using javac in the terminal 2. Type ./gradlew bootRun in the terminal 3. Type make run in the terminal 4. Utilizing the command line to run view a specific sheet: ./gradlew run --args="--url="<ServerURL>" --name="<Username>" --password="<Password>" --publisher="<Publisher>" --sheet="<SheetName>" ex. ./gradlew run --args="--url="https://husksheet-cb47d5864e1b.herokuapp.com/api/v1/" --name="user1" --password="password" --publisher="user2" --sheet="sheet2"" In order to build the application simply type ./gradlew build or ./gradlew clean build in the terminal. In order to view the test coverage, perform a clean build and go into app/build/reports/jacoco/test/html and run the index.html file. ENDPOINTS This application utilizes the following endpoints to communicate with the server: 1. Result register() - causes the server to create a publisher with the client name. No value is returned. 2. Result getPublishers() - returns a list of argument objects with the publisher field set to all registered publishers. 3. Result getSheets(Argument) - takes an argument object with field publisher set to the name of a publisher and returns a list of argument objects with the publisher and sheet fields set to all sheet names for the given publisher. 4. Result createSheet(Argument) - takes an argument object with fields publisher and sheet set to the name of the client and the name of a sheet to create. No value is returned. 5. Result deleteSheet(Argument) - takes an argument object with fields publisher and sheet set to the name of the client and the name of a sheet to delete. No value is returned. 6. Result getUpdatesForSubscription(Argument) - takes an argument object with fields publisher, sheet and id set to the name of a publisher, a sheet, and an id. It returns an argument object with the payload set to all updates that occurred after id, and the id field set to the last id for those updates. The sheet is owned by a publisher different from the client. An empty payload is returned if no updates occurred after the given id. The initial id is "0". 7. Result getUpdatesForPublished(Argument) - takes an argument object with fields publisher, sheet and id set to the name of a publisher, a sheet, and an id. It returns an argument object with the payload set to all the requests for updates that occurred after id, and the id field set to the last id for those requests for updates. The sheet is owned by the client. An empty payload is returned if no updates occurred after the given id. The initial id is "0". 8. Result updatePublished(Argument) - takes an argument object with fields publisher, sheet and payload set to the name of a publisher, a sheet, and updates for that sheet. No value is returned. The sheet is owned by the client. 9. Result updateSubscription(Argument) - takes an argument object with fields publisher, sheet and payload set to the name of a publisher, a sheet, and requests for updates for that sheet. No value is returned. The sheet is owned by a publisher different from the client.
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published