Skip to content

benyoon2003/HuskSheets

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

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages