This, as the name of the repository says, is a java program which syncs up tests to a firebase database, using a test schedule which is an excel file downloaded from google drive, and converting that to test objects on the database.
This is combined of two apps, one app is a this, the "Java Server Side", which takes all of the tests from the excel file of the test schedule and exports them for each grade, onto a firebase database, and essentially syncs it up with any changes that happen to the test schedule & while not mentioned on the second app's page, also syncs up the tests to Google Calendars for each grade. And the second app, the "Front-end" being a website where it's all displayed in a nice organized way for people to use.
And this is the "TestSyncer" which converts the excel document to the tests on the database.
Honestly, just for fun & it's good practice for java development, using a database and web development, and also gives something back for people to use in the school and all that.
however, this is 100% out of my own free time and other than that i don't get much from it, so I'm not obligated to keep this up 100% of the time, total time spent on this website project alone - can be seen on the wakatime badge.
Each test is built from 5 key properties:
dueDate
: the time the test is set on for, as system time (e.g. ms since Sep 1st 1970)
subject
: name of the subject, obviously
type
: Type of the test (e.g. Bagrot, Matconet, etc)
classNums
: An array of numbers representing which classes have that test, since usually on middle school they have class specific test, if it's the entire grade it would be a one element array with -1
gradeNum
: Grade number, (e.g. Grade 7,8,9)
and 2 extra mostly debug values:
manuallyCreated
: whether the test was manually created by me and not by the syncer (Usually manually adding is only when there's wrong detection of a test, or is a situation the syncer doesn't know how to handle)
creationText
: Shows to the users what text was in the spreadsheet cell that the syncer detected it from and added to the database
The whole class definition can be found here
The way the syncer detects a test, is by checking if it has a valid test type, and a valid subject name in the cell string.
It also checks before all the merged region, where they're usually used for tests that are for the whole grade.
For the normal cells and the merged cells, I also filter them out if the cell string has specific keywords that usually mean they are not meant to be tests on the schedule, but rather some other event related to it.
After it's loaded all the tests data from the excel file, it compares it to what's already on the database, and removes or adds the changes accordingly