From b6179578913485b8ad0312dd71f30c337e6c4004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Borcz?= Date: Sun, 26 Aug 2018 00:18:31 +0200 Subject: [PATCH] Migrate to new api (#155) --- .circleci/config.yml | 29 - .idea/gradle.xml | 1 - README.md | 1 - api/build.gradle | 121 ---- .../java/io/github/wulkanowy/api/Client.java | 272 --------- .../java/io/github/wulkanowy/api/Cookies.java | 17 - .../io/github/wulkanowy/api/DateTimeUtils.kt | 54 -- .../api/NotLoggedInErrorException.java | 8 - .../java/io/github/wulkanowy/api/SnP.java | 35 -- .../wulkanowy/api/StudentAndParent.java | 171 ------ .../java/io/github/wulkanowy/api/Vulcan.java | 183 ------ .../github/wulkanowy/api/VulcanException.java | 12 - .../wulkanowy/api/VulcanOfflineException.java | 8 - .../wulkanowy/api/attendance/Attendance.kt | 69 --- .../api/attendance/AttendanceLesson.kt | 26 - .../api/attendance/AttendanceStatistics.java | 89 --- .../api/attendance/AttendanceTable.java | 112 ---- .../wulkanowy/api/attendance/LessonTypes.java | 25 - .../github/wulkanowy/api/attendance/Type.java | 42 -- .../wulkanowy/api/attendance/Types.java | 29 - .../io/github/wulkanowy/api/exams/Exam.java | 60 -- .../github/wulkanowy/api/exams/ExamDay.java | 20 - .../github/wulkanowy/api/exams/ExamEntry.kt | 20 - .../io/github/wulkanowy/api/exams/Exams.kt | 40 -- .../github/wulkanowy/api/exams/ExamsWeek.java | 74 --- .../io/github/wulkanowy/api/generic/Day.java | 45 -- .../github/wulkanowy/api/generic/Diary.java | 38 -- .../github/wulkanowy/api/generic/Lesson.java | 242 -------- .../github/wulkanowy/api/generic/Month.java | 26 - .../wulkanowy/api/generic/ParamItem.java | 12 - .../io/github/wulkanowy/api/generic/School.kt | 7 - .../wulkanowy/api/generic/Semester.java | 37 -- .../github/wulkanowy/api/generic/Student.java | 37 -- .../github/wulkanowy/api/generic/Subject.java | 26 - .../io/github/wulkanowy/api/generic/Week.java | 34 -- .../io/github/wulkanowy/api/grades/Grade.java | 101 ---- .../io/github/wulkanowy/api/grades/GradeKt.kt | 20 - .../io/github/wulkanowy/api/grades/Grades.kt | 45 -- .../wulkanowy/api/grades/GradesList.java | 76 --- .../wulkanowy/api/grades/GradesSummary.kt | 22 - .../github/wulkanowy/api/grades/Subject.java | 41 -- .../wulkanowy/api/grades/SubjectsList.java | 47 -- .../io/github/wulkanowy/api/grades/Summary.kt | 10 - .../github/wulkanowy/api/homework/Homework.kt | 16 - .../wulkanowy/api/homework/HomeworkList.kt | 28 - .../api/login/AccountPermissionException.java | 10 - .../api/login/BadCredentialsException.java | 10 - .../io/github/wulkanowy/api/login/Login.java | 162 ----- .../api/login/LoginErrorException.java | 10 - .../github/wulkanowy/api/login/StartPage.kt | 45 -- .../api/messages/BadRequestException.java | 10 - .../wulkanowy/api/messages/Message.java | 30 - .../wulkanowy/api/messages/Messages.java | 99 --- .../wulkanowy/api/mobile/RegisterDevice.kt | 33 - .../wulkanowy/api/mobile/RegisteredDevices.kt | 38 -- .../wulkanowy/api/notes/AchievementsList.java | 36 -- .../io/github/wulkanowy/api/notes/Note.java | 48 -- .../github/wulkanowy/api/notes/NotesList.java | 45 -- .../wulkanowy/api/school/SchoolData.java | 59 -- .../wulkanowy/api/school/SchoolInfo.java | 31 - .../github/wulkanowy/api/school/Subject.java | 26 - .../wulkanowy/api/school/TeachersData.java | 39 -- .../wulkanowy/api/school/TeachersInfo.java | 43 -- .../wulkanowy/api/timetable/LessonTypes.java | 17 - .../wulkanowy/api/timetable/Timetable.java | 244 -------- .../wulkanowy/api/timetable/TimetableDay.java | 27 - .../wulkanowy/api/timetable/TimetableKt.kt | 201 ------- .../api/timetable/TimetableLesson.kt | 36 -- .../wulkanowy/api/user/AddressData.java | 40 -- .../wulkanowy/api/user/BasicInformation.java | 70 --- .../wulkanowy/api/user/ContactDetails.java | 37 -- .../wulkanowy/api/user/FamilyInformation.java | 41 -- .../wulkanowy/api/user/FamilyMember.java | 59 -- .../wulkanowy/api/user/PersonalData.java | 114 ---- .../io/github/wulkanowy/api/ClientTest.java | 78 --- .../github/wulkanowy/api/DateTimeUtilsTest.kt | 53 -- .../github/wulkanowy/api/FixtureHelper.java | 12 - .../wulkanowy/api/StudentAndParentTest.java | 103 ---- .../api/StudentAndParentTestCase.java | 28 - .../io/github/wulkanowy/api/VulcanTest.java | 31 - .../attendance/AttendanceStatisticsTest.java | 144 ----- .../api/attendance/AttendanceTableTest.java | 165 ----- .../api/attendance/AttendanceTest.kt | 90 --- .../github/wulkanowy/api/exams/ExamsTest.kt | 70 --- .../wulkanowy/api/exams/ExamsWeekTest.java | 111 ---- .../wulkanowy/api/grades/GradesListTest.java | 106 ---- .../wulkanowy/api/grades/GradesSummaryTest.kt | 59 -- .../github/wulkanowy/api/grades/GradesTest.kt | 74 --- .../api/grades/SubjectsListTest.java | 82 --- .../api/homework/HomeworkListTest.kt | 44 -- .../github/wulkanowy/api/login/LoginTest.java | 136 ----- .../wulkanowy/api/login/StartPageTest.kt | 68 --- .../wulkanowy/api/messages/MessagesTest.java | 89 --- .../wulkanowy/api/mobile/RegisterDevice.kt | 17 - .../api/mobile/RegisteredDevicesListTest.kt | 37 -- .../api/notes/AchievementsListTest.java | 36 -- .../wulkanowy/api/notes/NotesListTest.java | 60 -- .../wulkanowy/api/school/SchoolInfoTest.java | 48 -- .../api/school/TeachersInfoTest.java | 56 -- .../api/timetable/TimetableKtTest.kt | 183 ------ .../api/timetable/TimetableTest.java | 253 -------- .../api/user/BasicInformationTest.java | 106 ---- .../api/user/FamilyInformationTest.java | 59 -- .../api/OcenyWszystkie-semester.html | 22 - .../io/github/wulkanowy/api/Start-multi.html | 27 - .../io/github/wulkanowy/api/Start-std.html | 24 - .../wulkanowy/api/WitrynaUczniaIRodzica.html | 37 -- .../api/attendance/Frekwencja-excellent.html | 408 ------------- .../api/attendance/Frekwencja-full.html | 498 --------------- .../api/exams/Sprawdziany-empty.html | 19 - .../api/exams/Sprawdziany-one-per-day.html | 143 ----- .../api/grades/OcenyWszystkie-filled.html | 116 ---- .../OcenyWszystkie-subjects-average.html | 70 --- .../api/grades/OcenyWszystkie-subjects.html | 64 -- .../wulkanowy/api/homework/ZadaniaDomowe.html | 46 -- .../api/login/Logowanie-brak-dostepu.html | 15 - .../api/login/Logowanie-certyfikat.html | 17 - .../wulkanowy/api/login/Logowanie-error.html | 21 - .../api/login/Logowanie-notLoggedIn.html | 22 - .../api/login/Logowanie-success.html | 29 - .../api/login/PrzerwaTechniczna.html | 23 - .../wulkanowy/api/login/cert-no-symbols.xml | 13 - .../github/wulkanowy/api/login/cert-stock.xml | 18 - .../api/messages/GetTrescWiadomosci.json | 7 - .../api/messages/GetWiadomosciOdebrane.json | 35 -- .../messages/GetWiadomosciUsuniete-empty.json | 4 - .../wulkanowy/api/messages/PageError.html | 88 --- .../wulkanowy/api/messages/UndefinedError.txt | 1 - .../api/mobile/DostepMobilny-filled.html | 44 -- .../wulkanowy/api/mobile/Rejestruj.html | 26 - .../api/notes/UwagiOsiagniecia-empty.html | 20 - .../api/notes/UwagiOsiagniecia-filled.html | 65 -- .../github/wulkanowy/api/school/Szkola.html | 136 ----- .../api/timetable/PlanLekcji-full.html | 567 ------------------ .../api/timetable/PlanLekcji-holidays.html | 156 ----- .../api/timetable/PlanLekcji-std.html | 303 ---------- .../api/user/UczenDanePodstawowe.html | 119 ---- app/build.gradle | 110 ++-- app/jacoco.gradle | 10 +- ...roid-sonarqube.gradle => sonarqube.gradle} | 7 +- .../repositories/local/StudentLocalTest.kt | 2 +- app/src/main/AndroidManifest.xml | 7 +- .../io/github/wulkanowy/data/ErrorHandler.kt | 9 +- .../github/wulkanowy/data/RepositoryModule.kt | 6 +- .../github/wulkanowy/data/db/AppDatabase.kt | 8 +- .../wulkanowy/data/db/dao/SemesterDao.kt | 13 + .../wulkanowy/data/db/entities/Semester.kt | 26 + .../data/repositories/StudentRepository.kt | 5 +- .../data/repositories/local/StudentLocal.kt | 8 +- .../data/repositories/remote/StudentRemote.kt | 59 +- .../github/wulkanowy/ui/base/BaseActivity.kt | 2 +- .../wulkanowy/ui/login/LoginErrorHandler.kt | 2 +- .../ui/login/form/LoginFormFragment.kt | 16 +- .../ui/login/options/LoginOptionsItem.kt | 4 +- .../ui/login/options/LoginOptionsPresenter.kt | 20 +- .../github/wulkanowy/ui/main/MainActivity.kt | 23 +- .../wulkanowy/ui/main/exam/ExamFragment.kt | 3 +- .../wulkanowy/ui/main/grade/GradeFragment.kt | 3 +- .../github/wulkanowy/utils/CommonUtils.java | 10 +- ...ify_grade.png => ic_stat_notify_grade.png} | Bin ...ify_grade.png => ic_stat_notify_grade.png} | Bin .../{ic_border.xml => ic_all_divider.xml} | 0 .../res/drawable-v15/splash_background.xml | 14 - .../res/drawable-v23/splash_background.xml | 15 - ...ify_grade.png => ic_stat_notify_grade.png} | Bin ...ify_grade.png => ic_stat_notify_grade.png} | Bin .../{ic_border.xml => ic_all_divider.xml} | 0 ...lamation_24dp.xml => ic_all_note_24dp.xml} | 2 +- ...rt_24dp.xml => ic_all_round_note_24dp.xml} | 2 +- ...er.xml => ic_menu_grade_semester_24dp.xml} | 0 ...ary.xml => ic_menu_grade_summary_24dp.xml} | 0 ...p.xml => ic_menu_main_attendance_24dp.xml} | 0 ...ms_24dp.xml => ic_menu_main_exam_24dp.xml} | 0 ...e_26dp.xml => ic_menu_main_grade_26dp.xml} | 0 .../res/drawable/ic_menu_main_more_24dp.xml | 9 + ...dp.xml => ic_menu_main_timetable_24dp.xml} | 0 .../main/res/drawable/ic_menu_other_24dp.xml | 16 - ...ap_30dp.xml => ic_timetable_swap_30dp.xml} | 0 .../main/res/drawable/img_splash_512px.png | Bin 9691 -> 0 bytes app/src/main/res/drawable/img_splash_logo.png | Bin 0 -> 28838 bytes ...w.png => img_timetable_widget_preview.png} | Bin .../res/drawable/layer_splash_background.xml | 8 + .../main/res/drawable/splash_background.xml | 8 - app/src/main/res/layout/activity_login.xml | 3 +- app/src/main/res/layout/current_week_tab.xml | 8 - ...dance_dialog.xml => dialog_attendance.xml} | 22 +- .../{exams_dialog.xml => dialog_exam.xml} | 24 +- .../{grades_dialog.xml => dialog_grade.xml} | 24 +- ...etable_dialog.xml => dialog_timetable.xml} | 28 +- .../res/layout/fragment_attendance_tab.xml | 4 +- .../{fragment_exams.xml => fragment_exam.xml} | 0 ...nt_exams_tab.xml => fragment_exam_tab.xml} | 4 +- ...fragment_grades.xml => fragment_grade.xml} | 2 +- .../main/res/layout/fragment_login_form.xml | 16 +- .../res/layout/fragment_login_options.xml | 6 +- .../res/layout/fragment_timetable_tab.xml | 6 +- ...dance_header.xml => header_attendance.xml} | 6 +- .../{exams_header.xml => header_exam.xml} | 0 .../{grades_header.xml => header_grade.xml} | 8 +- ...ry_header.xml => header_grade_summary.xml} | 2 +- ...etable_header.xml => header_timetable.xml} | 4 +- ...ndance_subitem.xml => item_attendance.xml} | 10 +- .../{exams_subitem.xml => item_exam.xml} | 2 +- .../{grades_subitem.xml => item_grade.xml} | 8 +- ...ary_subitem.xml => item_grade_summary.xml} | 8 +- ...opions_item.xml => item_login_options.xml} | 17 +- ...metable_subitem.xml => item_timetable.xml} | 6 +- ...get_item.xml => item_widget_timetable.xml} | 2 +- ...etable_widget.xml => widget_timetable.xml} | 4 +- ..._action_menu.xml => action_menu_grade.xml} | 9 +- app/src/main/res/values-pl/strings.xml | 239 ++++---- ...fernces_array.xml => value_prefernces.xml} | 0 .../values/{symbols.xml => api_symbols.xml} | 0 app/src/main/res/values/identificators.xml | 5 - app/src/main/res/values/strings.xml | 246 ++++---- app/src/main/res/values/styles.xml | 2 +- ...fernces_array.xml => value_prefernces.xml} | 8 +- app/src/main/res/xml/identificators.xml | 9 + ...ider.xml => provider_widget_timetable.xml} | 6 +- ...preferences.xml => scheme_preferences.xml} | 14 +- .../repositories/remote/StudentRemoteTest.kt | 52 +- .../options/LoginOptionsPresenterTest.kt | 5 +- build.gradle | 65 +- settings.gradle | 2 +- 224 files changed, 576 insertions(+), 10426 deletions(-) delete mode 100644 api/build.gradle delete mode 100644 api/src/main/java/io/github/wulkanowy/api/Client.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/Cookies.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/DateTimeUtils.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/NotLoggedInErrorException.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/SnP.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/StudentAndParent.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/Vulcan.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/VulcanException.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/VulcanOfflineException.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/attendance/Attendance.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/attendance/AttendanceLesson.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/attendance/AttendanceStatistics.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/attendance/AttendanceTable.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/attendance/LessonTypes.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/attendance/Type.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/attendance/Types.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/exams/Exam.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/exams/ExamDay.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/exams/ExamEntry.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/exams/Exams.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/exams/ExamsWeek.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/generic/Day.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/generic/Diary.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/generic/Lesson.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/generic/Month.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/generic/ParamItem.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/generic/School.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/generic/Semester.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/generic/Student.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/generic/Subject.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/generic/Week.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/grades/Grade.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/grades/GradeKt.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/grades/Grades.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/grades/GradesList.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/grades/GradesSummary.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/grades/Subject.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/grades/SubjectsList.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/grades/Summary.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/homework/Homework.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/homework/HomeworkList.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/login/AccountPermissionException.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/login/BadCredentialsException.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/login/Login.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/login/LoginErrorException.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/login/StartPage.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/messages/BadRequestException.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/messages/Message.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/messages/Messages.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/mobile/RegisterDevice.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/mobile/RegisteredDevices.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/notes/AchievementsList.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/notes/Note.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/notes/NotesList.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/school/SchoolData.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/school/SchoolInfo.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/school/Subject.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/school/TeachersData.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/school/TeachersInfo.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/timetable/LessonTypes.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/timetable/Timetable.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/timetable/TimetableDay.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/timetable/TimetableKt.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/timetable/TimetableLesson.kt delete mode 100644 api/src/main/java/io/github/wulkanowy/api/user/AddressData.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/user/BasicInformation.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/user/ContactDetails.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/user/FamilyInformation.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/user/FamilyMember.java delete mode 100644 api/src/main/java/io/github/wulkanowy/api/user/PersonalData.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/ClientTest.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/DateTimeUtilsTest.kt delete mode 100644 api/src/test/java/io/github/wulkanowy/api/FixtureHelper.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/StudentAndParentTest.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/StudentAndParentTestCase.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/VulcanTest.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/attendance/AttendanceStatisticsTest.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/attendance/AttendanceTableTest.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/attendance/AttendanceTest.kt delete mode 100644 api/src/test/java/io/github/wulkanowy/api/exams/ExamsTest.kt delete mode 100644 api/src/test/java/io/github/wulkanowy/api/exams/ExamsWeekTest.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/grades/GradesListTest.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/grades/GradesSummaryTest.kt delete mode 100644 api/src/test/java/io/github/wulkanowy/api/grades/GradesTest.kt delete mode 100644 api/src/test/java/io/github/wulkanowy/api/grades/SubjectsListTest.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/homework/HomeworkListTest.kt delete mode 100644 api/src/test/java/io/github/wulkanowy/api/login/LoginTest.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/login/StartPageTest.kt delete mode 100644 api/src/test/java/io/github/wulkanowy/api/messages/MessagesTest.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/mobile/RegisterDevice.kt delete mode 100644 api/src/test/java/io/github/wulkanowy/api/mobile/RegisteredDevicesListTest.kt delete mode 100644 api/src/test/java/io/github/wulkanowy/api/notes/AchievementsListTest.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/notes/NotesListTest.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/school/SchoolInfoTest.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/school/TeachersInfoTest.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/timetable/TimetableKtTest.kt delete mode 100644 api/src/test/java/io/github/wulkanowy/api/timetable/TimetableTest.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/user/BasicInformationTest.java delete mode 100644 api/src/test/java/io/github/wulkanowy/api/user/FamilyInformationTest.java delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/OcenyWszystkie-semester.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/Start-multi.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/Start-std.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/WitrynaUczniaIRodzica.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/attendance/Frekwencja-excellent.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/attendance/Frekwencja-full.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/exams/Sprawdziany-empty.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/exams/Sprawdziany-one-per-day.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/grades/OcenyWszystkie-filled.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/grades/OcenyWszystkie-subjects-average.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/grades/OcenyWszystkie-subjects.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/homework/ZadaniaDomowe.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-brak-dostepu.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-certyfikat.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-error.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-notLoggedIn.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-success.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/login/PrzerwaTechniczna.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/login/cert-no-symbols.xml delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/login/cert-stock.xml delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/messages/GetTrescWiadomosci.json delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/messages/GetWiadomosciOdebrane.json delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/messages/GetWiadomosciUsuniete-empty.json delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/messages/PageError.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/messages/UndefinedError.txt delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/mobile/DostepMobilny-filled.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/mobile/Rejestruj.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/notes/UwagiOsiagniecia-empty.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/notes/UwagiOsiagniecia-filled.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/school/Szkola.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-full.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-holidays.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-std.html delete mode 100644 api/src/test/resources/io/github/wulkanowy/api/user/UczenDanePodstawowe.html rename app/{android-sonarqube.gradle => sonarqube.gradle} (80%) create mode 100644 app/src/main/java/io/github/wulkanowy/data/db/dao/SemesterDao.kt create mode 100644 app/src/main/java/io/github/wulkanowy/data/db/entities/Semester.kt rename app/src/main/res/drawable-hdpi/{ic_notify_grade.png => ic_stat_notify_grade.png} (100%) rename app/src/main/res/drawable-mdpi/{ic_notify_grade.png => ic_stat_notify_grade.png} (100%) rename app/src/main/res/drawable-night/{ic_border.xml => ic_all_divider.xml} (100%) delete mode 100644 app/src/main/res/drawable-v15/splash_background.xml delete mode 100644 app/src/main/res/drawable-v23/splash_background.xml rename app/src/main/res/drawable-xhdpi/{ic_notify_grade.png => ic_stat_notify_grade.png} (100%) rename app/src/main/res/drawable-xxhdpi/{ic_notify_grade.png => ic_stat_notify_grade.png} (100%) rename app/src/main/res/drawable/{ic_border.xml => ic_all_divider.xml} (100%) rename app/src/main/res/drawable/{ic_exclamation_24dp.xml => ic_all_note_24dp.xml} (96%) rename app/src/main/res/drawable/{ic_alert_24dp.xml => ic_all_round_note_24dp.xml} (97%) rename app/src/main/res/drawable/{ic_action_menu_semester.xml => ic_menu_grade_semester_24dp.xml} (100%) rename app/src/main/res/drawable/{ic_action_menu_summary.xml => ic_menu_grade_summary_24dp.xml} (100%) rename app/src/main/res/drawable/{ic_menu_attendance_24dp.xml => ic_menu_main_attendance_24dp.xml} (100%) rename app/src/main/res/drawable/{ic_menu_exams_24dp.xml => ic_menu_main_exam_24dp.xml} (100%) rename app/src/main/res/drawable/{ic_menu_grade_26dp.xml => ic_menu_main_grade_26dp.xml} (100%) create mode 100644 app/src/main/res/drawable/ic_menu_main_more_24dp.xml rename app/src/main/res/drawable/{ic_menu_timetable_24dp.xml => ic_menu_main_timetable_24dp.xml} (100%) delete mode 100644 app/src/main/res/drawable/ic_menu_other_24dp.xml rename app/src/main/res/drawable/{ic_swap_30dp.xml => ic_timetable_swap_30dp.xml} (100%) delete mode 100644 app/src/main/res/drawable/img_splash_512px.png create mode 100644 app/src/main/res/drawable/img_splash_logo.png rename app/src/main/res/drawable/{widget_timetable_preview.png => img_timetable_widget_preview.png} (100%) create mode 100644 app/src/main/res/drawable/layer_splash_background.xml delete mode 100644 app/src/main/res/drawable/splash_background.xml delete mode 100644 app/src/main/res/layout/current_week_tab.xml rename app/src/main/res/layout/{attendance_dialog.xml => dialog_attendance.xml} (91%) rename app/src/main/res/layout/{exams_dialog.xml => dialog_exam.xml} (90%) rename app/src/main/res/layout/{grades_dialog.xml => dialog_grade.xml} (91%) rename app/src/main/res/layout/{timetable_dialog.xml => dialog_timetable.xml} (90%) rename app/src/main/res/layout/{fragment_exams.xml => fragment_exam.xml} (100%) rename app/src/main/res/layout/{fragment_exams_tab.xml => fragment_exam_tab.xml} (95%) rename app/src/main/res/layout/{fragment_grades.xml => fragment_grade.xml} (99%) rename app/src/main/res/layout/{attendance_header.xml => header_attendance.xml} (95%) rename app/src/main/res/layout/{exams_header.xml => header_exam.xml} (100%) rename app/src/main/res/layout/{grades_header.xml => header_grade.xml} (94%) rename app/src/main/res/layout/{grades_summary_header.xml => header_grade_summary.xml} (98%) rename app/src/main/res/layout/{timetable_header.xml => header_timetable.xml} (96%) rename app/src/main/res/layout/{attendance_subitem.xml => item_attendance.xml} (93%) rename app/src/main/res/layout/{exams_subitem.xml => item_exam.xml} (97%) rename app/src/main/res/layout/{grades_subitem.xml => item_grade.xml} (94%) rename app/src/main/res/layout/{grades_summary_subitem.xml => item_grade_summary.xml} (92%) rename app/src/main/res/layout/{fragment_login_opions_item.xml => item_login_options.xml} (83%) rename app/src/main/res/layout/{timetable_subitem.xml => item_timetable.xml} (96%) rename app/src/main/res/layout/{timetable_widget_item.xml => item_widget_timetable.xml} (99%) rename app/src/main/res/layout/{timetable_widget.xml => widget_timetable.xml} (96%) rename app/src/main/res/menu/{grades_action_menu.xml => action_menu_grade.xml} (69%) rename app/src/main/res/values-pl/{prefernces_array.xml => value_prefernces.xml} (100%) rename app/src/main/res/values/{symbols.xml => api_symbols.xml} (100%) delete mode 100644 app/src/main/res/values/identificators.xml rename app/src/main/res/values/{prefernces_array.xml => value_prefernces.xml} (87%) create mode 100644 app/src/main/res/xml/identificators.xml rename app/src/main/res/xml/{widget_provider.xml => provider_widget_timetable.xml} (61%) rename app/src/main/res/xml/{preferences.xml => scheme_preferences.xml} (85%) diff --git a/.circleci/config.yml b/.circleci/config.yml index 460a66076..43e77fb12 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -89,28 +89,6 @@ jobs: paths: - "./app/build/jacoco" - api-test: - <<: *container_config - steps: - - *attach_workspace - - restore_cache: - <<: *general_cache_key - - run: - name: Run api tests - command: ./gradlew :api:test :api:jacocoTestReport --no-daemon --stacktrace --console=plain -PdisablePreDex - - run: - name: Upload code coverage to codecov - command: bash <(curl -s https://codecov.io/bash) -F api - - store_artifacts: - path: ./api/build/reports/ - destination: reports/ - - store_test_results: - path: ./api/build/test-results - - persist_to_workspace: - root: *workspace_root - paths: - - "./api/build/jacoco" - instrumented: <<: *container_config steps: @@ -202,12 +180,6 @@ workflows: only: /.*/ requires: - build - - api-test: - filters: - tags: - only: /.*/ - requires: - - build - instrumented: filters: tags: @@ -222,7 +194,6 @@ workflows: - build - lint - app-test - - api-test - instrumented - deploy: requires: diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 48777522e..7ac24c777 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -8,7 +8,6 @@ diff --git a/README.md b/README.md index 8f809f82f..9951cb8ef 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,6 @@ [![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy) [![BCH compliance](https://bettercodehub.com/edge/badge/wulkanowy/wulkanowy?branch=master)](https://bettercodehub.com/) [![Scrutinizer](https://img.shields.io/scrutinizer/g/wulkanowy/wulkanowy.svg?style=flat-square)](https://scrutinizer-ci.com/g/wulkanowy/wulkanowy/?branch=master) -[![Bintray](https://img.shields.io/bintray/v/wulkanowy/wulkanowy/api.svg?style=flat-square)](https://bintray.com/wulkanowy/wulkanowy/api) [![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr) [![FOSSA Status](https://app.fossa.io/api/projects/custom%2B5644%2Fgit%40github.com%3Awulkanowy%2Fwulkanowy.git.svg?type=shield)](https://app.fossa.io/projects/custom%2B5644%2Fgit%40github.com%3Awulkanowy%2Fwulkanowy.git?ref=badge_shield) diff --git a/api/build.gradle b/api/build.gradle deleted file mode 100644 index 5e5eeee37..000000000 --- a/api/build.gradle +++ /dev/null @@ -1,121 +0,0 @@ -apply plugin: 'java-library' -apply plugin: 'kotlin' -apply plugin: 'org.sonarqube' -apply plugin: 'jacoco' -apply plugin: 'com.jfrog.bintray' -apply plugin: 'com.github.dcendents.android-maven' - -compileJava.options.encoding = "UTF-8" -compileTestJava.options.encoding = "UTF-8" - -ext { - PUBLISH_GROUP_ID = GROUP_ID - PUBLISH_ARTIFACT_ID = 'api' - PUBLISH_VERSION = System.getenv('GIT_TAG') -} - -test { - testLogging { - events "passed", "skipped", "failed", "standardOut", "standardError" - outputs.upToDateWhen {false} - showStandardStreams = true - } -} - -jacocoTestReport { - reports { - xml.enabled true - } -} - -dependencies { - implementation "org.jsoup:jsoup:$jsoup" - implementation "org.apache.commons:commons-lang3:$apacheLang" - implementation "com.google.code.gson:gson:$gson" - implementation "org.slf4j:slf4j-api:$slf4jApi" - - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - - testImplementation "junit:junit:$junit" - testImplementation "org.mockito:mockito-core:$mockito" -} - -version = PUBLISH_VERSION -group = GROUP_ID - -sonarqube { - properties { - property "sonar.projectName", GROUP_ID + ":api" - property "sonar.projectKey", GROUP_ID + ":wulkanowy-api" - } -} - -def siteUrl = 'https://github.com/wulkanowy/wulkanowy' -def gitUrl = 'https://github.com/wulkanowy/wulkanowy.git' - -bintray { - user = System.getenv('BINTRAY_USER') - key = System.getenv('BINTRAY_KEY') - configurations = ['archives'] - pkg { - repo = 'wulkanowy' - name = 'api' - userOrg = 'wulkanowy' - licenses = ['Apache-2.0'] - vcsUrl = gitUrl - labels = ['aar', 'android', 'wulkanowy', 'api'] - publicDownloadNumbers = true - publish = true - - version { - name = PUBLISH_VERSION - vcsTag = PUBLISH_VERSION - released = new Date() - } - } -} - -install { - repositories.mavenInstaller { - pom { - project { - packaging 'aar' - name 'Bintray publish Gradle aar' - url siteUrl - licenses { - license { - name 'The Apache Software License, Version 2.0' - url 'http://www.apache.org/licenses/LICENSE-2.0.txt' - } - } - developers { - developer { - id 'mklkj' - name 'Mikołaj Pich' - email 'm.pich@outlook.com' - } - } - scm { - connection gitUrl - developerConnection gitUrl - url siteUrl - } - } - } - } -} - -task sourcesJar(type: Jar, dependsOn: classes) { - classifier = 'sources' - from sourceSets.main.allSource -} - -task javadocJar(type: Jar, dependsOn: javadoc) { - classifier = 'javadoc' - from javadoc.destinationDir -} - -artifacts { - archives sourcesJar - archives javadocJar -} diff --git a/api/src/main/java/io/github/wulkanowy/api/Client.java b/api/src/main/java/io/github/wulkanowy/api/Client.java deleted file mode 100644 index 6997322e6..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/Client.java +++ /dev/null @@ -1,272 +0,0 @@ -package io.github.wulkanowy.api; - -import org.jsoup.Connection; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -import io.github.wulkanowy.api.generic.School; -import io.github.wulkanowy.api.login.AccountPermissionException; -import io.github.wulkanowy.api.login.Login; - -public class Client { - - private String protocol = "https"; - - private String host = "vulcan.net.pl"; - - private String email; - - private String password; - - private String symbol; - - private String schoolId; - - private List schools; - - private List symbols; - - private Date lastSuccessRequest; - - private Cookies cookies = new Cookies(); - - private static final Logger logger = LoggerFactory.getLogger(Client.class); - - Client(String email, String password, String symbol, String schoolId) { - this.email = email; - this.password = password; - this.symbol = symbol; - this.schoolId = schoolId; - - setFullEndpointInfo(email); - } - - private void setFullEndpointInfo(String info) { - String[] creds = info.split("\\\\"); - - email = info; - - if (creds.length > 2) { - String[] url = creds[0].split("://"); - - protocol = url[0]; - String[] path = url[1].split("/"); - host = path[0]; - if (path.length > 1) { - symbol = path[1]; - } - email = creds[2]; - } - } - - private void login() throws IOException, VulcanException { - if (isLoggedIn()) { - return; - } - - logger.info("Not logged. Login..."); - - clearCookies(); - new Login(this).login(email, password, symbol); - lastSuccessRequest = new Date(); - - logger.info("Login successful on {} at {}", getHost(), new Date()); - } - - private boolean isLoggedIn() { - logger.trace("Last success request: {}", lastSuccessRequest); - logger.trace("Cookies: {}", getCookies().size()); - - return getCookies().size() > 0 && lastSuccessRequest != null && - 5 > TimeUnit.MILLISECONDS.toMinutes(new Date().getTime() - lastSuccessRequest.getTime()); - - } - - public String getSymbol() { - return symbol; - } - - public void setSymbol(String symbol) { - this.symbol = symbol; - } - - private Map getCookies() { - return cookies.getItems(); - } - - public void clearCookies() { - cookies = new Cookies(); - } - - public String getHost() { - return host; - } - - public void setSchools(List schools) { - this.schools = schools; - this.schoolId = schools.get(0).getId(); - } - - public List getSchools() throws IOException, VulcanException { - login(); - return schools; - } - - public void setSymbols(List symbols) { - this.symbols = symbols; - } - - public List getSymbols() throws IOException, VulcanException { - try { - login(); - } catch (AccountPermissionException e) { - // logger.error(e.getMessage(), e); - } - - return symbols; - } - - public String getSchoolId() throws IOException, VulcanException { - return schoolId != null ? schoolId : getSchools().get(0).getId(); - } - - String getFilledUrl(String url) { - return url - .replace("{schema}", protocol) - .replace("{host}", host) - .replace("{symbol}", symbol) - .replace("{ID}", schoolId != null ? schoolId : ""); - } - - public Document getPageByUrl(String url) throws IOException, VulcanException { - return getPageByUrl(url, true, null); - } - - public Document getPageByUrl(String url, boolean loginBefore) throws IOException, VulcanException { - return getPageByUrl(url, loginBefore, null); - } - - public synchronized Document getPageByUrl(String url, boolean loginBefore, Map cookies) throws IOException, VulcanException { - if (loginBefore) { - login(); - } - - if (null != cookies) { - this.cookies.addItems(cookies); - } - - url = getFilledUrl(url); - - logger.debug("GET {}", url); - - Connection.Response response = Jsoup.connect(url) - .followRedirects(true) - .cookies(getCookies()) - .execute(); - - this.cookies.addItems(response.cookies()); - - Document doc = checkForErrors(response.parse(), response.statusCode()); - - if (loginBefore) { - lastSuccessRequest = new Date(); - } - - return doc; - } - - public synchronized Document postPageByUrl(String url, String[][] params) throws IOException, VulcanException { - url = getFilledUrl(url); - - logger.debug("POST {}", url); - - Connection connection = Jsoup.connect(url); - - for (String[] data : params) { - connection.data(data[0], data[1]); - } - - Connection.Response response = connection - .followRedirects(true) - .method(Connection.Method.POST) - .cookies(getCookies()) - .execute(); - - this.cookies.addItems(response.cookies()); - - response.bufferUp(); // fixes cert parsing issues #109 - - return checkForErrors(response.parse(), response.statusCode()); - } - - public String getJsonStringByUrl(String url) throws IOException, VulcanException { - login(); - - url = getFilledUrl(url); - - logger.debug("GET {}", url); - - Connection.Response response = Jsoup.connect(url) - .followRedirects(true) - .ignoreContentType(true) - .cookies(getCookies()) - .execute(); - - this.cookies.addItems(response.cookies()); - - return response.body(); - } - - public String postJsonStringByUrl(String url, String[][] params) throws IOException, VulcanException { - login(); - - url = getFilledUrl(url); - - logger.debug("POST {}", url); - - Connection connection = Jsoup.connect(url); - - for (String[] data : params) { - connection.data(data[0], data[1]); - } - - Connection.Response response = connection - .followRedirects(true) - .ignoreContentType(true) - .method(Connection.Method.POST) - .cookies(getCookies()) - .execute(); - - this.cookies.addItems(response.cookies()); - - return response.body(); - } - - Document checkForErrors(Document doc, int code) throws VulcanException { - lastSuccessRequest = null; - - String title = doc.select("title").text(); - if ("Przerwa techniczna".equals(title)) { - throw new VulcanOfflineException(title); - } - - String singIn = doc.select(".loginButton").text(); - if ("Zaloguj się".equals(singIn)) { - throw new NotLoggedInErrorException(singIn); - } - - if ("Błąd strony".equals(title)) { - throw new NotLoggedInErrorException(title + " " + doc.body() + ", status: " + code); - } - - return doc; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/Cookies.java b/api/src/main/java/io/github/wulkanowy/api/Cookies.java deleted file mode 100644 index dfe4c4b54..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/Cookies.java +++ /dev/null @@ -1,17 +0,0 @@ -package io.github.wulkanowy.api; - -import java.util.HashMap; -import java.util.Map; - -class Cookies { - - private Map jar = new HashMap<>(); - - Map getItems() { - return jar; - } - - void addItems(Map items) { - jar.putAll(items); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/DateTimeUtils.kt b/api/src/main/java/io/github/wulkanowy/api/DateTimeUtils.kt deleted file mode 100644 index 7ea6c0665..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/DateTimeUtils.kt +++ /dev/null @@ -1,54 +0,0 @@ -package io.github.wulkanowy.api - -import java.text.SimpleDateFormat -import java.util.* - -const val LOG_DATE_PATTERN = "dd.MM.yyyy" -const val API_DATE_PATTERN = "yyyy-MM-dd" - -const val TICKS_AT_EPOCH = 621355968000000000L -const val TICKS_PER_MILLISECOND = 10000 - -fun getFormattedDate(date: String?): String { - return getFormattedDate(date, API_DATE_PATTERN) -} - -fun getFormattedDate(date: String?, format: String): String { - return getFormattedDate(date, LOG_DATE_PATTERN, format) -} - -fun getFormattedDate(date: String?, fromFormat: String, toFormat: String): String { - if (date.isNullOrEmpty()) return "" - val sdf = SimpleDateFormat(fromFormat, Locale.ROOT) - val d = sdf.parse(date) - sdf.applyPattern(toFormat) - - return sdf.format(d) -} - -fun getDateAsTick(dateString: String?): String { - if (dateString.isNullOrEmpty()) { - return "" - } - - return getDateAsTick(dateString as String, API_DATE_PATTERN).toString() -} - -fun getDateAsTick(dateString: String, dateFormat: String): Long { - val format = SimpleDateFormat(dateFormat, Locale.ROOT) - format.timeZone = TimeZone.getTimeZone("UTC") - val dateObject = format.parse(dateString) - - return getDateAsTick(dateObject) -} - -fun getDateAsTick(date: Date): Long { - val calendar = Calendar.getInstance() - calendar.time = date - - return calendar.timeInMillis * TICKS_PER_MILLISECOND + TICKS_AT_EPOCH -} - -fun getDate(netTicks: Long): Date { - return Date((netTicks - TICKS_AT_EPOCH) / TICKS_PER_MILLISECOND) -} diff --git a/api/src/main/java/io/github/wulkanowy/api/NotLoggedInErrorException.java b/api/src/main/java/io/github/wulkanowy/api/NotLoggedInErrorException.java deleted file mode 100644 index 179fc8ccc..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/NotLoggedInErrorException.java +++ /dev/null @@ -1,8 +0,0 @@ -package io.github.wulkanowy.api; - -public class NotLoggedInErrorException extends VulcanException { - - public NotLoggedInErrorException(String message) { - super(message); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/SnP.java b/api/src/main/java/io/github/wulkanowy/api/SnP.java deleted file mode 100644 index 84ec1aed1..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/SnP.java +++ /dev/null @@ -1,35 +0,0 @@ -package io.github.wulkanowy.api; - -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; - -import java.io.IOException; -import java.util.List; - -import io.github.wulkanowy.api.generic.Diary; -import io.github.wulkanowy.api.generic.ParamItem; -import io.github.wulkanowy.api.generic.Semester; -import io.github.wulkanowy.api.generic.Student; - -public interface SnP { - - void setDiaryID(String id); - - String getStudentID(); - - List getStudents() throws IOException, VulcanException; - - StudentAndParent setUp() throws IOException, VulcanException; - - String getRowDataChildValue(Element e, int index); - - Document getSnPPageDocument(String url) throws IOException, VulcanException; - - List getDiaries() throws IOException, VulcanException; - - List getSemesters() throws IOException, VulcanException; - - List getSemesters(Document gradesPage); - - T getCurrent(List list); -} diff --git a/api/src/main/java/io/github/wulkanowy/api/StudentAndParent.java b/api/src/main/java/io/github/wulkanowy/api/StudentAndParent.java deleted file mode 100644 index ba527f6a1..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/StudentAndParent.java +++ /dev/null @@ -1,171 +0,0 @@ -package io.github.wulkanowy.api; - -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.net.URL; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import io.github.wulkanowy.api.generic.Diary; -import io.github.wulkanowy.api.generic.ParamItem; -import io.github.wulkanowy.api.generic.Semester; -import io.github.wulkanowy.api.generic.Student; - -public class StudentAndParent implements SnP { - - private static final String BASE_URL = "{schema}://uonetplus-opiekun.{host}/{symbol}/{ID}/"; - - private static final String GRADES_PAGE_URL = "Oceny/Wszystkie"; - - private Client client; - - private String studentID; - - private String diaryID; - - private static final Logger logger = LoggerFactory.getLogger(StudentAndParent.class); - - StudentAndParent(Client client, String studentID, String diaryID) { - this.client = client; - this.studentID = studentID; - this.diaryID = diaryID; - } - - public StudentAndParent setUp() throws IOException, VulcanException { - if (null == getStudentID() || "".equals(getStudentID())) { - Document doc = client.getPageByUrl(BASE_URL); - - if (doc.select("#idSection").isEmpty()) { - logger.error("Expected SnP page, got page with title: {} {}", doc.title(), doc.selectFirst("body")); - throw new VulcanException("Nieznany błąd podczas pobierania danych. Strona: " + doc.title()); - } - - Student student = getCurrent(getStudents(doc)); - studentID = student.getId(); - - Diary diary = getCurrent(getDiaries(doc)); - diaryID = diary.getId(); - } - - return this; - } - - public String getStudentID() { - return studentID; - } - - public String getRowDataChildValue(Element e, int index) { - return e.select(".daneWiersz .wartosc").get(index - 1).text(); - } - - public void setDiaryID(String id) { - this.diaryID = id; - } - - public Document getSnPPageDocument(String url) throws IOException, VulcanException { - Map cookies = new HashMap<>(); - cookies.put("idBiezacyDziennik", diaryID); - cookies.put("idBiezacyUczen", studentID); - - Document doc = client.getPageByUrl(BASE_URL + url, true, cookies); - - if (!doc.title().startsWith("Witryna ucznia i rodzica")) { - logger.error("Expected SnP page, got page with title: {} {}", doc.title(), doc.selectFirst("body")); - throw new VulcanException("Nieznany błąd podczas pobierania danych. Strona: " + doc.title()); - } - - if (doc.title().endsWith("Strona główna")) { - throw new VulcanException("Sesja została nieprawidłowo zainicjowana"); - } - - return doc; - } - - public List getDiaries() throws IOException, VulcanException { - return getDiaries(client.getPageByUrl(BASE_URL)); - } - - private List getDiaries(Document doc) throws IOException, VulcanException { - return getList(doc.select("#dziennikDropDownList option"), Diary.class); - } - - public List getStudents() throws IOException, VulcanException { - return getStudents(client.getPageByUrl(BASE_URL)); - } - - private List getStudents(Document doc) throws IOException, VulcanException { - return getList(doc.select("#uczenDropDownList option"), Student.class); - } - - public List getSemesters() throws IOException, VulcanException { - return getSemesters(getSnPPageDocument(GRADES_PAGE_URL)); - } - - public List getSemesters(Document gradesPage) { - Elements semesterOptions = gradesPage.select("#okresyKlasyfikacyjneDropDownList option"); - - List semesters = new ArrayList<>(); - - for (Element e : semesterOptions) { - Semester semester = new Semester() - .setId(e.attr("value")) - .setName(e.text()); - - if (isCurrent(e)) { - semester.setCurrent(true); - } - - semesters.add(semester); - } - - return semesters; - } - - @SuppressWarnings("unchecked") - private List getList(Elements options, Class type) throws IOException, VulcanException { - List list = new ArrayList<>(); - - for (Element e : options) { - URL url = new URL(e.val()); - try { - ParamItem item = type.newInstance() - .setId(url.getQuery().split("=")[1]) - .setName(e.text()); - - if (isCurrent(e)) { - item.setCurrent(true); - } - - list.add((T) item); - } catch (Exception ex) { - throw new VulcanException("Error while trying to parse params list", ex); - } - } - - return list; - } - - @SuppressWarnings("unchecked") - public T getCurrent(List list) { - ParamItem current = null; - for (ParamItem s : list) { - if (s.isCurrent()) { - current = s; - break; - } - } - - return (T) current; - } - - private boolean isCurrent(Element e) { - return "selected".equals(e.attr("selected")); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/Vulcan.java b/api/src/main/java/io/github/wulkanowy/api/Vulcan.java deleted file mode 100644 index adaeda65d..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/Vulcan.java +++ /dev/null @@ -1,183 +0,0 @@ -package io.github.wulkanowy.api; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.util.List; - -import io.github.wulkanowy.api.attendance.Attendance; -import io.github.wulkanowy.api.attendance.AttendanceLesson; -import io.github.wulkanowy.api.attendance.AttendanceStatistics; -import io.github.wulkanowy.api.attendance.AttendanceTable; -import io.github.wulkanowy.api.exams.ExamEntry; -import io.github.wulkanowy.api.exams.Exams; -import io.github.wulkanowy.api.exams.ExamsWeek; -import io.github.wulkanowy.api.generic.School; -import io.github.wulkanowy.api.grades.GradeKt; -import io.github.wulkanowy.api.grades.Grades; -import io.github.wulkanowy.api.grades.GradesList; -import io.github.wulkanowy.api.grades.GradesSummary; -import io.github.wulkanowy.api.grades.SubjectsList; -import io.github.wulkanowy.api.grades.Summary; -import io.github.wulkanowy.api.homework.Homework; -import io.github.wulkanowy.api.homework.HomeworkList; -import io.github.wulkanowy.api.messages.Messages; -import io.github.wulkanowy.api.mobile.RegisterDevice; -import io.github.wulkanowy.api.mobile.RegisteredDevices; -import io.github.wulkanowy.api.notes.AchievementsList; -import io.github.wulkanowy.api.notes.NotesList; -import io.github.wulkanowy.api.school.SchoolInfo; -import io.github.wulkanowy.api.school.TeachersInfo; -import io.github.wulkanowy.api.timetable.Timetable; -import io.github.wulkanowy.api.timetable.TimetableKt; -import io.github.wulkanowy.api.timetable.TimetableLesson; -import io.github.wulkanowy.api.user.BasicInformation; -import io.github.wulkanowy.api.user.FamilyInformation; - -public class Vulcan { - - private SnP snp; - - private Client client; - - private String studentId; - - private String diaryId; - - private static final Logger logger = LoggerFactory.getLogger(Vulcan.class); - - public void setCredentials(String email, String password, String symbol, String schoolId, String studentId, String diaryId) { - this.studentId = studentId; - this.diaryId = diaryId; - - client = new Client(email, password, symbol, schoolId); - - logger.debug("Client created with symbol " + symbol); - } - - public Client getClient() throws NotLoggedInErrorException { - if (null == client) { - throw new NotLoggedInErrorException("Vulcan must be initialized by calling setCredentials() prior to fetch data"); - } - - return client; - } - - public String getSymbol() throws NotLoggedInErrorException { - return getClient().getSymbol(); - } - - public List getSchools() throws VulcanException, IOException { - return getClient().getSchools(); - } - - public List getSymbols() throws VulcanException, IOException { - return getClient().getSymbols(); - } - - public SnP getStudentAndParent() throws VulcanException, IOException { - if (null != this.snp) { - return this.snp; - } - - this.snp = new StudentAndParent(getClient(), studentId, diaryId) - .setUp(); - - return this.snp; - } - - public void logout() { - client = null; - snp = null; - } - - public List getAttendance(String dateStart) throws VulcanException, IOException { - return new Attendance(getStudentAndParent()).getAttendance(dateStart); - } - - @Deprecated - public AttendanceTable getAttendanceTable() throws IOException, VulcanException { - return new AttendanceTable(getStudentAndParent()); - } - - public AttendanceStatistics getAttendanceStatistics() throws IOException, VulcanException { - return new AttendanceStatistics(getStudentAndParent()); - } - - public List getExams(String dateStart) throws VulcanException, IOException { - return new Exams(getStudentAndParent()).getExams(dateStart); - } - - @Deprecated - public ExamsWeek getExamsList() throws IOException, VulcanException { - return new ExamsWeek(getStudentAndParent()); - } - - public List getGrades(String semester) throws VulcanException, IOException { - return new Grades(getStudentAndParent()).getGrades(semester); - } - - @Deprecated - public GradesList getGradesList() throws IOException, VulcanException { - return new GradesList(getStudentAndParent()); - } - - public List getGradesSummary(String semester) throws VulcanException, IOException { - return new GradesSummary(getStudentAndParent()).getSummary(semester); - } - - public List getHomework(String date) throws VulcanException, IOException { - return new HomeworkList(getStudentAndParent()).getHomework(date); - } - - @Deprecated - public SubjectsList getSubjectsList() throws IOException, VulcanException { - return new SubjectsList(getStudentAndParent()); - } - - public AchievementsList getAchievementsList() throws IOException, VulcanException { - return new AchievementsList(getStudentAndParent()); - } - - public NotesList getNotesList() throws IOException, VulcanException { - return new NotesList(getStudentAndParent()); - } - - public SchoolInfo getSchoolInfo() throws IOException, VulcanException { - return new SchoolInfo(getStudentAndParent()); - } - - public TeachersInfo getTeachersInfo() throws IOException, VulcanException { - return new TeachersInfo(getStudentAndParent()); - } - - public List getTimetable(String dateStart) throws VulcanException, IOException { - return new TimetableKt(getStudentAndParent()).getTimetable(dateStart); - } - - @Deprecated - public Timetable getTimetable() throws IOException, VulcanException { - return new Timetable(getStudentAndParent()); - } - - public BasicInformation getBasicInformation() throws IOException, VulcanException { - return new BasicInformation(getStudentAndParent()); - } - - public FamilyInformation getFamilyInformation() throws IOException, VulcanException { - return new FamilyInformation(getStudentAndParent()); - } - - public RegisteredDevices getRegisteredDevices() throws VulcanException, IOException { - return new RegisteredDevices(getStudentAndParent()); - } - - public RegisterDevice getRegisterDevice() throws VulcanException, IOException { - return new RegisterDevice(getStudentAndParent()); - } - - public Messages getMessages() throws VulcanException { - return new Messages(getClient()); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/VulcanException.java b/api/src/main/java/io/github/wulkanowy/api/VulcanException.java deleted file mode 100644 index 0bc0c51fc..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/VulcanException.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.github.wulkanowy.api; - -public class VulcanException extends Exception { - - public VulcanException(String message) { - super(message); - } - - protected VulcanException(String message, Exception e) { - super(message, e); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/VulcanOfflineException.java b/api/src/main/java/io/github/wulkanowy/api/VulcanOfflineException.java deleted file mode 100644 index 24ab48e6c..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/VulcanOfflineException.java +++ /dev/null @@ -1,8 +0,0 @@ -package io.github.wulkanowy.api; - -public class VulcanOfflineException extends VulcanException { - - VulcanOfflineException(String message) { - super(message); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/attendance/Attendance.kt b/api/src/main/java/io/github/wulkanowy/api/attendance/Attendance.kt deleted file mode 100644 index b66a36231..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/attendance/Attendance.kt +++ /dev/null @@ -1,69 +0,0 @@ -package io.github.wulkanowy.api.attendance - -import io.github.wulkanowy.api.SnP -import io.github.wulkanowy.api.getDateAsTick -import io.github.wulkanowy.api.getFormattedDate -import org.jsoup.nodes.Element -import org.jsoup.select.Elements - -class Attendance(private val snp: SnP) { - - fun getAttendance() = getAttendance("") - - fun getAttendance(start: String): List { - val table = snp.getSnPPageDocument("Frekwencja.mvc?data=" + getDateAsTick(start)) - .selectFirst(".mainContainer .presentData") - - val days = getDays(table.select("thead th")) - - return table.select("tbody tr").map { - val hours = it.select("td") - hours.drop(1).mapIndexed { i, item -> - getLesson(item, days[i], hours[0].text().toInt()) - } - }.flatten().sortedBy { - it.date - }.filter { - it.subject.isNotBlank() - } - } - - private fun getDays(el: Elements): List { - return el.drop(1).map { - getFormattedDate(it.html().split("
")[1]) - } - } - - private fun getLesson(cell: Element, date: String, number: Int): AttendanceLesson { - val lesson = AttendanceLesson(number = number, date = date, subject = cell.select("span").text()) - - if (Types.CLASS_NOT_EXIST == cell.attr("class")) { - lesson.notExist = true - - return lesson - } - - when (cell.select("div").attr("class")) { - Types.CLASS_PRESENCE -> lesson.presence = true - Types.CLASS_ABSENCE_UNEXCUSED -> lesson.absenceUnexcused = true - Types.CLASS_ABSENCE_EXCUSED -> lesson.absenceExcused = true - Types.CLASS_ABSENCE_FOR_SCHOOL_REASONS -> lesson.absenceForSchoolReasons = true - Types.CLASS_UNEXCUSED_LATENESS -> lesson.unexcusedLateness = true - Types.CLASS_EXCUSED_LATENESS -> lesson.excusedLateness = true - Types.CLASS_EXEMPTION -> lesson.exemption = true - } - - return lesson - } - - private object Types { - const val CLASS_NOT_EXIST = "x-sp-nieobecny-w-oddziale" - const val CLASS_PRESENCE = "x-obecnosc" - const val CLASS_ABSENCE_UNEXCUSED = "x-nieobecnosc-nieuspr" - const val CLASS_ABSENCE_EXCUSED = "x-nieobecnosc-uspr" - const val CLASS_ABSENCE_FOR_SCHOOL_REASONS = "x-nieobecnosc-przycz-szkol" - const val CLASS_UNEXCUSED_LATENESS = "x-sp-nieusprawiedliwione" - const val CLASS_EXCUSED_LATENESS = "x-sp-spr" - const val CLASS_EXEMPTION = "x-sp-zwolnienie" - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/attendance/AttendanceLesson.kt b/api/src/main/java/io/github/wulkanowy/api/attendance/AttendanceLesson.kt deleted file mode 100644 index 4edf8648e..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/attendance/AttendanceLesson.kt +++ /dev/null @@ -1,26 +0,0 @@ -package io.github.wulkanowy.api.attendance - -data class AttendanceLesson( - - val number: Int, - - val date: String, - - val subject: String, - - var notExist: Boolean = false, - - var presence: Boolean = false, - - var absenceUnexcused: Boolean = false, - - var absenceExcused: Boolean = false, - - var unexcusedLateness: Boolean = false, - - var absenceForSchoolReasons: Boolean = false, - - var excusedLateness: Boolean = false, - - var exemption: Boolean = false -) diff --git a/api/src/main/java/io/github/wulkanowy/api/attendance/AttendanceStatistics.java b/api/src/main/java/io/github/wulkanowy/api/attendance/AttendanceStatistics.java deleted file mode 100644 index 29b6a6d99..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/attendance/AttendanceStatistics.java +++ /dev/null @@ -1,89 +0,0 @@ -package io.github.wulkanowy.api.attendance; - -import org.apache.commons.lang3.math.NumberUtils; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import io.github.wulkanowy.api.SnP; -import io.github.wulkanowy.api.VulcanException; -import io.github.wulkanowy.api.generic.Month; -import io.github.wulkanowy.api.generic.Subject; - -public class AttendanceStatistics { - - private SnP snp; - - private String attendancePageUrl = "Frekwencja.mvc"; - - public AttendanceStatistics(SnP snp) { - this.snp = snp; - } - - public Types getTypesTable() throws IOException, VulcanException { - return getTypesTable(""); - } - - public Types getTypesTable(String tick) throws IOException, VulcanException { - return getTypesTable(tick, -1); - } - - public List getSubjectList() throws IOException, VulcanException { - Element mainContainer = snp.getSnPPageDocument(attendancePageUrl) - .select(".mainContainer #idPrzedmiot").first(); - - List subjectList = new ArrayList<>(); - - for (Element subject : mainContainer.select("option")) { - subjectList.add(new Subject() - .setId(Integer.parseInt(subject.attr("value"))) - .setName(subject.text()) - ); - } - - return subjectList; - } - - public Types getTypesTable(String tick, Integer subjectId) throws IOException, VulcanException { - Element mainContainer = snp.getSnPPageDocument((attendancePageUrl - + "?data={tick}&idPrzedmiot={subject}") - .replace("{tick}", tick) - .replace("{subject}", subjectId.toString()) - ).select(".mainContainer").first(); - - Element table = mainContainer.select("table:nth-of-type(2)").first(); - - Elements headerCells = table.select("thead th"); - List typeList = new ArrayList<>(); - - Elements typesRows = table.select("tbody tr"); - - // fill types with months - for (Element row : typesRows) { - Elements monthsCells = row.select("td"); - - List monthList = new ArrayList<>(); - - // iterate over month in type, first column is empty, last is `total`; (0, n-1) - for (int i = 1; i < monthsCells.size() - 1; i++) { - monthList.add(new Month() - .setValue(NumberUtils.toInt(monthsCells.get(i).text(), 0)) - .setName(headerCells.get(i).text())); - } - - typeList.add(new Type() - .setTotal(NumberUtils.toInt(monthsCells.last().text(), 0)) - .setName(monthsCells.get(0).text()) - .setMonthList(monthList)); - } - - String total = mainContainer.select("h2").text().split(": ")[1]; - - return new Types() - .setTotal(NumberUtils.toDouble(total.replace("%", "").replace(",", "."))) - .setTypeList(typeList); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/attendance/AttendanceTable.java b/api/src/main/java/io/github/wulkanowy/api/attendance/AttendanceTable.java deleted file mode 100644 index 489b24720..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/attendance/AttendanceTable.java +++ /dev/null @@ -1,112 +0,0 @@ -package io.github.wulkanowy.api.attendance; - -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import io.github.wulkanowy.api.SnP; -import io.github.wulkanowy.api.VulcanException; -import io.github.wulkanowy.api.generic.Day; -import io.github.wulkanowy.api.generic.Lesson; -import io.github.wulkanowy.api.generic.Week; - -import static io.github.wulkanowy.api.DateTimeUtilsKt.getDateAsTick; -import static io.github.wulkanowy.api.DateTimeUtilsKt.getFormattedDate; - -@Deprecated -public class AttendanceTable { - - private final static String ATTENDANCE_PAGE_URL = "Frekwencja.mvc?data="; - - private SnP snp; - - public AttendanceTable(SnP snp) { - this.snp = snp; - } - - public Week getWeekTable() throws IOException, VulcanException { - return getWeekTable(""); - } - - public Week getWeekTable(String date) throws IOException, VulcanException { - Element table = snp.getSnPPageDocument(ATTENDANCE_PAGE_URL + getDateAsTick(date)) - .select(".mainContainer .presentData").first(); - - Elements headerCells = table.select("thead th"); - List days = new ArrayList<>(); - - for (int i = 1; i < headerCells.size(); i++) { - String[] dayHeaderCell = headerCells.get(i).html().split("
"); - - days.add(new Day() - .setDayName(dayHeaderCell[0]) - .setDate(getFormattedDate(dayHeaderCell[1].trim())) - ); - } - - Elements hoursInDays = table.select("tbody tr"); - - // fill days in week with lessons - for (Element row : hoursInDays) { - Elements hours = row.select("td"); - - // fill hours in day - int size = hours.size(); - for (int i = 1; i < size; i++) { - Lesson lesson = new Lesson(); - lesson.setDate(days.get(i - 1).getDate()); - lesson.setNumber(Integer.valueOf(hours.get(0).text())); - - addLessonDetails(lesson, hours.get(i)); - - days.get(i - 1).setLesson(lesson); - } - } - - return new Week() - .setStartDayDate(days.get(0).getDate()) - .setDays(days); - } - - private void addLessonDetails(Lesson lesson, Element cell) { - lesson.setSubject(cell.select("span").text()); - - if (LessonTypes.CLASS_NOT_EXIST.equals(cell.attr("class"))) { - lesson.setNotExist(true); - lesson.setEmpty(true); - - return; - } - - switch (cell.select("div").attr("class")) { - case LessonTypes.CLASS_PRESENCE: - lesson.setPresence(true); - break; - case LessonTypes.CLASS_ABSENCE_UNEXCUSED: - lesson.setAbsenceUnexcused(true); - break; - case LessonTypes.CLASS_ABSENCE_EXCUSED: - lesson.setAbsenceExcused(true); - break; - case LessonTypes.CLASS_ABSENCE_FOR_SCHOOL_REASONS: - lesson.setAbsenceForSchoolReasons(true); - break; - case LessonTypes.CLASS_UNEXCUSED_LATENESS: - lesson.setUnexcusedLateness(true); - break; - case LessonTypes.CLASS_EXCUSED_LATENESS: - lesson.setExcusedLateness(true); - break; - case LessonTypes.CLASS_EXEMPTION: - lesson.setExemption(true); - break; - - default: - lesson.setEmpty(true); - break; - } - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/attendance/LessonTypes.java b/api/src/main/java/io/github/wulkanowy/api/attendance/LessonTypes.java deleted file mode 100644 index 8cd1ebfc8..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/attendance/LessonTypes.java +++ /dev/null @@ -1,25 +0,0 @@ -package io.github.wulkanowy.api.attendance; - -@Deprecated -class LessonTypes { - - static final String CLASS_NOT_EXIST = "x-sp-nieobecny-w-oddziale"; - - static final String CLASS_PRESENCE = "x-obecnosc"; - - static final String CLASS_ABSENCE_UNEXCUSED = "x-nieobecnosc-nieuspr"; - - static final String CLASS_ABSENCE_EXCUSED = "x-nieobecnosc-uspr"; - - static final String CLASS_ABSENCE_FOR_SCHOOL_REASONS = "x-nieobecnosc-przycz-szkol"; - - static final String CLASS_UNEXCUSED_LATENESS = "x-sp-nieusprawiedliwione"; - - static final String CLASS_EXCUSED_LATENESS = "x-sp-spr"; - - static final String CLASS_EXEMPTION = "x-sp-zwolnienie"; - - private LessonTypes() { - throw new IllegalStateException("Utility class"); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/attendance/Type.java b/api/src/main/java/io/github/wulkanowy/api/attendance/Type.java deleted file mode 100644 index 6deb003e1..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/attendance/Type.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.github.wulkanowy.api.attendance; - -import java.util.ArrayList; -import java.util.List; - -import io.github.wulkanowy.api.generic.Month; - -public class Type { - - private String name = ""; - - private int total = 0; - - private List monthList = new ArrayList<>(); - - public String getName() { - return name; - } - - public Type setName(String name) { - this.name = name; - return this; - } - - public int getTotal() { - return total; - } - - public Type setTotal(int total) { - this.total = total; - return this; - } - - public List getMonthList() { - return monthList; - } - - public Type setMonthList(List monthList) { - this.monthList = monthList; - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/attendance/Types.java b/api/src/main/java/io/github/wulkanowy/api/attendance/Types.java deleted file mode 100644 index d1b1777de..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/attendance/Types.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.github.wulkanowy.api.attendance; - -import java.util.ArrayList; -import java.util.List; - -public class Types { - - private double total = 0; - - private List typeList = new ArrayList<>(); - - public double getTotal() { - return total; - } - - public Types setTotal(double total) { - this.total = total; - return this; - } - - public List getTypeList() { - return typeList; - } - - public Types setTypeList(List typeList) { - this.typeList = typeList; - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/exams/Exam.java b/api/src/main/java/io/github/wulkanowy/api/exams/Exam.java deleted file mode 100644 index b0a83c21e..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/exams/Exam.java +++ /dev/null @@ -1,60 +0,0 @@ -package io.github.wulkanowy.api.exams; - -@Deprecated -public class Exam { - - private String subjectAndGroup = ""; - - private String type = ""; - - private String description = ""; - - private String teacher = ""; - - private String entryDate = ""; - - public String getSubjectAndGroup() { - return subjectAndGroup; - } - - public Exam setSubjectAndGroup(String subjectAndGroup) { - this.subjectAndGroup = subjectAndGroup; - return this; - } - - public String getType() { - return type; - } - - public Exam setType(String type) { - this.type = type; - return this; - } - - public String getDescription() { - return description; - } - - public Exam setDescription(String description) { - this.description = description; - return this; - } - - public String getTeacher() { - return teacher; - } - - public Exam setTeacher(String teacher) { - this.teacher = teacher; - return this; - } - - public String getEntryDate() { - return entryDate; - } - - public Exam setEntryDate(String entryDate) { - this.entryDate = entryDate; - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/exams/ExamDay.java b/api/src/main/java/io/github/wulkanowy/api/exams/ExamDay.java deleted file mode 100644 index 22f774198..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/exams/ExamDay.java +++ /dev/null @@ -1,20 +0,0 @@ -package io.github.wulkanowy.api.exams; - -import java.util.ArrayList; -import java.util.List; - -import io.github.wulkanowy.api.generic.Day; - -@Deprecated -public class ExamDay extends Day { - - private List examList = new ArrayList<>(); - - public List getExamList() { - return examList; - } - - public void addExam(Exam exam) { - this.examList.add(exam); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/exams/ExamEntry.kt b/api/src/main/java/io/github/wulkanowy/api/exams/ExamEntry.kt deleted file mode 100644 index e9c2ca28c..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/exams/ExamEntry.kt +++ /dev/null @@ -1,20 +0,0 @@ -package io.github.wulkanowy.api.exams - -data class ExamEntry( - - val date: String, - - val entryDate: String, - - val subject: String, - - val group: String, - - val type: String, - - val description: String, - - val teacher: String, - - val teacherSymbol: String -) diff --git a/api/src/main/java/io/github/wulkanowy/api/exams/Exams.kt b/api/src/main/java/io/github/wulkanowy/api/exams/Exams.kt deleted file mode 100644 index f95c2554f..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/exams/Exams.kt +++ /dev/null @@ -1,40 +0,0 @@ -package io.github.wulkanowy.api.exams - -import io.github.wulkanowy.api.SnP -import io.github.wulkanowy.api.getDateAsTick -import io.github.wulkanowy.api.getFormattedDate -import org.jsoup.nodes.Element - -class Exams(private val snp: SnP) { - - fun getExams() = getExams("") - - fun getExams(start: String): List { - return snp.getSnPPageDocument("Sprawdziany.mvc/Terminarz?rodzajWidoku=2&data=" + getDateAsTick(start)) - .select(".mainContainer > div:not(.navigation)").map { - val date = getFormattedDate(it.selectFirst("h2")?.text()?.split(", ")?.last()?.trim()) - - it.select("article").mapIndexed { _, element -> getExam(element, date) } - }.flatten() - } - - private fun getExam(e: Element, date: String): ExamEntry { - val subjectAndGroup = snp.getRowDataChildValue(e, 1) - val groupAndClass = subjectAndGroup.split(" ").last() - val group = if (groupAndClass.contains("|")) groupAndClass.split("|").last() else "" - val teacherAndDate = snp.getRowDataChildValue(e, 4).split(", ") - val teacherSymbol = teacherAndDate.first().split(" ").last().removeSurrounding("[", "]") - val teacher = teacherAndDate.first().replace(" [$teacherSymbol]", "") - - return ExamEntry( - date = date, - entryDate = getFormattedDate(teacherAndDate.last()), - subject = subjectAndGroup.replace(groupAndClass, "").trim(), - group = group, - type = snp.getRowDataChildValue(e, 2), - description = snp.getRowDataChildValue(e, 3), - teacher = teacher, - teacherSymbol = teacherSymbol - ) - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/exams/ExamsWeek.java b/api/src/main/java/io/github/wulkanowy/api/exams/ExamsWeek.java deleted file mode 100644 index b15dbd44f..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/exams/ExamsWeek.java +++ /dev/null @@ -1,74 +0,0 @@ -package io.github.wulkanowy.api.exams; - -import org.apache.commons.lang3.StringUtils; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import io.github.wulkanowy.api.SnP; -import io.github.wulkanowy.api.VulcanException; -import io.github.wulkanowy.api.generic.Week; - -import static io.github.wulkanowy.api.DateTimeUtilsKt.getDateAsTick; -import static io.github.wulkanowy.api.DateTimeUtilsKt.getFormattedDate; - -@Deprecated -public class ExamsWeek { - - private static final String EXAMS_PAGE_URL = "Sprawdziany.mvc/Terminarz?rodzajWidoku=2&data="; - - private final SnP snp; - - public ExamsWeek(SnP snp) { - this.snp = snp; - } - - public Week getCurrent() throws IOException, VulcanException { - return getWeek("", true); - } - - public Week getWeek(String date, final boolean onlyNotEmpty) throws IOException, VulcanException { - Document examsPage = snp.getSnPPageDocument(EXAMS_PAGE_URL + getDateAsTick(date)); - Elements examsDays = examsPage.select(".mainContainer > div:not(.navigation)"); - - List days = new ArrayList<>(); - - for (Element item : examsDays) { - ExamDay day = new ExamDay(); - Element dayHeading = item.select("h2").first(); - - if (null == dayHeading && onlyNotEmpty) { - continue; - } - - if (null != dayHeading) { - String[] dateHeader = dayHeading.text().split(", "); - day.setDayName(StringUtils.capitalize(dateHeader[0])); - day.setDate(getFormattedDate(dateHeader[1])); - } - - Elements exams = item.select("article"); - for (Element e : exams) { - day.addExam(new Exam() - .setSubjectAndGroup(snp.getRowDataChildValue(e, 1)) - .setType(snp.getRowDataChildValue(e, 2)) - .setDescription(snp.getRowDataChildValue(e, 3)) - .setTeacher(snp.getRowDataChildValue(e, 4).split(", ")[0]) - .setEntryDate(getFormattedDate(snp.getRowDataChildValue(e, 4).split(", ")[1])) - ); - } - - days.add(day); - } - - - return new Week() - .setStartDayDate(getFormattedDate(examsPage.select(".mainContainer > h2") - .first().text().split(" ")[1])) - .setDays(days); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/generic/Day.java b/api/src/main/java/io/github/wulkanowy/api/generic/Day.java deleted file mode 100644 index 879f4108f..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/generic/Day.java +++ /dev/null @@ -1,45 +0,0 @@ -package io.github.wulkanowy.api.generic; - -import java.util.ArrayList; -import java.util.List; - -@Deprecated -public class Day { - - private List lessons = new ArrayList<>(); - - protected String date = ""; - - private String dayName = ""; - - public Lesson getLesson(int index) { - return lessons.get(index); - } - - public List getLessons() { - return lessons; - } - - public Day setLesson(Lesson lesson) { - this.lessons.add(lesson); - return this; - } - - public String getDate() { - return date; - } - - public Day setDate(String date) { - this.date = date; - return this; - } - - public String getDayName() { - return dayName; - } - - public Day setDayName(String dayName) { - this.dayName = dayName; - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/generic/Diary.java b/api/src/main/java/io/github/wulkanowy/api/generic/Diary.java deleted file mode 100644 index 5c7c8593b..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/generic/Diary.java +++ /dev/null @@ -1,38 +0,0 @@ -package io.github.wulkanowy.api.generic; - -public class Diary implements ParamItem { - - private String id = ""; - - private String name = ""; - - private boolean current = false; - - public String getId() { - return id; - } - - public Diary setId(String id) { - this.id = id; - return this; - } - - public String getName() { - return name; - } - - public Diary setName(String name) { - this.name = name; - return this; - } - - @Override - public boolean isCurrent() { - return current; - } - - public Diary setCurrent(boolean current) { - this.current = current; - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/generic/Lesson.java b/api/src/main/java/io/github/wulkanowy/api/generic/Lesson.java deleted file mode 100644 index f52703348..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/generic/Lesson.java +++ /dev/null @@ -1,242 +0,0 @@ -package io.github.wulkanowy.api.generic; - -@Deprecated -public class Lesson { - - private int number = 0; - - private String subject = ""; - - private String teacher = ""; - - private String room = ""; - - private String description = ""; - - private String groupName = ""; - - private String startTime = ""; - - private String endTime = ""; - - private String date = ""; - - private boolean isEmpty = false; - - private boolean isDivisionIntoGroups = false; - - private boolean isPlanning = false; - - private boolean isRealized = false; - - private boolean isMovedOrCanceled = false; - - private boolean isNewMovedInOrChanged = false; - - private boolean isNotExist = false; - - private boolean isPresence = false; - - private boolean isAbsenceUnexcused = false; - - private boolean isAbsenceExcused = false; - - private boolean isUnexcusedLateness = false; - - private boolean isAbsenceForSchoolReasons = false; - - private boolean isExcusedLateness = false; - - private boolean isExemption = false; - - public int getNumber() { - return number; - } - - public Lesson setNumber(int number) { - this.number = number; - return this; - } - - public String getSubject() { - return subject; - } - - public Lesson setSubject(String subject) { - this.subject = subject; - return this; - } - - public String getTeacher() { - return teacher; - } - - public Lesson setTeacher(String teacher) { - this.teacher = teacher; - return this; - } - - public String getRoom() { - return room; - } - - public Lesson setRoom(String room) { - this.room = room; - return this; - } - - public String getDescription() { - return description; - } - - public Lesson setDescription(String description) { - this.description = description; - return this; - } - - public String getGroupName() { - return groupName; - } - - public void setGroupName(String groupName) { - this.groupName = groupName; - } - - public String getStartTime() { - return startTime; - } - - public void setStartTime(String startTime) { - this.startTime = startTime; - } - - public String getEndTime() { - return endTime; - } - - public void setEndTime(String endTime) { - this.endTime = endTime; - } - - public String getDate() { - return date; - } - - public Lesson setDate(String date) { - this.date = date; - return this; - } - - public boolean isEmpty() { - return isEmpty; - } - - public Lesson setEmpty(boolean empty) { - isEmpty = empty; - return this; - } - - public boolean isDivisionIntoGroups() { - return isDivisionIntoGroups; - } - - public void setDivisionIntoGroups(boolean divisionIntoGroups) { - isDivisionIntoGroups = divisionIntoGroups; - } - - public boolean isPlanning() { - return isPlanning; - } - - public void setPlanning(boolean planning) { - isPlanning = planning; - } - - public boolean isRealized() { - return isRealized; - } - - public void setRealized(boolean realized) { - isRealized = realized; - } - - public boolean isMovedOrCanceled() { - return isMovedOrCanceled; - } - - public void setMovedOrCanceled(boolean movedOrCanceled) { - isMovedOrCanceled = movedOrCanceled; - } - - public boolean isNewMovedInOrChanged() { - return isNewMovedInOrChanged; - } - - public void setNewMovedInOrChanged(boolean newMovedInOrChanged) { - isNewMovedInOrChanged = newMovedInOrChanged; - } - - public boolean isNotExist() { - return isNotExist; - } - - public void setNotExist(boolean notExist) { - isNotExist = notExist; - } - - public boolean isPresence() { - return isPresence; - } - - public void setPresence(boolean presence) { - isPresence = presence; - } - - public boolean isAbsenceUnexcused() { - return isAbsenceUnexcused; - } - - public void setAbsenceUnexcused(boolean absenceUnexcused) { - isAbsenceUnexcused = absenceUnexcused; - } - - public boolean isAbsenceExcused() { - return isAbsenceExcused; - } - - public void setAbsenceExcused(boolean absenceExcused) { - isAbsenceExcused = absenceExcused; - } - - public boolean isUnexcusedLateness() { - return isUnexcusedLateness; - } - - public void setUnexcusedLateness(boolean unexcusedLateness) { - isUnexcusedLateness = unexcusedLateness; - } - - public boolean isAbsenceForSchoolReasons() { - return isAbsenceForSchoolReasons; - } - - public void setAbsenceForSchoolReasons(boolean absenceForSchoolReasons) { - isAbsenceForSchoolReasons = absenceForSchoolReasons; - } - - public boolean isExcusedLateness() { - return isExcusedLateness; - } - - public void setExcusedLateness(boolean excusedLateness) { - isExcusedLateness = excusedLateness; - } - - public boolean isExemption() { - return isExemption; - } - - public void setExemption(boolean exemption) { - isExemption = exemption; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/generic/Month.java b/api/src/main/java/io/github/wulkanowy/api/generic/Month.java deleted file mode 100644 index e38ef3a32..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/generic/Month.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.github.wulkanowy.api.generic; - -public class Month { - - private String name = ""; - - private int value = 0; - - public String getName() { - return name; - } - - public Month setName(String name) { - this.name = name; - return this; - } - - public int getValue() { - return value; - } - - public Month setValue(int value) { - this.value = value; - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/generic/ParamItem.java b/api/src/main/java/io/github/wulkanowy/api/generic/ParamItem.java deleted file mode 100644 index e7edfbf48..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/generic/ParamItem.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.github.wulkanowy.api.generic; - -public interface ParamItem { - - ParamItem setId(String id); - - ParamItem setName(String name); - - ParamItem setCurrent(boolean isCurrent); - - boolean isCurrent(); -} diff --git a/api/src/main/java/io/github/wulkanowy/api/generic/School.kt b/api/src/main/java/io/github/wulkanowy/api/generic/School.kt deleted file mode 100644 index c14fc5d26..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/generic/School.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.github.wulkanowy.api.generic - -data class School( - val name: String, - val id: String, - val current: Boolean -) diff --git a/api/src/main/java/io/github/wulkanowy/api/generic/Semester.java b/api/src/main/java/io/github/wulkanowy/api/generic/Semester.java deleted file mode 100644 index db4a724dd..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/generic/Semester.java +++ /dev/null @@ -1,37 +0,0 @@ -package io.github.wulkanowy.api.generic; - -public class Semester implements ParamItem { - - private String id = ""; - - private String name = ""; - - private boolean current = false; - - public String getId() { - return id; - } - - public Semester setId(String id) { - this.id = id; - return this; - } - - public String getName() { - return name; - } - - public Semester setName(String number) { - this.name = number; - return this; - } - - public boolean isCurrent() { - return current; - } - - public Semester setCurrent(boolean current) { - this.current = current; - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/generic/Student.java b/api/src/main/java/io/github/wulkanowy/api/generic/Student.java deleted file mode 100644 index 4ed5dd373..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/generic/Student.java +++ /dev/null @@ -1,37 +0,0 @@ -package io.github.wulkanowy.api.generic; - -public class Student implements ParamItem { - - private String id = ""; - - private String name = ""; - - private boolean current = false; - - public String getId() { - return id; - } - - public Student setId(String id) { - this.id = id; - return this; - } - - public String getName() { - return name; - } - - public Student setName(String name) { - this.name = name; - return this; - } - - public boolean isCurrent() { - return current; - } - - public Student setCurrent(boolean current) { - this.current = current; - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/generic/Subject.java b/api/src/main/java/io/github/wulkanowy/api/generic/Subject.java deleted file mode 100644 index fcf27bef3..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/generic/Subject.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.github.wulkanowy.api.generic; - -public class Subject { - - private int id = -1; - - private String name = ""; - - public int getId() { - return id; - } - - public Subject setId(int id) { - this.id = id; - return this; - } - - public String getName() { - return name; - } - - public Subject setName(String name) { - this.name = name; - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/generic/Week.java b/api/src/main/java/io/github/wulkanowy/api/generic/Week.java deleted file mode 100644 index 0a9fd8c85..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/generic/Week.java +++ /dev/null @@ -1,34 +0,0 @@ -package io.github.wulkanowy.api.generic; - -import java.util.ArrayList; -import java.util.List; - -@Deprecated -public class Week { - - private List days = new ArrayList<>(); - - private String startDayDate = ""; - - public T getDay(int index) { - return days.get(index); - } - - public List getDays() { - return days; - } - - public Week setDays(List days) { - this.days = days; - return this; - } - - public String getStartDayDate() { - return startDayDate; - } - - public Week setStartDayDate(String startDayDate) { - this.startDayDate = startDayDate; - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/grades/Grade.java b/api/src/main/java/io/github/wulkanowy/api/grades/Grade.java deleted file mode 100644 index a19207dcc..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/grades/Grade.java +++ /dev/null @@ -1,101 +0,0 @@ -package io.github.wulkanowy.api.grades; - -@Deprecated -public class Grade { - - protected String value = ""; - - private String subject = ""; - - private String color = ""; - - private String symbol = ""; - - private String description = ""; - - private String weight = ""; - - private String date = ""; - - private String teacher = ""; - - public String getSubject() { - return subject; - } - - public Grade setSubject(String subject) { - this.subject = subject; - - return this; - } - - public String getValue() { - return value; - } - - public Grade setValue(String value) { - this.value = value; - - return this; - } - - public String getColor() { - return color; - } - - public Grade setColor(String color) { - this.color = color; - - return this; - } - - public String getSymbol() { - return symbol; - } - - public Grade setSymbol(String symbol) { - this.symbol = symbol; - - return this; - } - - public String getDescription() { - return description; - } - - public Grade setDescription(String description) { - this.description = description; - - return this; - } - - public String getWeight() { - return weight; - } - - public Grade setWeight(String weight) { - this.weight = weight; - - return this; - } - - public String getDate() { - return date; - } - - public Grade setDate(String date) { - this.date = date; - - return this; - } - - public String getTeacher() { - return teacher; - } - - public Grade setTeacher(String teacher) { - this.teacher = teacher; - - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/grades/GradeKt.kt b/api/src/main/java/io/github/wulkanowy/api/grades/GradeKt.kt deleted file mode 100644 index 29a4385f6..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/grades/GradeKt.kt +++ /dev/null @@ -1,20 +0,0 @@ -package io.github.wulkanowy.api.grades - -data class GradeKt( - - val subject: String, - - val value: String, - - val color: String, - - val symbol: String, - - val description: String, - - val weight: String, - - val date: String, - - val teacher: String -) diff --git a/api/src/main/java/io/github/wulkanowy/api/grades/Grades.kt b/api/src/main/java/io/github/wulkanowy/api/grades/Grades.kt deleted file mode 100644 index 7595148d9..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/grades/Grades.kt +++ /dev/null @@ -1,45 +0,0 @@ -package io.github.wulkanowy.api.grades - -import io.github.wulkanowy.api.SnP -import io.github.wulkanowy.api.getFormattedDate -import org.jsoup.nodes.Element -import java.util.regex.Pattern - -class Grades(private val snp: SnP) { - - private val colorPattern by lazy { Pattern.compile("#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})") } - - fun getGrades() = getGrades("") - - fun getGrades(semester: String): List { - return snp.getSnPPageDocument("Oceny/Wszystkie?details=2&okres=$semester") - .select(".ocenySzczegoly-table > tbody > tr").map { getGrade(it) }.filter { - it.value != "Brak ocen" - } - } - - private fun getGrade(e: Element): GradeKt { - val tds = e.select("td") - val symbol = tds[2].text().split(", ").first() - - return GradeKt( - subject = tds[0].text(), - value = tds[1].text(), - color = getColor(tds[1].select(".ocenaCzastkowa").attr("style")), - symbol = symbol, - description = tds[2].text().replaceFirst(symbol, "").replaceFirst(", ", ""), - weight = tds[3].text(), - date = getFormattedDate(tds[4].text()), - teacher = tds[5].text() - ) - } - - private fun getColor(styleAttr: String): String { - val matcher = colorPattern.matcher(styleAttr) - while (matcher.find()) { - return matcher.group(1) - } - - return "" - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/grades/GradesList.java b/api/src/main/java/io/github/wulkanowy/api/grades/GradesList.java deleted file mode 100644 index c79e5a97b..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/grades/GradesList.java +++ /dev/null @@ -1,76 +0,0 @@ -package io.github.wulkanowy.api.grades; - -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import io.github.wulkanowy.api.SnP; -import io.github.wulkanowy.api.VulcanException; - -import static io.github.wulkanowy.api.DateTimeUtilsKt.getFormattedDate; - -@Deprecated -public class GradesList { - - private static final String GRADES_PAGE_URL = "Oceny/Wszystkie?details=2&okres="; - - private SnP snp; - - public GradesList(SnP snp) { - this.snp = snp; - } - - public List getAll(String semester) throws IOException, VulcanException { - Document gradesPage = snp.getSnPPageDocument(GRADES_PAGE_URL + semester); - Elements gradesRows = gradesPage.select(".ocenySzczegoly-table > tbody > tr"); - - List grades = new ArrayList<>(); - - for (Element row : gradesRows) { - if ("Brak ocen".equals(row.select("td:nth-child(2)").text())) { - continue; - } - - grades.add(getGrade(row)); - } - - return grades; - } - - private Grade getGrade(Element row) { - String descriptions = row.select("td:nth-child(3)").text(); - - String symbol = descriptions.split(", ")[0]; - String description = descriptions.replaceFirst(Pattern.quote(symbol), "").replaceFirst(", ", ""); - String color = getColor(row.select("td:nth-child(2) span.ocenaCzastkowa").attr("style")); - String date = getFormattedDate(row.select("td:nth-child(5)").text()); - - return new Grade() - .setSubject(row.select("td:nth-child(1)").text()) - .setValue(row.select("td:nth-child(2)").text()) - .setColor(color) - .setSymbol(symbol) - .setDescription(description) - .setWeight(row.select("td:nth-child(4)").text()) - .setDate(date) - .setTeacher(row.select("td:nth-child(6)").text()); - } - - private String getColor(String styleAttr) { - Pattern pattern = Pattern.compile("#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})"); - Matcher matcher = pattern.matcher(styleAttr); - - String color = ""; - while (matcher.find()) { - color = matcher.group(1); - } - - return color; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/grades/GradesSummary.kt b/api/src/main/java/io/github/wulkanowy/api/grades/GradesSummary.kt deleted file mode 100644 index 4ab3451f6..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/grades/GradesSummary.kt +++ /dev/null @@ -1,22 +0,0 @@ -package io.github.wulkanowy.api.grades - -import io.github.wulkanowy.api.SnP - -class GradesSummary(private val snp: SnP) { - - fun getSummary() = getSummary("") - - fun getSummary(semester: String): List { - val subjects = snp.getSnPPageDocument("Oceny/Wszystkie?details=2&okres=$semester") - .select(".ocenyZwykle-table > tbody > tr") - - return subjects.map { - val tds = it.select("td") - Summary( - name = tds[0].text(), - predicted = tds[tds.size - 2].text(), - final = tds[tds.size - 1].text() - ) - } - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/grades/Subject.java b/api/src/main/java/io/github/wulkanowy/api/grades/Subject.java deleted file mode 100644 index 03036ab46..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/grades/Subject.java +++ /dev/null @@ -1,41 +0,0 @@ -package io.github.wulkanowy.api.grades; - -@Deprecated -public class Subject { - - private String name; - - private String predictedRating; - - private String finalRating; - - public String getName() { - return name; - } - - public Subject setName(String name) { - this.name = name; - - return this; - } - - public String getPredictedRating() { - return predictedRating; - } - - public Subject setPredictedRating(String predictedRating) { - this.predictedRating = predictedRating; - - return this; - } - - public String getFinalRating() { - return finalRating; - } - - public Subject setFinalRating(String finalRating) { - this.finalRating = finalRating; - - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/grades/SubjectsList.java b/api/src/main/java/io/github/wulkanowy/api/grades/SubjectsList.java deleted file mode 100644 index e87e781e0..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/grades/SubjectsList.java +++ /dev/null @@ -1,47 +0,0 @@ -package io.github.wulkanowy.api.grades; - -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import io.github.wulkanowy.api.SnP; -import io.github.wulkanowy.api.VulcanException; - -@Deprecated -public class SubjectsList { - - private static final String SUBJECTS_PAGE_URL = "Oceny/Wszystkie?details=1&okres="; - - private SnP snp; - - public SubjectsList(SnP snp) { - this.snp = snp; - } - - - public List getAll() throws IOException, VulcanException { - return getAll(""); - } - - public List getAll(String semester) throws IOException, VulcanException { - Document subjectPage = snp.getSnPPageDocument(SUBJECTS_PAGE_URL + semester); - - Elements rows = subjectPage.select(".ocenyZwykle-table > tbody > tr"); - - List subjects = new ArrayList<>(); - - for (Element subjectRow : rows) { - subjects.add(new Subject() - .setName(subjectRow.select("td:nth-child(1)").text()) - .setPredictedRating(subjectRow.select("td:nth-last-child(2)").text()) - .setFinalRating(subjectRow.select("td:nth-last-child(1)").text()) - ); - } - - return subjects; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/grades/Summary.kt b/api/src/main/java/io/github/wulkanowy/api/grades/Summary.kt deleted file mode 100644 index 3cf12e7b1..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/grades/Summary.kt +++ /dev/null @@ -1,10 +0,0 @@ -package io.github.wulkanowy.api.grades - -data class Summary( - - val name: String, - - val predicted: String, - - val final: String -) diff --git a/api/src/main/java/io/github/wulkanowy/api/homework/Homework.kt b/api/src/main/java/io/github/wulkanowy/api/homework/Homework.kt deleted file mode 100644 index 6c1cdac46..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/homework/Homework.kt +++ /dev/null @@ -1,16 +0,0 @@ -package io.github.wulkanowy.api.homework - -data class Homework( - - val date: String, - - val subject: String, - - val content: String, - - val teacher: String, - - val teacherSymbol: String, - - val entryDate: String -) diff --git a/api/src/main/java/io/github/wulkanowy/api/homework/HomeworkList.kt b/api/src/main/java/io/github/wulkanowy/api/homework/HomeworkList.kt deleted file mode 100644 index 1a6ea3987..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/homework/HomeworkList.kt +++ /dev/null @@ -1,28 +0,0 @@ -package io.github.wulkanowy.api.homework - -import io.github.wulkanowy.api.SnP -import io.github.wulkanowy.api.getDateAsTick -import io.github.wulkanowy.api.getFormattedDate -import org.jsoup.nodes.Element - -class HomeworkList(private val snp: SnP) { - - fun getHomework(date: String = ""): List { - return snp.getSnPPageDocument("ZadaniaDomowe.mvc?data=${getDateAsTick(date)}&rodzajWidoku=Dzien") - .select(".mainContainer article").map { - getItem(it, date) - } - } - - private fun getItem(e: Element, date: String): Homework { - val teacherAndDate = snp.getRowDataChildValue(e, 3).split(", ") - return Homework( - date = date, - subject = snp.getRowDataChildValue(e, 1), - teacher = teacherAndDate.first().split(" [").first(), - teacherSymbol = teacherAndDate.first().split(" [").last().replace("]", ""), - content = snp.getRowDataChildValue(e, 2), - entryDate = getFormattedDate(teacherAndDate.last()) - ) - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/login/AccountPermissionException.java b/api/src/main/java/io/github/wulkanowy/api/login/AccountPermissionException.java deleted file mode 100644 index de3901ff9..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/login/AccountPermissionException.java +++ /dev/null @@ -1,10 +0,0 @@ -package io.github.wulkanowy.api.login; - -import io.github.wulkanowy.api.VulcanException; - -public class AccountPermissionException extends VulcanException { - - AccountPermissionException(String message) { - super(message); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/login/BadCredentialsException.java b/api/src/main/java/io/github/wulkanowy/api/login/BadCredentialsException.java deleted file mode 100644 index 13efd4a13..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/login/BadCredentialsException.java +++ /dev/null @@ -1,10 +0,0 @@ -package io.github.wulkanowy.api.login; - -import io.github.wulkanowy.api.VulcanException; - -public class BadCredentialsException extends VulcanException { - - BadCredentialsException(String message) { - super(message); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/login/Login.java b/api/src/main/java/io/github/wulkanowy/api/login/Login.java deleted file mode 100644 index 722a182df..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/login/Login.java +++ /dev/null @@ -1,162 +0,0 @@ -package io.github.wulkanowy.api.login; - -import org.apache.commons.lang3.StringUtils; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.parser.Parser; -import org.jsoup.select.Elements; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import io.github.wulkanowy.api.Client; -import io.github.wulkanowy.api.NotLoggedInErrorException; -import io.github.wulkanowy.api.VulcanException; - -public class Login { - - protected static final String LOGIN_PAGE_URL = "{schema}://cufs.{host}/{symbol}/Account/LogOn"; - - private static final String LOGIN_PAGE_URL_QUERY = "?ReturnUrl=%2F{symbol}%2FFS%2FLS%3Fwa%3Dwsignin1.0%26wtrealm%3D" + - "{schema}%253a%252f%252fuonetplus.{host}%252f{symbol}%252fLoginEndpoint.aspx%26wctx%3D" + - "{schema}%253a%252f%252fuonetplus.{host}%252f{symbol}%252fLoginEndpoint.aspx"; - - private Client client; - - private static final Logger logger = LoggerFactory.getLogger(Login.class); - - public Login(Client client) { - this.client = client; - } - - public void login(String email, String password, String symbol) throws VulcanException, IOException { - Document certDoc = sendCredentials(email, password); - - if ("Błąd".equals(certDoc.title())) { - client.clearCookies(); - throw new NotLoggedInErrorException(certDoc.body().text()); - } - - sendCertificate(certDoc, symbol); - } - - Document sendCredentials(String email, String password) throws IOException, VulcanException { - String[][] credentials = new String[][]{ - {"LoginName", email}, - {"Password", password} - }; - - Document nextDoc = sendCredentialsData(credentials, LOGIN_PAGE_URL + LOGIN_PAGE_URL_QUERY.replace(":", "%253A")); - - Element errorMessage = nextDoc.selectFirst(".ErrorMessage, #ErrorTextLabel"); - if (null != errorMessage) { - throw new BadCredentialsException(errorMessage.text()); - } - - return nextDoc; - } - - private Document sendCredentialsData(String[][] credentials, String nextUrl) throws IOException, VulcanException { - Element formFirst = client.getPageByUrl(nextUrl, false).selectFirst("#form1"); - - if (null != formFirst) { // only on adfs login - Document formSecond = client.postPageByUrl( - formFirst.attr("abs:action"), - getFormStateParams(formFirst, "", "") - ); - credentials = getFormStateParams(formSecond, credentials[0][1], credentials[1][1]); - nextUrl = formSecond.selectFirst("#form1").attr("abs:action"); - } - - return client.postPageByUrl(nextUrl, credentials); - } - - private String[][] getFormStateParams(Element form, String email, String password) { - return new String[][]{ - {"__VIEWSTATE", form.select("#__VIEWSTATE").val()}, - {"__VIEWSTATEGENERATOR", form.select("#__VIEWSTATEGENERATOR").val()}, - {"__EVENTVALIDATION", form.select("#__EVENTVALIDATION").val()}, - {"__db", form.select("input[name=__db]").val()}, - {"PassiveSignInButton.x", "0"}, - {"PassiveSignInButton.y", "0"}, - {"SubmitButton.x", "0"}, - {"SubmitButton.y", "0"}, - {"UsernameTextBox", email}, - {"PasswordTextBox", password}, - }; - } - - void sendCertificate(Document doc, String defaultSymbol) throws IOException, VulcanException { - client.setSymbol(findSymbol(defaultSymbol, doc.select("input[name=wresult]").val())); - - Document targetDoc = sendCertData(doc); - String title = targetDoc.title(); - - if ("Working...".equals(title)) { // on adfs login - logger.info("ADFS login"); - title = sendCertData(targetDoc).title(); - } - - if ("Logowanie".equals(title)) { - throw new AccountPermissionException("No account access. Try another symbol"); - } - - if (!"Uonet+".equals(title)) { - logger.debug("Login failed. Body: {}", targetDoc.body()); - throw new LoginErrorException("Expected page title `UONET+`, got " + title); - } - - client.setSchools(new StartPage(client).getSchools(targetDoc)); - } - - private Document sendCertData(Document doc) throws IOException, VulcanException { - String url = doc.select("form[name=hiddenform]").attr("action"); - - return client.postPageByUrl(url.replaceFirst("Default", "{symbol}"), new String[][]{ - {"wa", "wsignin1.0"}, - {"wresult", doc.select("input[name=wresult]").val()}, - {"wctx", doc.select("input[name=wctx]").val()} - }); - } - - private String findSymbol(String symbol, String certificate) throws AccountPermissionException { - List symbols = getSymbolsFromCertificate(certificate); - client.setSymbols(symbols); - - if ("Default".equals(symbol)) { - return getLastSymbol(symbols); - } - - return symbol; - } - - List getSymbolsFromCertificate(String certificate) { - Elements instances = Jsoup - .parse(certificate.replaceAll(":", ""), "", Parser.xmlParser()) - .select("[AttributeName=\"UserInstance\"] samlAttributeValue"); - - List symbols = new ArrayList<>(); - - for (Element e : instances) { - symbols.add(e.text()); - } - - return symbols; - } - - String getLastSymbol(List symbols) throws AccountPermissionException { - if (symbols.isEmpty()) { // on adfs login - return ""; - } - - if (symbols.size() < 2) { // 1st index is always `Default` - throw new AccountPermissionException("First login detected, specify symbol"); - } - - return StringUtils.stripAccents(symbols.get(1).replaceAll("\\s", "")); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/login/LoginErrorException.java b/api/src/main/java/io/github/wulkanowy/api/login/LoginErrorException.java deleted file mode 100644 index be7439df0..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/login/LoginErrorException.java +++ /dev/null @@ -1,10 +0,0 @@ -package io.github.wulkanowy.api.login; - -import io.github.wulkanowy.api.NotLoggedInErrorException; - -class LoginErrorException extends NotLoggedInErrorException { - - LoginErrorException(String message) { - super(message); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/login/StartPage.kt b/api/src/main/java/io/github/wulkanowy/api/login/StartPage.kt deleted file mode 100644 index 6f6b14902..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/login/StartPage.kt +++ /dev/null @@ -1,45 +0,0 @@ -package io.github.wulkanowy.api.login - -import io.github.wulkanowy.api.Client -import io.github.wulkanowy.api.VulcanException -import io.github.wulkanowy.api.generic.School -import org.jsoup.nodes.Document -import org.slf4j.LoggerFactory - -class StartPage(val client: Client) { - - private val logger = LoggerFactory.getLogger(StartPage::class.java) - - fun getSchools(startPage: Document): MutableList { - val schoolList = mutableListOf() - - val snpLinks = startPage.select(".panel.linkownia.pracownik.klient a") - - logger.debug("SnP links: {}", snpLinks.size) - - if (snpLinks.isEmpty()) { - throw VulcanException("Na pewno używasz konta z dostępem do Witryny ucznia i rodzica?") - } - - snpLinks.map { - schoolList.add(School( - it.text(), - getExtractedIdFromUrl(it.attr("href")), - it == snpLinks.first() - )) - } - - return schoolList - } - - internal fun getExtractedIdFromUrl(snpPageUrl: String): String { - val path = snpPageUrl.split(client.host).getOrNull(1)?.split("/") - - if (6 != path?.size) { - logger.error("Expected snp url, got {}", snpPageUrl) - throw VulcanException("Na pewno używasz konta z dostępem do Witryny ucznia i rodzica?") - } - - return path[2] - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/messages/BadRequestException.java b/api/src/main/java/io/github/wulkanowy/api/messages/BadRequestException.java deleted file mode 100644 index 14dca67b7..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/messages/BadRequestException.java +++ /dev/null @@ -1,10 +0,0 @@ -package io.github.wulkanowy.api.messages; - -import io.github.wulkanowy.api.VulcanException; - -class BadRequestException extends VulcanException { - - BadRequestException(String message) { - super(message); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/messages/Message.java b/api/src/main/java/io/github/wulkanowy/api/messages/Message.java deleted file mode 100644 index 331ec8196..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/messages/Message.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.github.wulkanowy.api.messages; - -import com.google.gson.annotations.SerializedName; - -public class Message { - - @SerializedName("Nieprzeczytana") - public boolean unread; - - @SerializedName("Data") - public String date; - - @SerializedName("Tresc") - public String content; - - @SerializedName("Temat") - public String subject; - - @SerializedName("NadawcaNazwa") - public String sender; - - @SerializedName("IdWiadomosci") - public int messageID; - - @SerializedName("IdNadawca") - public int senderID; - - @SerializedName("Id") - public int id; -} diff --git a/api/src/main/java/io/github/wulkanowy/api/messages/Messages.java b/api/src/main/java/io/github/wulkanowy/api/messages/Messages.java deleted file mode 100644 index ec2a3fba4..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/messages/Messages.java +++ /dev/null @@ -1,99 +0,0 @@ -package io.github.wulkanowy.api.messages; - -import com.google.gson.Gson; -import com.google.gson.JsonParseException; - -import java.io.IOException; -import java.util.List; - -import io.github.wulkanowy.api.Client; -import io.github.wulkanowy.api.NotLoggedInErrorException; -import io.github.wulkanowy.api.VulcanException; - -public class Messages { - - private static final String BASE_URL = "{schema}://uonetplus-uzytkownik.{host}/{symbol}/"; - - private static final String LIST_BASE_URL = BASE_URL + "Wiadomosc.mvc/"; - - private static final String RECEIVED_URL = LIST_BASE_URL + "GetWiadomosciOdebrane"; - - private static final String SENT_URL = LIST_BASE_URL + "GetWiadomosciWyslane"; - - private static final String DELETED_URL = LIST_BASE_URL + "GetWiadomosciUsuniete"; - - private static final String MESSAGE_URL = LIST_BASE_URL + "GetTrescWiadomosci"; - - public static final int RECEIVED_FOLDER = 1; - - public static final int SENT_FOLDER = 2; - - public static final int DELETED_FOLDER = 3; - - private static final String ERROR_TITLE = "Błąd strony"; - - private Client client; - - public Messages(Client client) { - this.client = client; - } - - public List getReceived() throws IOException, VulcanException { - return getMessages(RECEIVED_URL); - } - - public List getSent() throws IOException, VulcanException { - return getMessages(SENT_URL); - } - - public List getDeleted() throws IOException, VulcanException { - return getMessages(DELETED_URL); - } - - private List getMessages(String url) throws IOException, VulcanException { - String res = client.getJsonStringByUrl(url); - - List messages; - - try { - messages = new Gson().fromJson(res, MessagesContainer.class).data; - } catch (JsonParseException e) { - if (res.contains(ERROR_TITLE)) { - throw new BadRequestException(ERROR_TITLE); - } - - throw new NotLoggedInErrorException("You are probably not logged in"); - } - - return messages; - } - - public Message getMessage(int id, int folder) throws IOException, VulcanException { - String res = client.postJsonStringByUrl(MESSAGE_URL, new String[][]{ - {"idWiadomosc", String.valueOf(id)}, - {"Folder", String.valueOf(folder)} - }); - - Message message; - - try { - message = new Gson().fromJson(res, MessageContainer.class).data; - } catch (JsonParseException e) { - if (res.contains(ERROR_TITLE)) { - throw new BadRequestException(ERROR_TITLE); - } - - throw new NotLoggedInErrorException("You are probably not logged in. Force login"); - } - - return message; - } - - private static class MessagesContainer { - private List data; - } - - private static class MessageContainer { - private Message data; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/mobile/RegisterDevice.kt b/api/src/main/java/io/github/wulkanowy/api/mobile/RegisterDevice.kt deleted file mode 100644 index f0da01e9d..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/mobile/RegisterDevice.kt +++ /dev/null @@ -1,33 +0,0 @@ -package io.github.wulkanowy.api.mobile - -import io.github.wulkanowy.api.SnP -import org.jsoup.nodes.Element - -class RegisterDevice(private val snp: SnP) { - - companion object { - const val REGISTER_URL = "DostepMobilny.mvc/Rejestruj" - } - - data class Token( - val token: String, - val symbol: String, - val pin: String - ) - - fun getToken(): Token { - val form = snp.getSnPPageDocument(REGISTER_URL).selectFirst("#rejestracja-formularz") - - val fields = form.select(".blockElement") - - return Token( - getValue(fields[1]), - getValue(fields[2]), - getValue(fields[3]) - ) - } - - fun getValue(e: Element): String { - return e.text().split(":")[1].trim() - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/mobile/RegisteredDevices.kt b/api/src/main/java/io/github/wulkanowy/api/mobile/RegisteredDevices.kt deleted file mode 100644 index d622b4de3..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/mobile/RegisteredDevices.kt +++ /dev/null @@ -1,38 +0,0 @@ -package io.github.wulkanowy.api.mobile - -import io.github.wulkanowy.api.SnP -import io.github.wulkanowy.api.getFormattedDate - -class RegisteredDevices(private val snp: SnP) { - - companion object { - const val DEVICES_LIST_URL = "DostepMobilny.mvc" - } - - data class Device( - val name: String, - val system: String, - val date: String, - val id: Int - ) - - fun getList(): List { - val items = snp.getSnPPageDocument(DEVICES_LIST_URL).select("table tbody tr") - val devices: MutableList = mutableListOf() - - for (item in items) { - val cells = item.select("td") - val system = cells[0].text().split("(").last().removeSuffix(")") - - devices.add(Device( - cells[0].text().replace(" ($system)", ""), - system, - getFormattedDate(cells[1].text(), "dd.MM.yyyy 'godz:' HH:mm:ss", "yyyy-MM-dd HH:mm:ss"), - cells[2].select("a").attr("href") - .split("/").last().toInt() - )) - } - - return devices - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/notes/AchievementsList.java b/api/src/main/java/io/github/wulkanowy/api/notes/AchievementsList.java deleted file mode 100644 index 346df832e..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/notes/AchievementsList.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.github.wulkanowy.api.notes; - -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import io.github.wulkanowy.api.SnP; -import io.github.wulkanowy.api.VulcanException; - -public class AchievementsList { - - private static final String NOTES_PAGE_URL = "UwagiOsiagniecia.mvc/Wszystkie"; - - private SnP snp; - - public AchievementsList(SnP snp) { - this.snp = snp; - } - - public List getAllAchievements() throws IOException, VulcanException { - Element pageFragment = snp.getSnPPageDocument(NOTES_PAGE_URL) - .select(".mainContainer > div").get(1); - Elements items = pageFragment.select("article"); - - List achievements = new ArrayList<>(); - - for (Element item : items) { - achievements.add(item.text()); - } - - return achievements; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/notes/Note.java b/api/src/main/java/io/github/wulkanowy/api/notes/Note.java deleted file mode 100644 index b1fa68b93..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/notes/Note.java +++ /dev/null @@ -1,48 +0,0 @@ -package io.github.wulkanowy.api.notes; - -public class Note { - - private String date; - - private String teacher; - - private String category; - - private String content; - - public String getDate() { - return date; - } - - public Note setDate(String date) { - this.date = date; - return this; - } - - public String getTeacher() { - return teacher; - } - - public Note setTeacher(String teacher) { - this.teacher = teacher; - return this; - } - - public String getCategory() { - return category; - } - - public Note setCategory(String category) { - this.category = category; - return this; - } - - public String getContent() { - return content; - } - - public Note setContent(String content) { - this.content = content; - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/notes/NotesList.java b/api/src/main/java/io/github/wulkanowy/api/notes/NotesList.java deleted file mode 100644 index 54f57edf4..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/notes/NotesList.java +++ /dev/null @@ -1,45 +0,0 @@ -package io.github.wulkanowy.api.notes; - -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import io.github.wulkanowy.api.SnP; -import io.github.wulkanowy.api.VulcanException; - -import static io.github.wulkanowy.api.DateTimeUtilsKt.getFormattedDate; - -public class NotesList { - - private static final String NOTES_PAGE_URL = "UwagiOsiagniecia.mvc/Wszystkie"; - - private SnP snp; - - public NotesList(SnP snp) { - this.snp = snp; - } - - public List getAllNotes() throws IOException, VulcanException { - Element pageFragment = snp.getSnPPageDocument(NOTES_PAGE_URL) - .select(".mainContainer > div").get(0); - Elements items = pageFragment.select("article"); - Elements dates = pageFragment.select("h2"); - - List notes = new ArrayList<>(); - - int index = 0; - for (Element item : items) { - notes.add(new Note() - .setDate(getFormattedDate(dates.get(index++).text())) - .setTeacher(snp.getRowDataChildValue(item, 1)) - .setCategory(snp.getRowDataChildValue(item, 2)) - .setContent(snp.getRowDataChildValue(item, 3)) - ); - } - - return notes; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/school/SchoolData.java b/api/src/main/java/io/github/wulkanowy/api/school/SchoolData.java deleted file mode 100644 index f135163a2..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/school/SchoolData.java +++ /dev/null @@ -1,59 +0,0 @@ -package io.github.wulkanowy.api.school; - -public class SchoolData { - - private String name = ""; - - private String address = ""; - - private String phoneNumber = ""; - - private String headmaster = ""; - - private String[] pedagogue; - - public String getName() { - return name; - } - - public SchoolData setName(String name) { - this.name = name; - return this; - } - - public String getAddress() { - return address; - } - - public SchoolData setAddress(String address) { - this.address = address; - return this; - } - - public String getPhoneNumber() { - return phoneNumber; - } - - public SchoolData setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - return this; - } - - public String getHeadmaster() { - return headmaster; - } - - public SchoolData setHeadmaster(String headmaster) { - this.headmaster = headmaster; - return this; - } - - public String[] getPedagogues() { - return pedagogue; - } - - public SchoolData setPedagogue(String[] pedagogue) { - this.pedagogue = pedagogue; - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/school/SchoolInfo.java b/api/src/main/java/io/github/wulkanowy/api/school/SchoolInfo.java deleted file mode 100644 index f0dcd43de..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/school/SchoolInfo.java +++ /dev/null @@ -1,31 +0,0 @@ -package io.github.wulkanowy.api.school; - -import org.jsoup.nodes.Element; - -import java.io.IOException; - -import io.github.wulkanowy.api.SnP; -import io.github.wulkanowy.api.VulcanException; - -public class SchoolInfo { - - private static final String SCHOOL_PAGE_URL = "Szkola.mvc/Nauczyciele"; - - private SnP snp; - - public SchoolInfo(SnP snp) { - this.snp = snp; - } - - public SchoolData getSchoolData() throws IOException, VulcanException { - Element e = snp.getSnPPageDocument(SCHOOL_PAGE_URL) - .select(".mainContainer > article").get(0); - - return new SchoolData() - .setName(snp.getRowDataChildValue(e, 1)) - .setAddress(snp.getRowDataChildValue(e, 2)) - .setPhoneNumber(snp.getRowDataChildValue(e, 3)) - .setHeadmaster(snp.getRowDataChildValue(e, 4)) - .setPedagogue(snp.getRowDataChildValue(e, 5).split(", ")); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/school/Subject.java b/api/src/main/java/io/github/wulkanowy/api/school/Subject.java deleted file mode 100644 index 0a3c0957d..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/school/Subject.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.github.wulkanowy.api.school; - -public class Subject { - - private String name = ""; - - private String[] teachers; - - public String getName() { - return name; - } - - public Subject setName(String name) { - this.name = name; - return this; - } - - public String[] getTeachers() { - return teachers; - } - - public Subject setTeachers(String[] teachers) { - this.teachers = teachers; - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/school/TeachersData.java b/api/src/main/java/io/github/wulkanowy/api/school/TeachersData.java deleted file mode 100644 index 7d41162e5..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/school/TeachersData.java +++ /dev/null @@ -1,39 +0,0 @@ -package io.github.wulkanowy.api.school; - -import java.util.List; - -public class TeachersData { - - private String className = ""; - - private String[] classTeacher; - - private List subjects; - - public String getClassName() { - return className; - } - - public TeachersData setClassName(String className) { - this.className = className; - return this; - } - - public String[] getClassTeacher() { - return classTeacher; - } - - public TeachersData setClassTeacher(String[] classTeacher) { - this.classTeacher = classTeacher; - return this; - } - - public List getSubjects() { - return subjects; - } - - public TeachersData setSubjects(List subjects) { - this.subjects = subjects; - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/school/TeachersInfo.java b/api/src/main/java/io/github/wulkanowy/api/school/TeachersInfo.java deleted file mode 100644 index ec8429bd9..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/school/TeachersInfo.java +++ /dev/null @@ -1,43 +0,0 @@ -package io.github.wulkanowy.api.school; - -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import io.github.wulkanowy.api.SnP; -import io.github.wulkanowy.api.VulcanException; - -public class TeachersInfo { - - private static final String SCHOOL_PAGE_URL = "Szkola.mvc/Nauczyciele"; - - private SnP snp; - - public TeachersInfo(SnP snp) { - this.snp = snp; - } - - public TeachersData getTeachersData() throws IOException, VulcanException { - Document doc = snp.getSnPPageDocument(SCHOOL_PAGE_URL); - Elements rows = doc.select(".mainContainer > table tbody tr"); - String description = doc.select(".mainContainer > p").first().text(); - - List subjects = new ArrayList<>(); - - for (Element subject : rows) { - subjects.add(new Subject() - .setName(subject.select("td").get(1).text()) - .setTeachers(subject.select("td").get(2).text().split(", ")) - ); - } - - return new TeachersData() - .setClassName(description.split(", ")[0].split(": ")[1].trim()) - .setClassTeacher(description.split("Wychowawcy:")[1].trim().split(", ")) - .setSubjects(subjects); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/timetable/LessonTypes.java b/api/src/main/java/io/github/wulkanowy/api/timetable/LessonTypes.java deleted file mode 100644 index e98ef2b21..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/timetable/LessonTypes.java +++ /dev/null @@ -1,17 +0,0 @@ -package io.github.wulkanowy.api.timetable; - -@Deprecated -class LessonTypes { - - static final String CLASS_PLANNING = "x-treelabel-ppl"; - - static final String CLASS_REALIZED = "x-treelabel-rlz"; - - static final String CLASS_MOVED_OR_CANCELED = "x-treelabel-inv"; - - static final String CLASS_NEW_MOVED_IN_OR_CHANGED = "x-treelabel-zas"; - - private LessonTypes() { - throw new IllegalStateException("Utility class"); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/timetable/Timetable.java b/api/src/main/java/io/github/wulkanowy/api/timetable/Timetable.java deleted file mode 100644 index d0c9109e8..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/timetable/Timetable.java +++ /dev/null @@ -1,244 +0,0 @@ -package io.github.wulkanowy.api.timetable; - -import org.apache.commons.lang3.StringUtils; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import io.github.wulkanowy.api.SnP; -import io.github.wulkanowy.api.VulcanException; -import io.github.wulkanowy.api.generic.Lesson; -import io.github.wulkanowy.api.generic.Week; - -import static io.github.wulkanowy.api.DateTimeUtilsKt.getDateAsTick; -import static io.github.wulkanowy.api.DateTimeUtilsKt.getFormattedDate; - -@Deprecated -public class Timetable { - - private static final String TIMETABLE_PAGE_URL = "Lekcja.mvc/PlanZajec?data="; - - private SnP snp; - - private static final Logger logger = LoggerFactory.getLogger(Timetable.class); - - public Timetable(SnP snp) { - this.snp = snp; - } - - public Week getWeekTable() throws IOException, VulcanException { - return getWeekTable(""); - } - - public Week getWeekTable(final String date) throws IOException, VulcanException { - Element table = snp.getSnPPageDocument(TIMETABLE_PAGE_URL + getDateAsTick(date)) - .select(".mainContainer .presentData").first(); - - List days = getDays(table.select("thead th")); - - setLessonToDays(table, days); - - return new Week() - .setStartDayDate(days.get(0).getDate()) - .setDays(days); - } - - private List getDays(Elements tableHeaderCells) { - List days = new ArrayList<>(); - int numberOfDays = tableHeaderCells.size(); - - if (numberOfDays > 7) { - logger.info("Number of days: {}", numberOfDays); - } - - for (int i = 2; i < numberOfDays; i++) { - String[] dayHeaderCell = tableHeaderCells.get(i).html().split("
"); - - TimetableDay day = new TimetableDay(); - day.setDayName(dayHeaderCell[0]); - day.setDate(getFormattedDate(dayHeaderCell[1].trim())); - - if (tableHeaderCells.get(i).hasClass("free-day")) { - day.setFreeDay(true); - day.setFreeDayName(dayHeaderCell[2]); - } - - days.add(day); - } - - return days; - } - - private void setLessonToDays(Element table, List days) { - for (Element row : table.select("tbody tr")) { - Elements hours = row.select("td"); - - // fill hours in day - for (int i = 2; i < hours.size(); i++) { - Lesson lesson = new Lesson(); - - String[] startEndEnd = hours.get(1).text().split(" "); - lesson.setStartTime(startEndEnd[0]); - lesson.setEndTime(startEndEnd[1]); - lesson.setDate(days.get(i - 2).getDate()); - lesson.setNumber(Integer.valueOf(hours.get(0).text())); - - addLessonDetails(lesson, hours.get(i).select("div")); - - days.get(i - 2).setLesson(lesson); - } - } - } - - private void addLessonDetails(Lesson lesson, Elements e) { - moveWarningToLessonNode(e); - - switch (e.size()) { - case 1: - addLessonInfoFromElement(lesson, e.first()); - break; - case 2: - Element span = e.last().selectFirst("span"); - if (null == span) { - addLessonInfoFromElement(lesson, e.first()); - } else if (span.hasClass(LessonTypes.CLASS_MOVED_OR_CANCELED)) { - lesson.setNewMovedInOrChanged(true); - lesson.setDescription("poprzednio: " + getLessonAndGroupInfoFromSpan(span)[0]); - addLessonInfoFromElement(lesson, e.first()); - } else { - addLessonInfoFromElement(lesson, e.last()); - } - break; - case 3: - addLessonInfoFromElement(lesson, e.get(1)); - break; - default: - lesson.setEmpty(true); - break; - } - } - - private void moveWarningToLessonNode(Elements e) { - Elements warn = e.select(".uwaga-panel"); - - if (!warn.isEmpty()) { - e.select("span").last() - .addClass("x-treelabel-rlz") - .text(warn.text()); - e.remove(1); - } - } - - private void addLessonInfoFromElement(Lesson lesson, Element e) { - Elements spans = e.select("span"); - - if (spans.isEmpty()) { - logger.warn("Lesson span is empty"); - return; - } - - addTypeInfo(lesson, spans); - addNormalLessonInfo(lesson, spans); - addChangesInfo(lesson, spans); - addGroupLessonInfo(lesson, spans); - } - - private void addTypeInfo(Lesson lesson, Elements spans) { - if (spans.first().hasClass(LessonTypes.CLASS_PLANNING)) { - lesson.setPlanning(true); - } - - if (spans.first().hasClass(LessonTypes.CLASS_MOVED_OR_CANCELED)) { - lesson.setMovedOrCanceled(true); - } - - if (spans.first().hasClass(LessonTypes.CLASS_NEW_MOVED_IN_OR_CHANGED)) { - lesson.setNewMovedInOrChanged(true); - } - - if (spans.last().hasClass(LessonTypes.CLASS_REALIZED) || "".equals(spans.first().attr("class"))) { - lesson.setRealized(true); - } - } - - private void addNormalLessonInfo(Lesson lesson, Elements spans) { - if (3 == spans.size()) { - lesson.setSubject(spans.get(0).text()); - lesson.setTeacher(spans.get(1).text()); - lesson.setRoom(spans.get(2).text()); - } - } - - private void addChangesInfo(Lesson lesson, Elements spans) { - if (!spans.last().hasClass(LessonTypes.CLASS_REALIZED)) { - return; - } - - if (7 == spans.size()) { - lesson.setSubject(spans.get(3).text()); - lesson.setTeacher(spans.get(4).text()); - lesson.setRoom(spans.get(5).text()); - lesson.setMovedOrCanceled(false); - lesson.setNewMovedInOrChanged(true); - lesson.setDescription(StringUtils.defaultString(StringUtils.substringBetween( - spans.last().text(), "(", ")"), spans.last().text()) - + " (poprzednio: " + spans.get(0).text() + ")"); - } else if (9 == spans.size()) { - String[] subjectAndGroupInfo = getLessonAndGroupInfoFromSpan(spans.get(4)); - lesson.setSubject(subjectAndGroupInfo[0]); - lesson.setGroupName(subjectAndGroupInfo[1]); - lesson.setTeacher(spans.get(6).text()); - lesson.setRoom(spans.get(7).text()); - lesson.setMovedOrCanceled(false); - lesson.setNewMovedInOrChanged(true); - lesson.setDivisionIntoGroups(true); - lesson.setDescription(StringUtils.defaultString(StringUtils.substringBetween( - spans.last().text(), "(", ")"), spans.last().text()) - + " (poprzednio: " + getLessonAndGroupInfoFromSpan(spans.get(0))[0] + ")"); - } else if (4 <= spans.size()) { - lesson.setSubject(spans.get(0).text()); - lesson.setTeacher(spans.get(1).text()); - lesson.setRoom(spans.get(2).text()); - lesson.setDescription(StringUtils.defaultString(StringUtils.substringBetween( - spans.last().text(), "(", ")"), spans.last().text())); - } - } - - private void addGroupLessonInfo(Lesson lesson, Elements spans) { - if (4 == spans.size() && !spans.last().hasClass(LessonTypes.CLASS_REALIZED)) { - lesson.setRoom(spans.last().text()); - } - - if ((4 == spans.size() && !spans.last().hasClass(LessonTypes.CLASS_REALIZED) || 5 == spans.size())) { - String[] subjectAndGroupInfo = getLessonAndGroupInfoFromSpan(spans.get(0)); - lesson.setSubject(subjectAndGroupInfo[0]); - lesson.setGroupName(subjectAndGroupInfo[1]); - lesson.setTeacher(spans.get(2).text()); - lesson.setDivisionIntoGroups(true); - } - - if (5 == spans.size()) { - lesson.setRoom(spans.get(3).text()); - } - } - - private String[] getLessonAndGroupInfoFromSpan(Element span) { - if (!span.text().contains("[")) { - return new String[] {span.text(), ""}; - } - - String[] subjectNameArray = span.text().split(" "); - String groupName = subjectNameArray[subjectNameArray.length - 1]; - - return new String[]{ - span.text().replace(" " + groupName, ""), - StringUtils.defaultString(StringUtils.substringBetween( - groupName, "[", "]"), groupName) - }; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/timetable/TimetableDay.java b/api/src/main/java/io/github/wulkanowy/api/timetable/TimetableDay.java deleted file mode 100644 index 583804763..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/timetable/TimetableDay.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.github.wulkanowy.api.timetable; - -import io.github.wulkanowy.api.generic.Day; - -@Deprecated -public class TimetableDay extends Day { - - private boolean isFreeDay = false; - - private String freeDayName = ""; - - public boolean isFreeDay() { - return isFreeDay; - } - - public void setFreeDay(boolean freeDay) { - isFreeDay = freeDay; - } - - public String getFreeDayName() { - return freeDayName; - } - - public void setFreeDayName(String freeDayName) { - this.freeDayName = freeDayName; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/timetable/TimetableKt.kt b/api/src/main/java/io/github/wulkanowy/api/timetable/TimetableKt.kt deleted file mode 100644 index 04a16fb8d..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/timetable/TimetableKt.kt +++ /dev/null @@ -1,201 +0,0 @@ -package io.github.wulkanowy.api.timetable - -import io.github.wulkanowy.api.SnP -import io.github.wulkanowy.api.getDateAsTick -import io.github.wulkanowy.api.getFormattedDate -import org.apache.commons.lang3.StringUtils -import org.jsoup.nodes.Element -import org.jsoup.select.Elements - -class TimetableKt(private val snp: SnP) { - - fun getTimetable() = getTimetable("") - - fun getTimetable(start: String): List { - val table = snp.getSnPPageDocument("Lekcja.mvc/PlanZajec?data=" + getDateAsTick(start)) - .select(".mainContainer .presentData").first() - - val days = getDays(table.select("thead th")) - - return table.select("tbody tr").map { - val hours = it.select("td") - hours.drop(2).mapIndexed { i, item -> - getLesson(item, days[i], hours[1].text().split(" "), hours[0].text().toInt()) - } - }.flatten().sortedBy { - it.date - }.filter { - it.subject.isNotBlank() - } - } - - private fun getDays(el: Elements): List> { - return el.drop(2).map { - val info = it.html().split("
") - - Pair(getFormattedDate(info[1].trim()), info.getOrElse(2) { "" }.trim()) - } - } - - private fun getLesson(cell: Element, day: Pair, hours: List, number: Int): TimetableLesson { - val lesson = TimetableLesson( - number = number, - date = day.first, - freeDayName = day.second, - startTime = hours[0], - endTime = hours[1] - ) - - addLessonDetails(lesson, cell.select("div")) - - return lesson - } - - private fun addLessonDetails(lesson: TimetableLesson, e: Elements) { - moveWarningToLessonNode(e) - - when (e.size) { - 1 -> addLessonInfoFromElement(lesson, e.first()) - 2 -> { - val span = e.last().selectFirst("span") - when { - null == span -> addLessonInfoFromElement(lesson, e.first()) - span.hasClass(Types.CLASS_MOVED_OR_CANCELED) -> { - lesson.newMovedInOrChanged = true - lesson.description = "poprzednio: " + getLessonAndGroupInfoFromSpan(span)[0] - addLessonInfoFromElement(lesson, e.first()) - } - else -> addLessonInfoFromElement(lesson, e.last()) - } - } - 3 -> addLessonInfoFromElement(lesson, e[1]) - else -> lesson.empty = true - } - } - - private fun moveWarningToLessonNode(e: Elements) { - val warn = e.select(".uwaga-panel") - - if (!warn.isEmpty()) { - e.select("span").last() - .addClass("x-treelabel-rlz") - .text(warn.text()) - e.removeAt(1) - } - } - - private fun addLessonInfoFromElement(lesson: TimetableLesson, e: Element) { - val spans = e.select("span") - - if (spans.isEmpty()) { - return - } - - addTypeInfo(lesson, spans) - addNormalLessonInfo(lesson, spans) - addChangesInfo(lesson, spans) - addGroupLessonInfo(lesson, spans) - } - - private fun addTypeInfo(lesson: TimetableLesson, spans: Elements) { - if (spans.first().hasClass(Types.CLASS_PLANNING)) { - lesson.planning = true - } - - if (spans.first().hasClass(Types.CLASS_MOVED_OR_CANCELED)) { - lesson.movedOrCanceled = true - } - - if (spans.first().hasClass(Types.CLASS_NEW_MOVED_IN_OR_CHANGED)) { - lesson.newMovedInOrChanged = true - } - - if (spans.last().hasClass(Types.CLASS_REALIZED) || "" == spans.first().attr("class")) { - lesson.realized = true - } - } - - private fun addNormalLessonInfo(lesson: TimetableLesson, spans: Elements) { - if (3 == spans.size) { - lesson.subject = spans[0].text() - lesson.teacher = spans[1].text() - lesson.room = spans[2].text() - } - } - - private fun addChangesInfo(lesson: TimetableLesson, spans: Elements) { - if (!spans.last().hasClass(Types.CLASS_REALIZED)) { - return - } - - when { - 7 == spans.size -> { - lesson.subject = spans[3].text() - lesson.teacher = spans[4].text() - lesson.room = spans[5].text() - lesson.movedOrCanceled = false - lesson.newMovedInOrChanged = true - lesson.description = (StringUtils.defaultString(StringUtils.substringBetween( - spans.last().text(), "(", ")"), spans.last().text()) - + " (poprzednio: " + spans[0].text() + ")") - } - 9 == spans.size -> { - val subjectAndGroupInfo = getLessonAndGroupInfoFromSpan(spans[4]) - lesson.subject = subjectAndGroupInfo[0] - lesson.groupName = subjectAndGroupInfo[1] - lesson.teacher = spans[6].text() - lesson.room = spans[7].text() - lesson.movedOrCanceled = false - lesson.newMovedInOrChanged = true - lesson.divisionIntoGroups = true - lesson.description = (StringUtils.defaultString(StringUtils.substringBetween( - spans.last().text(), "(", ")"), spans.last().text()) - + " (poprzednio: " + getLessonAndGroupInfoFromSpan(spans[0])[0] + ")") - } - 4 <= spans.size -> { - lesson.subject = spans[0].text() - lesson.teacher = spans[1].text() - lesson.room = spans[2].text() - lesson.description = StringUtils.defaultString(StringUtils.substringBetween( - spans.last().text(), "(", ")"), spans.last().text()) - } - } - } - - private fun addGroupLessonInfo(lesson: TimetableLesson, spans: Elements) { - if (4 == spans.size && !spans.last().hasClass(Types.CLASS_REALIZED)) { - lesson.room = spans.last().text() - } - - if (4 == spans.size && !spans.last().hasClass(Types.CLASS_REALIZED) || 5 == spans.size) { - val subjectAndGroupInfo = getLessonAndGroupInfoFromSpan(spans[0]) - lesson.subject = subjectAndGroupInfo[0] - lesson.groupName = subjectAndGroupInfo[1] - lesson.teacher = spans[2].text() - lesson.divisionIntoGroups = true - } - - if (5 == spans.size) { - lesson.room = spans[3].text() - } - } - - private fun getLessonAndGroupInfoFromSpan(span: Element): Array { - if (!span.text().contains("[")) { - return arrayOf(span.text(), "") - } - - val subjectNameArray = span.text().split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() - val groupName = subjectNameArray[subjectNameArray.size - 1] - - return arrayOf(span.text().replace(" $groupName", ""), StringUtils.defaultString(StringUtils.substringBetween( - groupName, "[", "]"), groupName)) - } - - private object Types { - const val CLASS_PLANNING = "x-treelabel-ppl" - const val CLASS_REALIZED = "x-treelabel-rlz" - const val CLASS_MOVED_OR_CANCELED = "x-treelabel-inv" - const val CLASS_NEW_MOVED_IN_OR_CHANGED = "x-treelabel-zas" - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/timetable/TimetableLesson.kt b/api/src/main/java/io/github/wulkanowy/api/timetable/TimetableLesson.kt deleted file mode 100644 index 8769d6c6e..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/timetable/TimetableLesson.kt +++ /dev/null @@ -1,36 +0,0 @@ -package io.github.wulkanowy.api.timetable - -data class TimetableLesson( - - val number: Int, - - val date: String, - - val freeDayName: String, - - val startTime: String, - - val endTime: String, - - var subject: String = "", - - var teacher: String = "", - - var room: String = "", - - var description: String = "", - - var groupName: String = "", - - var empty: Boolean = false, - - var divisionIntoGroups: Boolean = false, - - var planning: Boolean = false, - - var realized: Boolean = false, - - var movedOrCanceled: Boolean = false, - - var newMovedInOrChanged: Boolean = false -) diff --git a/api/src/main/java/io/github/wulkanowy/api/user/AddressData.java b/api/src/main/java/io/github/wulkanowy/api/user/AddressData.java deleted file mode 100644 index 3d6fc6d54..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/user/AddressData.java +++ /dev/null @@ -1,40 +0,0 @@ -package io.github.wulkanowy.api.user; - -public class AddressData { - - private String address = ""; - - private String registeredAddress = ""; - - private String correspondenceAddress = ""; - - public String getAddress() { - return address; - } - - public AddressData setAddress(String address) { - this.address = address; - - return this; - } - - public String getRegisteredAddress() { - return registeredAddress; - } - - public AddressData setRegisteredAddress(String registeredAddress) { - this.registeredAddress = registeredAddress; - - return this; - } - - public String getCorrespondenceAddress() { - return correspondenceAddress; - } - - public AddressData setCorrespondenceAddress(String correspondenceAddress) { - this.correspondenceAddress = correspondenceAddress; - - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/user/BasicInformation.java b/api/src/main/java/io/github/wulkanowy/api/user/BasicInformation.java deleted file mode 100644 index 4edc5117d..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/user/BasicInformation.java +++ /dev/null @@ -1,70 +0,0 @@ -package io.github.wulkanowy.api.user; - -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; - -import java.io.IOException; - -import io.github.wulkanowy.api.SnP; -import io.github.wulkanowy.api.VulcanException; - -public class BasicInformation { - - private static final String STUDENT_DATA_PAGE_URL = "Uczen.mvc/DanePodstawowe"; - - private static final String CONTENT_QUERY = ".mainContainer > article"; - - private Document studentDataPageDocument; - - private SnP snp; - - public BasicInformation(SnP snp) { - this.snp = snp; - } - - public Document getStudentDataPageDocument() throws IOException, VulcanException { - if (null == studentDataPageDocument) { - studentDataPageDocument = snp.getSnPPageDocument(STUDENT_DATA_PAGE_URL); - } - - return studentDataPageDocument; - } - - public PersonalData getPersonalData() throws IOException, VulcanException { - Element e = getStudentDataPageDocument().select(CONTENT_QUERY).get(0); - - String name = snp.getRowDataChildValue(e, 1); - String[] names = name.split(" "); - - return new PersonalData() - .setName(name) - .setFirstName(names[0]) - .setSurname(names[names.length - 1]) - .setFirstAndLastName(names[0] + " " + names[names.length - 1]) - .setDateAndBirthPlace(snp.getRowDataChildValue(e, 2)) - .setPesel(snp.getRowDataChildValue(e, 3)) - .setGender(snp.getRowDataChildValue(e, 4)) - .setPolishCitizenship("Tak".equals(snp.getRowDataChildValue(e, 5))) - .setFamilyName(snp.getRowDataChildValue(e, 6)) - .setParentsNames(snp.getRowDataChildValue(e, 7)); - } - - public AddressData getAddressData() throws IOException, VulcanException { - Element e = getStudentDataPageDocument().select(CONTENT_QUERY).get(1); - - return new AddressData() - .setAddress(snp.getRowDataChildValue(e, 1)) - .setRegisteredAddress(snp.getRowDataChildValue(e, 2)) - .setCorrespondenceAddress(snp.getRowDataChildValue(e, 3)); - - } - - public ContactDetails getContactDetails() throws IOException, VulcanException { - Element e = getStudentDataPageDocument().select(CONTENT_QUERY).get(2); - - return new ContactDetails() - .setPhoneNumber(snp.getRowDataChildValue(e, 1)) - .setCellPhoneNumber(snp.getRowDataChildValue(e, 2)) - .setEmail(snp.getRowDataChildValue(e, 3)); - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/user/ContactDetails.java b/api/src/main/java/io/github/wulkanowy/api/user/ContactDetails.java deleted file mode 100644 index c8556944e..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/user/ContactDetails.java +++ /dev/null @@ -1,37 +0,0 @@ -package io.github.wulkanowy.api.user; - -public class ContactDetails { - - private String phoneNumber = ""; - - private String cellPhoneNumber = ""; - - private String email = ""; - - public String getPhoneNumber() { - return phoneNumber; - } - - public ContactDetails setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - return this; - } - - public String getCellPhoneNumber() { - return cellPhoneNumber; - } - - public ContactDetails setCellPhoneNumber(String cellPhoneNumber) { - this.cellPhoneNumber = cellPhoneNumber; - return this; - } - - public String getEmail() { - return email; - } - - public ContactDetails setEmail(String email) { - this.email = email; - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/user/FamilyInformation.java b/api/src/main/java/io/github/wulkanowy/api/user/FamilyInformation.java deleted file mode 100644 index f5a459ee8..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/user/FamilyInformation.java +++ /dev/null @@ -1,41 +0,0 @@ -package io.github.wulkanowy.api.user; - -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import io.github.wulkanowy.api.SnP; -import io.github.wulkanowy.api.VulcanException; - -public class FamilyInformation { - - private static final String STUDENT_DATA_PAGE_URL = "Uczen.mvc/DanePodstawowe"; - - private SnP snp; - - public FamilyInformation(SnP snp) { - this.snp = snp; - } - - public List getFamilyMembers() throws IOException, VulcanException { - Elements membersElements = snp.getSnPPageDocument(STUDENT_DATA_PAGE_URL) - .select(".mainContainer > article:nth-of-type(n+4)"); - - List familyMembers = new ArrayList<>(); - - for (Element e : membersElements) { - familyMembers.add(new FamilyMember() - .setName(snp.getRowDataChildValue(e, 1)) - .setKinship(snp.getRowDataChildValue(e, 2)) - .setAddress(snp.getRowDataChildValue(e, 3)) - .setTelephones(snp.getRowDataChildValue(e, 4)) - .setEmail(snp.getRowDataChildValue(e, 5)) - ); - } - - return familyMembers; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/user/FamilyMember.java b/api/src/main/java/io/github/wulkanowy/api/user/FamilyMember.java deleted file mode 100644 index dfb966745..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/user/FamilyMember.java +++ /dev/null @@ -1,59 +0,0 @@ -package io.github.wulkanowy.api.user; - -public class FamilyMember { - - private String name = ""; - - private String kinship = ""; - - private String address = ""; - - private String telephones = ""; - - private String email = ""; - - public String getName() { - return name; - } - - public FamilyMember setName(String name) { - this.name = name; - return this; - } - - public String getKinship() { - return kinship; - } - - public FamilyMember setKinship(String kinship) { - this.kinship = kinship; - return this; - } - - public String getAddress() { - return address; - } - - public FamilyMember setAddress(String address) { - this.address = address; - return this; - } - - public String getTelephones() { - return telephones; - } - - public FamilyMember setTelephones(String telephones) { - this.telephones = telephones; - return this; - } - - public String getEmail() { - return email; - } - - public FamilyMember setEmail(String email) { - this.email = email; - return this; - } -} diff --git a/api/src/main/java/io/github/wulkanowy/api/user/PersonalData.java b/api/src/main/java/io/github/wulkanowy/api/user/PersonalData.java deleted file mode 100644 index d2991e613..000000000 --- a/api/src/main/java/io/github/wulkanowy/api/user/PersonalData.java +++ /dev/null @@ -1,114 +0,0 @@ -package io.github.wulkanowy.api.user; - -public class PersonalData { - - private String name = ""; - - private String firstName = ""; - - private String surname = ""; - - private String firstAndLastName = ""; - - private String dateAndBirthPlace = ""; - - private String pesel = ""; - - private String gender = ""; - - private boolean isPolishCitizenship; - - private String familyName = ""; - - private String parentsNames = ""; - - public String getName() { - return name; - } - - public PersonalData setName(String name) { - this.name = name; - return this; - } - - public String getFirstName() { - return firstName; - } - - public PersonalData setFirstName(String firstName) { - this.firstName = firstName; - return this; - } - - public String getSurname() { - return surname; - } - - public PersonalData setSurname(String surname) { - this.surname = surname; - return this; - } - - public String getFirstAndLastName() { - return firstAndLastName; - } - - public PersonalData setFirstAndLastName(String firstAndLastName) { - this.firstAndLastName = firstAndLastName; - return this; - } - - public String getDateAndBirthPlace() { - return dateAndBirthPlace; - } - - public PersonalData setDateAndBirthPlace(String dateAndBirthPlace) { - this.dateAndBirthPlace = dateAndBirthPlace; - return this; - } - - public String getPesel() { - return pesel; - } - - public PersonalData setPesel(String pesel) { - this.pesel = pesel; - return this; - } - - public String getGender() { - return gender; - } - - public PersonalData setGender(String gender) { - this.gender = gender; - return this; - } - - public boolean isPolishCitizenship() { - return isPolishCitizenship; - } - - public PersonalData setPolishCitizenship(boolean polishCitizenship) { - isPolishCitizenship = polishCitizenship; - return this; - } - - public String getFamilyName() { - return familyName; - } - - public PersonalData setFamilyName(String familyName) { - this.familyName = familyName; - return this; - } - - public String getParentsNames() { - return parentsNames; - } - - public PersonalData setParentsNames(String parentsNames) { - this.parentsNames = parentsNames; - return this; - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/ClientTest.java b/api/src/test/java/io/github/wulkanowy/api/ClientTest.java deleted file mode 100644 index 298affac1..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/ClientTest.java +++ /dev/null @@ -1,78 +0,0 @@ -package io.github.wulkanowy.api; - -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.junit.Assert; -import org.junit.Test; - -public class ClientTest { - - private String getFixtureAsString(String fixtureFileName) { - return FixtureHelper.getAsString(getClass().getResourceAsStream(fixtureFileName)); - } - - @Test - public void setFullEndpointInfoTest() { - Client client = new Client("http://fakelog.cf\\\\admin", "pass", "Default", "123"); - - Assert.assertEquals("fakelog.cf", client.getHost()); - Assert.assertEquals("Default", client.getSymbol()); - } - - @Test - public void setFullEndpointInfoWithSymbolTest() { - Client client = new Client("http://fakelog.cf/notdefault\\\\admin", "pass", "Default", "123"); - - Assert.assertEquals("fakelog.cf", client.getHost()); - Assert.assertEquals("notdefault", client.getSymbol()); // - } - - @Test - public void checkForNoErrorsTest() throws Exception { - Client client = new Client("", "", "", "123"); - - Document doc = Jsoup.parse(getFixtureAsString("login/Logowanie-success.html")); - - Assert.assertEquals(doc, client.checkForErrors(doc, 200)); - } - - @Test(expected = VulcanOfflineException.class) - public void checkForErrorsOffline() throws Exception { - Client client = new Client("", "", "", "123"); - - Document doc = Jsoup.parse(getFixtureAsString("login/PrzerwaTechniczna.html")); - - client.checkForErrors(doc, 200); - } - - @Test(expected = NotLoggedInErrorException.class) - public void checkForErrors() throws Exception { - Client client = new Client("", "", "", "123"); - - Document doc = Jsoup.parse(getFixtureAsString("login/Logowanie-notLoggedIn.html")); - - client.checkForErrors(doc, 200); - } - - @Test - public void getFilledUrlTest() throws Exception { - Client client = new Client("http://fakelog.cf\\\\admin", "", "symbol123", "321"); - - Assert.assertEquals("http://uonetplus-opiekun.fakelog.cf/symbol123/321/Oceny/Wszystkie", - client.getFilledUrl("{schema}://uonetplus-opiekun.{host}/{symbol}/{ID}/Oceny/Wszystkie")); - } - - @Test - public void getSymbolTest() { - Client client = new Client("", "", "symbol4321", "123"); - - Assert.assertEquals("symbol4321", client.getSymbol()); - } - - @Test - public void getSchoolIdTest() throws Exception { - Client client = new Client("", "", "1", "123456"); - - Assert.assertEquals("123456", client.getSchoolId()); - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/DateTimeUtilsTest.kt b/api/src/test/java/io/github/wulkanowy/api/DateTimeUtilsTest.kt deleted file mode 100644 index 1105b2a72..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/DateTimeUtilsTest.kt +++ /dev/null @@ -1,53 +0,0 @@ -package io.github.wulkanowy.api - -import org.junit.Assert -import org.junit.Test -import java.text.ParseException -import java.text.SimpleDateFormat -import java.util.* - -class DateTimeUtilsTest { - - @Test - fun getTicksDateObjectTest() { - val format = SimpleDateFormat("dd.MM.yyyy", Locale.ROOT) - format.timeZone = TimeZone.getTimeZone("UTC") - val date = format.parse("31.07.2017") - - Assert.assertEquals(636370560000000000L, getDateAsTick(date)) - - val calendar = Calendar.getInstance() - calendar.time = date - calendar.add(Calendar.DAY_OF_YEAR, -14) - val dateTwoWeekBefore = calendar.time - - Assert.assertEquals(636358464000000000L, getDateAsTick(dateTwoWeekBefore)) - } - - @Test(expected = ParseException::class) - fun getTicsStringInvalidFormatTest() { - Assert.assertEquals(636370560000000000L, getDateAsTick("31.07.2017", "dd.MMM.yyyy")) - } - - @Test - fun getTicsStringFormatTest() { - Assert.assertEquals(636370560000000000L, getDateAsTick("31.07.2017", "dd.MM.yyyy")) - } - - @Test - fun getTicsStringTest() { - Assert.assertEquals("636370560000000000", getDateAsTick("2017-07-31")) - Assert.assertEquals("636334272000000000", getDateAsTick("2017-06-19")) - Assert.assertEquals("636189120000000000", getDateAsTick("2017-01-02")) - Assert.assertEquals("636080256000000000", getDateAsTick("2016-08-29")) - } - - @Test - fun getDateTest() { - val format = SimpleDateFormat("dd.MM.yyyy", Locale.ROOT) - format.timeZone = TimeZone.getTimeZone("UTC") - val date = format.parse("31.07.2017") - - Assert.assertEquals(date, getDate(636370560000000000L)) - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/FixtureHelper.java b/api/src/test/java/io/github/wulkanowy/api/FixtureHelper.java deleted file mode 100644 index 94dd47b87..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/FixtureHelper.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.github.wulkanowy.api; - -import java.io.InputStream; -import java.util.Scanner; - -public class FixtureHelper { - - public static String getAsString(InputStream inputStream) { - Scanner s = new Scanner(inputStream).useDelimiter("\\A"); - return s.hasNext() ? s.next() : ""; - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/StudentAndParentTest.java b/api/src/test/java/io/github/wulkanowy/api/StudentAndParentTest.java deleted file mode 100644 index 4c6443b1e..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/StudentAndParentTest.java +++ /dev/null @@ -1,103 +0,0 @@ -package io.github.wulkanowy.api; - -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import io.github.wulkanowy.api.generic.Semester; - -public class StudentAndParentTest { - - private Client client; - - @Before - public void setUp() throws Exception { - String input = FixtureHelper.getAsString( - getClass().getResourceAsStream("OcenyWszystkie-semester.html")); - Document gradesPageDocument = Jsoup.parse(input); - - client = Mockito.mock(Client.class); - Mockito.when(client.getPageByUrl(Mockito.anyString())).thenReturn(gradesPageDocument); - Mockito.when(client.getPageByUrl( - Mockito.anyString(), - Mockito.anyBoolean(), Mockito.anyMap())).thenReturn(gradesPageDocument); - } - - @Test - public void snpTest() { - StudentAndParent snp = new StudentAndParent(client, "1234", null); - Assert.assertEquals("1234", snp.getStudentID()); - } - - @Test - public void getSemestersTest() throws Exception { - SnP snp = new StudentAndParent(client, null, null); - List semesters = snp.getSemesters(); - - Assert.assertEquals(2, semesters.size()); - - Assert.assertEquals("1", semesters.get(0).getName()); - Assert.assertEquals("1234", semesters.get(0).getId()); - Assert.assertFalse(semesters.get(0).isCurrent()); - - Assert.assertEquals("2", semesters.get(1).getName()); - Assert.assertEquals("1235", semesters.get(1).getId()); - Assert.assertTrue(semesters.get(1).isCurrent()); - } - - @Test - public void getCurrentSemesterTest() { - List semesters = new ArrayList<>(); - semesters.add(new Semester().setName("1500100900").setId("1").setCurrent(false)); - semesters.add(new Semester().setName("1500100901").setId("2").setCurrent(true)); - - SnP snp = new StudentAndParent(client, null, null); - Semester semester = snp.getCurrent(semesters); - - Assert.assertTrue(semester.isCurrent()); - Assert.assertEquals("2", semester.getId()); - Assert.assertEquals("1500100901", semester.getName()); - } - - @Test - public void getCurrentSemesterFromEmptyTest() { - SnP snp = new StudentAndParent(client, null, null); - List semesters = new ArrayList<>(); - - Assert.assertNull(snp.getCurrent(semesters)); - } - - @Test - public void getDiariesAndStudentTest() throws IOException, VulcanException { - String input = FixtureHelper.getAsString(getClass().getResourceAsStream("WitrynaUczniaIRodzica.html")); - Document snpHome = Jsoup.parse(input); - - client = Mockito.mock(Client.class); - Mockito.when(client.getPageByUrl(Mockito.anyString())).thenReturn(snpHome); - SnP snp = new StudentAndParent(client, null, null); - - snp.setUp(); - - Assert.assertEquals("3Ti 2017", snp.getDiaries().get(0).getName()); - Assert.assertEquals("2Ti 2016", snp.getDiaries().get(1).getName()); - Assert.assertEquals("1Ti 2015", snp.getDiaries().get(2).getName()); - - Assert.assertEquals("1300", snp.getDiaries().get(0).getId()); - Assert.assertEquals("1200", snp.getDiaries().get(1).getId()); - Assert.assertEquals("1100", snp.getDiaries().get(2).getId()); - - Assert.assertTrue(snp.getDiaries().get(0).isCurrent()); - Assert.assertFalse(snp.getDiaries().get(1).isCurrent()); - Assert.assertFalse(snp.getDiaries().get(2).isCurrent()); - - Assert.assertEquals("Jan Kowal", snp.getStudents().get(0).getName()); - Assert.assertEquals("100", snp.getStudents().get(0).getId()); - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/StudentAndParentTestCase.java b/api/src/test/java/io/github/wulkanowy/api/StudentAndParentTestCase.java deleted file mode 100644 index 764e8009e..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/StudentAndParentTestCase.java +++ /dev/null @@ -1,28 +0,0 @@ -package io.github.wulkanowy.api; - -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.mockito.Mockito; - -import io.github.wulkanowy.api.generic.Semester; - -public abstract class StudentAndParentTestCase { - - protected StudentAndParent getSnp(String fixtureFileName) throws Exception { - String input = FixtureHelper.getAsString(getClass().getResourceAsStream(fixtureFileName)); - - Document tablePageDocument = Jsoup.parse(input); - - StudentAndParent snp = Mockito.mock(StudentAndParent.class); - Mockito.when(snp.getSnPPageDocument(Mockito.anyString())) - .thenReturn(tablePageDocument); - Mockito.when(snp.getSemesters(Mockito.any(Document.class))).thenCallRealMethod(); - Mockito.when(snp.getCurrent(Mockito.anyList())) - .thenCallRealMethod(); - Mockito.when(snp.getRowDataChildValue(Mockito.any(Element.class), - Mockito.anyInt())).thenCallRealMethod(); - - return snp; - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/VulcanTest.java b/api/src/test/java/io/github/wulkanowy/api/VulcanTest.java deleted file mode 100644 index 287935c00..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/VulcanTest.java +++ /dev/null @@ -1,31 +0,0 @@ -package io.github.wulkanowy.api; - -import org.hamcrest.CoreMatchers; -import org.junit.Assert; -import org.junit.Test; - -public class VulcanTest { - - @Test(expected = NotLoggedInErrorException.class) - public void getClientWithoutLoginTest() throws Exception { - Vulcan vulcan = new Vulcan(); - - vulcan.getClient(); - } - - @Test - public void getClientTest() throws Exception { - Vulcan vulcan = new Vulcan(); - vulcan.setCredentials("email", "password", "symbol", null, null, null); - - Assert.assertThat(vulcan.getClient(), CoreMatchers.instanceOf(Client.class)); - } - - @Test - public void getClientTwiceTest() throws Exception { - Vulcan vulcan = new Vulcan(); - vulcan.setCredentials("email", "password", "symbol", null, null, null); - - Assert.assertEquals(vulcan.getClient(), vulcan.getClient()); - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/attendance/AttendanceStatisticsTest.java b/api/src/test/java/io/github/wulkanowy/api/attendance/AttendanceStatisticsTest.java deleted file mode 100644 index ca50f3789..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/attendance/AttendanceStatisticsTest.java +++ /dev/null @@ -1,144 +0,0 @@ -package io.github.wulkanowy.api.attendance; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.util.List; - -import io.github.wulkanowy.api.StudentAndParentTestCase; -import io.github.wulkanowy.api.generic.Month; - -public class AttendanceStatisticsTest extends StudentAndParentTestCase { - - private AttendanceStatistics excellent; - - private AttendanceStatistics full; - - @Before - public void setUp() throws Exception { - this.excellent = new AttendanceStatistics(getSnp("Frekwencja-excellent.html")); - this.full = new AttendanceStatistics(getSnp("Frekwencja-full.html")); - } - - @Test - public void getSubjectList() throws Exception { - Assert.assertEquals(26, excellent.getSubjectList().size()); - Assert.assertEquals(23, full.getSubjectList().size()); - } - - @Test - public void getSubjectListId() throws Exception { - Assert.assertEquals(-1, excellent.getSubjectList().get(0).getId()); - Assert.assertEquals(63, excellent.getSubjectList().get(10).getId()); - Assert.assertEquals(0, excellent.getSubjectList().get(25).getId()); - - Assert.assertEquals(-1, full.getSubjectList().get(0).getId()); - Assert.assertEquals(108, full.getSubjectList().get(14).getId()); - Assert.assertEquals(492, full.getSubjectList().get(21).getId()); - } - - @Test - public void getSubjectListName() throws Exception { - Assert.assertEquals("Wszystkie", excellent.getSubjectList().get(0).getName()); - Assert.assertEquals("Fizyka", excellent.getSubjectList().get(8).getName()); - Assert.assertEquals("Sieci komputerowe i administrowanie sieciami", - excellent.getSubjectList().get(21).getName()); - - Assert.assertEquals("Praktyka zawodowa", full.getSubjectList().get(11).getName()); - Assert.assertEquals("Użytkowanie urządzeń peryferyjnych komputera", - full.getSubjectList().get(16).getName()); - Assert.assertEquals("Brak opisu lekcji", full.getSubjectList().get(22).getName()); - } - - @Test - public void getTypesTotal() throws Exception { - Assert.assertEquals(100.0, excellent.getTypesTable().getTotal(), 0); - Assert.assertEquals(80.94, full.getTypesTable().getTotal(), 0); - } - - @Test - public void getTypeName() throws Exception { - List typeList1 = excellent.getTypesTable().getTypeList(); - Assert.assertEquals("Obecność", typeList1.get(0).getName()); - Assert.assertEquals("Nieobecność nieusprawiedliwiona", typeList1.get(1).getName()); - Assert.assertEquals("Nieobecność usprawiedliwiona", typeList1.get(2).getName()); - Assert.assertEquals("Nieobecność z przyczyn szkolnych", typeList1.get(3).getName()); - - List typeList2 = full.getTypesTable().getTypeList(); - Assert.assertEquals("Spóźnienie nieusprawiedliwione", typeList2.get(4).getName()); - Assert.assertEquals("Spóźnienie usprawiedliwione", typeList2.get(5).getName()); - Assert.assertEquals("Zwolnienie", typeList2.get(6).getName()); - } - - @Test - public void getTypeTotal() throws Exception { - List typeList1 = excellent.getTypesTable().getTypeList(); - Assert.assertEquals(1211, typeList1.get(0).getTotal()); - Assert.assertEquals(0, typeList1.get(1).getTotal()); - Assert.assertEquals(0, typeList1.get(2).getTotal()); - Assert.assertEquals(0, typeList1.get(3).getTotal()); - Assert.assertEquals(0, typeList1.get(4).getTotal()); - Assert.assertEquals(0, typeList1.get(5).getTotal()); - Assert.assertEquals(0, typeList1.get(6).getTotal()); - - List typeList2 = full.getTypesTable().getTypeList(); - Assert.assertEquals(822, typeList2.get(0).getTotal()); - Assert.assertEquals(6, typeList2.get(1).getTotal()); - Assert.assertEquals(192, typeList2.get(2).getTotal()); - Assert.assertEquals(7, typeList2.get(3).getTotal()); - Assert.assertEquals(12, typeList2.get(4).getTotal()); - Assert.assertEquals(1, typeList2.get(5).getTotal()); - Assert.assertEquals(2, typeList2.get(6).getTotal()); - } - - @Test - public void getTypeList() throws Exception { - List typesList1 = excellent.getTypesTable().getTypeList(); - Assert.assertEquals(12, typesList1.get(0).getMonthList().size()); - Assert.assertEquals(12, typesList1.get(5).getMonthList().size()); - - List typesList2 = full.getTypesTable().getTypeList(); - Assert.assertEquals(12, typesList2.get(0).getMonthList().size()); - Assert.assertEquals(12, typesList2.get(5).getMonthList().size()); - } - - @Test - public void getMonthList() throws Exception { - List typeList1 = excellent.getTypesTable().getTypeList(); - Assert.assertEquals(12, typeList1.get(0).getMonthList().size()); - - List typeList2 = full.getTypesTable().getTypeList(); - Assert.assertEquals(12, typeList2.get(0).getMonthList().size()); - } - - @Test - public void getMonthName() throws Exception { - List monthsList1 = excellent.getTypesTable().getTypeList().get(0).getMonthList(); - Assert.assertEquals("IX", monthsList1.get(0).getName()); - Assert.assertEquals("III", monthsList1.get(6).getName()); - Assert.assertEquals("VIII", monthsList1.get(11).getName()); - - List monthsList2 = full.getTypesTable().getTypeList().get(0).getMonthList(); - Assert.assertEquals("XI", monthsList2.get(2).getName()); - Assert.assertEquals("II", monthsList2.get(5).getName()); - Assert.assertEquals("VI", monthsList2.get(9).getName()); - } - - @Test - public void getMonthValue() throws Exception { - List monthsList1 = excellent.getTypesTable().getTypeList().get(0).getMonthList(); - Assert.assertEquals(142, monthsList1.get(0).getValue()); - Assert.assertEquals(131, monthsList1.get(4).getValue()); - Assert.assertEquals(139, monthsList1.get(7).getValue()); - Assert.assertEquals(114, monthsList1.get(9).getValue()); - Assert.assertEquals(0, monthsList1.get(11).getValue()); - - List typeList1 = full.getTypesTable().getTypeList(); - Assert.assertEquals(135, typeList1.get(0).getMonthList().get(0).getValue()); - Assert.assertEquals(7, typeList1.get(3).getMonthList().get(5).getValue()); - Assert.assertEquals(1, typeList1.get(5).getMonthList().get(0).getValue()); - Assert.assertEquals(27, typeList1.get(2).getMonthList().get(9).getValue()); - Assert.assertEquals(0, typeList1.get(0).getMonthList().get(11).getValue()); - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/attendance/AttendanceTableTest.java b/api/src/test/java/io/github/wulkanowy/api/attendance/AttendanceTableTest.java deleted file mode 100644 index 40ff4f065..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/attendance/AttendanceTableTest.java +++ /dev/null @@ -1,165 +0,0 @@ -package io.github.wulkanowy.api.attendance; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import io.github.wulkanowy.api.StudentAndParentTestCase; - -public class AttendanceTableTest extends StudentAndParentTestCase { - - private AttendanceTable excellent; - - private AttendanceTable full; - - @Before - public void setUp() throws Exception { - excellent = new AttendanceTable(getSnp("Frekwencja-excellent.html")); - full = new AttendanceTable(getSnp("Frekwencja-full.html")); - } - - @Test - public void getWeekStartByDate() throws Exception { - Assert.assertEquals("2015-08-31", excellent.getWeekTable().getStartDayDate()); - Assert.assertEquals("2016-09-05", full.getWeekTable().getStartDayDate()); - } - - @Test - public void getWeekDaysNumber() throws Exception { - Assert.assertEquals(5, excellent.getWeekTable().getDays().size()); - Assert.assertEquals(5, full.getWeekTable().getDays().size()); - } - - @Test - public void getDayLessonsNumber() throws Exception { - Assert.assertEquals(14, excellent.getWeekTable().getDay(0).getLessons().size()); - Assert.assertEquals(14, full.getWeekTable().getDay(0).getLessons().size()); - } - - @Test - public void getDayDate() throws Exception { - Assert.assertEquals("2015-08-31", excellent.getWeekTable().getDay(0).getDate()); - Assert.assertEquals("2015-09-02", excellent.getWeekTable().getDay(2).getDate()); - Assert.assertEquals("2015-09-04", excellent.getWeekTable().getDay(4).getDate()); - - Assert.assertEquals("2016-09-05", full.getWeekTable().getDay(0).getDate()); - Assert.assertEquals("2016-09-07", full.getWeekTable().getDay(2).getDate()); - Assert.assertEquals("2016-09-09", full.getWeekTable().getDay(4).getDate()); - } - - @Test - public void getLessonSubject() throws Exception { - Assert.assertEquals("", - excellent.getWeekTable().getDay(0).getLesson(7).getSubject()); - Assert.assertEquals("Uroczyste rozpoczęcie roku szkolnego 2015/2016", - excellent.getWeekTable().getDay(1).getLesson(1).getSubject()); - Assert.assertEquals("Geografia", - excellent.getWeekTable().getDay(3).getLesson(4).getSubject()); - - Assert.assertEquals("Naprawa komputera", - full.getWeekTable().getDay(1).getLesson(8).getSubject()); - Assert.assertEquals("Religia", - full.getWeekTable().getDay(3).getLesson(1).getSubject()); - Assert.assertEquals("Metodologia programowania", - full.getWeekTable().getDay(4).getLesson(5).getSubject()); - } - - @Test - public void getLessonIsNotExist() throws Exception { - Assert.assertTrue(excellent.getWeekTable().getDay(0).getLesson(5).isNotExist()); - Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(1).isNotExist()); - Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(12).isNotExist()); - - Assert.assertFalse(full.getWeekTable().getDay(1).getLesson(12).isAbsenceUnexcused()); - Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isAbsenceUnexcused()); - Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(5).isAbsenceUnexcused()); - } - - @Test - public void getLessonIsEmpty() throws Exception { - Assert.assertTrue(excellent.getWeekTable().getDay(0).getLesson(0).isEmpty()); - Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(6).isEmpty()); - Assert.assertTrue(excellent.getWeekTable().getDay(4).getLesson(12).isEmpty()); - - Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(9).isEmpty()); - Assert.assertFalse(full.getWeekTable().getDay(2).getLesson(5).isEmpty()); - Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(2).isEmpty()); - } - - @Test - public void getLessonIsPresence() throws Exception { - Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(7).isPresence()); - Assert.assertTrue(excellent.getWeekTable().getDay(1).getLesson(1).isPresence()); - Assert.assertTrue(excellent.getWeekTable().getDay(3).getLesson(7).isPresence()); - - Assert.assertTrue(full.getWeekTable().getDay(0).getLesson(1).isPresence()); - Assert.assertTrue(full.getWeekTable().getDay(2).getLesson(6).isPresence()); - Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(7).isPresence()); - } - - @Test - public void getLessonIsAbsenceUnexcused() throws Exception { - Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(7).isAbsenceUnexcused()); - Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(0).isAbsenceUnexcused()); - Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(4).isAbsenceUnexcused()); - - Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(8).isAbsenceUnexcused()); - Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isAbsenceUnexcused()); - Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(8).isAbsenceUnexcused()); - } - - @Test - public void getLessonIsAbsenceExcused() throws Exception { - Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(7).isAbsenceExcused()); - Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(0).isAbsenceExcused()); - Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(4).isAbsenceExcused()); - - Assert.assertFalse(full.getWeekTable().getDay(2).getLesson(5).isAbsenceExcused()); - Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isAbsenceExcused()); - Assert.assertTrue(full.getWeekTable().getDay(4).getLesson(3).isAbsenceExcused()); - } - - @Test - public void getLessonIsAbsenceForSchoolReasons() throws Exception { - Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(4).isAbsenceForSchoolReasons()); - Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(8).isAbsenceForSchoolReasons()); - Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(12).isAbsenceForSchoolReasons()); - - Assert.assertTrue(full.getWeekTable().getDay(2).getLesson(5).isAbsenceForSchoolReasons()); - Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isAbsenceForSchoolReasons()); - Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(8).isAbsenceForSchoolReasons()); - } - - @Test - public void getLessonIsUnexcusedLateness() throws Exception { - Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(4).isUnexcusedLateness()); - Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(8).isUnexcusedLateness()); - Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(12).isUnexcusedLateness()); - - Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(6).isUnexcusedLateness()); - Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isUnexcusedLateness()); - Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(8).isUnexcusedLateness()); - } - - @Test - public void getLessonIsExcusedLateness() throws Exception { - Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(4).isExcusedLateness()); - Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(8).isExcusedLateness()); - Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(12).isExcusedLateness()); - - Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(7).isExcusedLateness()); - Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isExcusedLateness()); - Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(8).isExcusedLateness()); - } - - @Test - public void getLessonIsExemption() throws Exception { - Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(4).isExemption()); - Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(8).isExemption()); - Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(12).isExemption()); - - Assert.assertFalse(full.getWeekTable().getDay(2).getLesson(5).isExemption()); - Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isExemption()); - Assert.assertTrue(full.getWeekTable().getDay(4).getLesson(8).isExemption()); - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/attendance/AttendanceTest.kt b/api/src/test/java/io/github/wulkanowy/api/attendance/AttendanceTest.kt deleted file mode 100644 index 40a21c9c2..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/attendance/AttendanceTest.kt +++ /dev/null @@ -1,90 +0,0 @@ -package io.github.wulkanowy.api.attendance - -import io.github.wulkanowy.api.StudentAndParentTestCase -import org.junit.Assert.* -import org.junit.Test - -class AttendanceTest : StudentAndParentTestCase() { - - private val full by lazy { Attendance(getSnp("Frekwencja-full.html")) } - - private val excellent by lazy { Attendance(getSnp("Frekwencja-excellent.html")) } - - @Test fun getAttendanceFull() { - assertTrue(full.getAttendance().isNotEmpty()) - assertEquals(38, full.getAttendance().size) - } - - @Test fun getAttendanceExcellent() { - assertTrue(excellent.getAttendance().isNotEmpty()) - assertEquals(22, excellent.getAttendance().size) - } - - @Test fun getLessonSubject() { - assertEquals("Uroczyste rozpoczęcie roku szkolnego 2015/2016", excellent.getAttendance()[0].subject) - assertEquals("Geografia", excellent.getAttendance()[11].subject) - - assertEquals("Naprawa komputera", full.getAttendance()[14].subject) - assertEquals("Religia", full.getAttendance()[23].subject) - assertEquals("Metodologia programowania", full.getAttendance()[34].subject) - } - - @Test fun getLessonIsPresence() { - assertTrue(excellent.getAttendance()[0].presence) - assertTrue(excellent.getAttendance()[15].presence) - - assertTrue(full.getAttendance()[0].presence) - assertTrue(full.getAttendance()[21].presence) - assertFalse(full.getAttendance()[36].presence) - assertFalse(full.getAttendance()[37].presence) - } - - - @Test fun getLessonIsAbsenceUnexcused() { - assertFalse(excellent.getAttendance()[0].absenceUnexcused) - - assertTrue(full.getAttendance()[14].absenceUnexcused) - assertFalse(full.getAttendance()[24].absenceUnexcused) - assertFalse(full.getAttendance()[37].absenceUnexcused) - } - - @Test fun getLessonIsAbsenceExcused() { - assertFalse(excellent.getAttendance()[0].absenceExcused) - - assertFalse(full.getAttendance()[5].absenceExcused) - assertFalse(full.getAttendance()[10].absenceExcused) - assertTrue(full.getAttendance()[36].absenceExcused) - } - - @Test fun getLessonIsAbsenceForSchoolReasons() { - assertFalse(excellent.getAttendance()[6].absenceForSchoolReasons) - - assertTrue(full.getAttendance()[19].absenceForSchoolReasons) - assertFalse(full.getAttendance()[0].absenceForSchoolReasons) - assertFalse(full.getAttendance()[37].absenceForSchoolReasons) - } - - @Test fun getLessonIsUnexcusedLateness() { - assertFalse(excellent.getAttendance()[7].unexcusedLateness) - - assertTrue(full.getAttendance()[12].unexcusedLateness) - assertFalse(full.getAttendance()[13].unexcusedLateness) - assertFalse(full.getAttendance()[36].unexcusedLateness) - } - - @Test fun getLessonIsExcusedLateness() { - assertFalse(excellent.getAttendance()[8].excusedLateness) - - assertTrue(full.getAttendance()[13].excusedLateness) - assertFalse(full.getAttendance()[14].excusedLateness) - assertFalse(full.getAttendance()[35].excusedLateness) - } - - @Test fun getLessonIsExemption() { - assertFalse(excellent.getAttendance()[9].exemption) - - assertFalse(full.getAttendance()[0].exemption) - assertFalse(full.getAttendance()[15].exemption) - assertTrue(full.getAttendance()[37].exemption) - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/exams/ExamsTest.kt b/api/src/test/java/io/github/wulkanowy/api/exams/ExamsTest.kt deleted file mode 100644 index 8e94e4f25..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/exams/ExamsTest.kt +++ /dev/null @@ -1,70 +0,0 @@ -package io.github.wulkanowy.api.exams - -import io.github.wulkanowy.api.StudentAndParentTestCase -import org.junit.Assert.assertEquals -import org.junit.Test - -class ExamsTest : StudentAndParentTestCase() { - - private val onePerDay by lazy { Exams(getSnp("Sprawdziany-one-per-day.html")) } - - private val empty by lazy { Exams(getSnp("Sprawdziany-empty.html")) } - - @Test fun getExamsSizeTest() { - assertEquals(6, onePerDay.getExams().size) - assertEquals(0, empty.getExams().size) - } - - @Test fun getExamsDateTest() { - assertEquals("2017-10-23", onePerDay.getExams()[0].date) - assertEquals("2017-10-24", onePerDay.getExams()[1].date) - assertEquals("2017-10-25", onePerDay.getExams()[2].date) - assertEquals("2017-10-25", onePerDay.getExams()[3].date) - assertEquals("2017-10-26", onePerDay.getExams()[4].date) - assertEquals("2017-10-27", onePerDay.getExams()[5].date) - } - - @Test fun getExamSubjectTest() { - assertEquals("Sieci komputerowe", onePerDay.getExams()[0].subject) - assertEquals("Język angielski", onePerDay.getExams()[1].subject) - assertEquals("Język polski", onePerDay.getExams()[4].subject) - assertEquals("Metodologia programowania", onePerDay.getExams()[5].subject) - } - - @Test fun getExamGroupTest() { - assertEquals("zaw2", onePerDay.getExams()[0].group) - assertEquals("J1", onePerDay.getExams()[1].group) - assertEquals("", onePerDay.getExams()[4].group) - } - - @Test fun getExamTypeTest() { - assertEquals("Sprawdzian", onePerDay.getExams()[0].type) - assertEquals("Sprawdzian", onePerDay.getExams()[1].type) - assertEquals("Sprawdzian", onePerDay.getExams()[2].type) - assertEquals("Kartkówka", onePerDay.getExams()[3].type) - } - - @Test fun getExamDescriptionTest() { - assertEquals("Łącza danych", onePerDay.getExams()[0].description) - assertEquals("Czasy teraźniejsze", onePerDay.getExams()[1].description) - assertEquals("", onePerDay.getExams()[5].description) - } - - @Test fun getExamTeacherTest() { - assertEquals("Adam Wiśniewski", onePerDay.getExams()[0].teacher) - assertEquals("Natalia Nowak", onePerDay.getExams()[1].teacher) - assertEquals("Małgorzata Nowacka", onePerDay.getExams()[5].teacher) - } - - @Test fun getExamTeacherSymbolTest() { - assertEquals("AW", onePerDay.getExams()[0].teacherSymbol) - assertEquals("NN", onePerDay.getExams()[1].teacherSymbol) - assertEquals("MN", onePerDay.getExams()[5].teacherSymbol) - } - - @Test fun getExamEntryDateTest() { - assertEquals("2017-10-16", onePerDay.getExams()[0].entryDate) - assertEquals("2017-10-17", onePerDay.getExams()[1].entryDate) - assertEquals("2017-10-16", onePerDay.getExams()[5].entryDate) - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/exams/ExamsWeekTest.java b/api/src/test/java/io/github/wulkanowy/api/exams/ExamsWeekTest.java deleted file mode 100644 index 357cca546..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/exams/ExamsWeekTest.java +++ /dev/null @@ -1,111 +0,0 @@ -package io.github.wulkanowy.api.exams; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.util.List; - -import io.github.wulkanowy.api.StudentAndParentTestCase; - -public class ExamsWeekTest extends StudentAndParentTestCase { - - private ExamsWeek onePerDay; - - private ExamsWeek empty; - - @Before - public void getCurrent() throws Exception { - onePerDay = new ExamsWeek(getSnp("Sprawdziany-one-per-day.html")); - empty = new ExamsWeek(getSnp("Sprawdziany-empty.html")); - } - - @Test - public void getWeekTest() throws Exception { - Assert.assertEquals("2017-10-23", onePerDay.getCurrent().getStartDayDate()); - Assert.assertEquals("2018-04-30", empty.getCurrent().getStartDayDate()); - } - - @Test - public void getDaysListTest() throws Exception { - Assert.assertEquals(5, onePerDay.getCurrent().getDays().size()); - Assert.assertEquals(7, onePerDay.getWeek("", false).getDays().size()); - Assert.assertEquals(0, empty.getCurrent().getDays().size()); - } - - @Test - public void getExamsListTest() throws Exception { - List notEmpty = onePerDay.getCurrent().getDays(); - Assert.assertEquals(1, notEmpty.get(0).getExamList().size()); - Assert.assertEquals(1, notEmpty.get(1).getExamList().size()); - Assert.assertEquals(1, notEmpty.get(4).getExamList().size()); - - List emptyToo = onePerDay.getWeek("", false).getDays(); - Assert.assertEquals(1, emptyToo.get(0).getExamList().size()); - Assert.assertEquals(1, emptyToo.get(1).getExamList().size()); - Assert.assertEquals(1, emptyToo.get(4).getExamList().size()); - } - - @Test - public void getDayDateTest() throws Exception { - List dayList = onePerDay.getCurrent().getDays(); - - Assert.assertEquals("2017-10-23", dayList.get(0).getDate()); - Assert.assertEquals("2017-10-24", dayList.get(1).getDate()); - Assert.assertEquals("2017-10-27", dayList.get(4).getDate()); - } - - @Test - public void getDayNameTest() throws Exception { - List dayList = onePerDay.getCurrent().getDays(); - - Assert.assertEquals("Poniedziałek", dayList.get(0).getDayName()); - Assert.assertEquals("Wtorek", dayList.get(1).getDayName()); - Assert.assertEquals("Piątek", dayList.get(4).getDayName()); - } - - @Test - public void getExamSubjectAndGroupTest() throws Exception { - List dayList = onePerDay.getCurrent().getDays(); - - Assert.assertEquals("Sieci komputerowe 3Ti|zaw2", dayList.get(0).getExamList().get(0).getSubjectAndGroup()); - Assert.assertEquals("Język angielski 3Ti|J1", dayList.get(1).getExamList().get(0).getSubjectAndGroup()); - Assert.assertEquals("Metodologia programowania 3Ti|zaw2", dayList.get(4).getExamList().get(0).getSubjectAndGroup()); - } - - @Test - public void getExamTypeTest() throws Exception { - List dayList = onePerDay.getCurrent().getDays(); - - Assert.assertEquals("Sprawdzian", dayList.get(0).getExamList().get(0).getType()); - Assert.assertEquals("Sprawdzian", dayList.get(1).getExamList().get(0).getType()); - Assert.assertEquals("Sprawdzian", dayList.get(4).getExamList().get(0).getType()); - } - - @Test - public void getExamDescriptionTest() throws Exception { - List dayList = onePerDay.getCurrent().getDays(); - - Assert.assertEquals("Łącza danych", dayList.get(0).getExamList().get(0).getDescription()); - Assert.assertEquals("Czasy teraźniejsze", dayList.get(1).getExamList().get(0).getDescription()); - Assert.assertEquals("", dayList.get(4).getExamList().get(0).getDescription()); - } - - @Test - public void getExamTeacherTest() throws Exception { - List dayList = onePerDay.getCurrent().getDays(); - - Assert.assertEquals("Adam Wiśniewski [AW]", dayList.get(0).getExamList().get(0).getTeacher()); - Assert.assertEquals("Natalia Nowak [NN]", dayList.get(1).getExamList().get(0).getTeacher()); - Assert.assertEquals("Małgorzata Nowacka [MN]", dayList.get(4).getExamList().get(0).getTeacher()); - } - - @Test - public void getExamEntryDateTest() throws Exception { - List dayList = onePerDay.getCurrent().getDays(); - - Assert.assertEquals("2017-10-16", dayList.get(0).getExamList().get(0).getEntryDate()); - Assert.assertEquals("2017-10-17", dayList.get(1).getExamList().get(0).getEntryDate()); - Assert.assertEquals("2017-10-16", dayList.get(4).getExamList().get(0).getEntryDate()); - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/grades/GradesListTest.java b/api/src/test/java/io/github/wulkanowy/api/grades/GradesListTest.java deleted file mode 100644 index deab7617c..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/grades/GradesListTest.java +++ /dev/null @@ -1,106 +0,0 @@ -package io.github.wulkanowy.api.grades; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.util.List; - -import io.github.wulkanowy.api.StudentAndParentTestCase; - -public class GradesListTest extends StudentAndParentTestCase { - - private GradesList filled; - - @Before - public void setUp() throws Exception { - filled = new GradesList(getSnp("OcenyWszystkie-filled.html")); - } - - @Test - public void getAllTest() throws Exception { - Assert.assertEquals(7, filled.getAll("").size()); // 2 items are skipped - } - - @Test - public void getSubjectTest() throws Exception { - List list = filled.getAll(""); - - Assert.assertEquals("Zajęcia z wychowawcą", list.get(0).getSubject()); - Assert.assertEquals("Język angielski", list.get(3).getSubject()); - Assert.assertEquals("Wychowanie fizyczne", list.get(4).getSubject()); - Assert.assertEquals("Język polski", list.get(5).getSubject()); - } - - @Test - public void getValueTest() throws Exception { - List list = filled.getAll(""); - - Assert.assertEquals("5", list.get(0).getValue()); - Assert.assertEquals("5", list.get(3).getValue()); - Assert.assertEquals("1", list.get(4).getValue()); - Assert.assertEquals("1", list.get(5).getValue()); - } - - @Test - public void getColorTest() throws Exception { - List list = filled.getAll(""); - - Assert.assertEquals("000000", list.get(0).getColor()); - Assert.assertEquals("1289F7", list.get(3).getColor()); - Assert.assertEquals("6ECD07", list.get(4).getColor()); - Assert.assertEquals("6ECD07", list.get(5).getColor()); - } - - @Test - public void getSymbolTest() throws Exception { - List list = filled.getAll(""); - - Assert.assertEquals("A1", list.get(0).getSymbol()); - Assert.assertEquals("BW3", list.get(3).getSymbol()); - Assert.assertEquals("STR", list.get(4).getSymbol()); - Assert.assertEquals("K", list.get(5).getSymbol()); - Assert.assertEquals("+Odp", list.get(6).getSymbol()); - } - - @Test - public void getDescriptionTest() throws Exception { - List list = filled.getAll(""); - - Assert.assertEquals("Dzień Kobiet w naszej klasie", list.get(0).getDescription()); - Assert.assertEquals("Writing", list.get(3).getDescription()); - Assert.assertEquals("", list.get(4).getDescription()); - Assert.assertEquals("Kordian", list.get(5).getDescription()); - Assert.assertEquals("Kordian", list.get(6).getDescription()); - } - - @Test - public void getWeightTest() throws Exception { - List list = filled.getAll(""); - - Assert.assertEquals("1,00", list.get(0).getWeight()); - Assert.assertEquals("3,00", list.get(3).getWeight()); - Assert.assertEquals("8,00", list.get(4).getWeight()); - Assert.assertEquals("5,00", list.get(5).getWeight()); - } - - @Test - public void getDateTest() throws Exception { - List list = filled.getAll(""); - - Assert.assertEquals("2017-03-21", list.get(0).getDate()); - Assert.assertEquals("2017-06-02", list.get(3).getDate()); - Assert.assertEquals("2017-04-02", list.get(4).getDate()); - Assert.assertEquals("2017-02-06", list.get(5).getDate()); - } - - @Test - public void getTeacherTest() throws Exception { - List list = filled.getAll(""); - - Assert.assertEquals("Patryk Maciejewski", list.get(0).getTeacher()); - Assert.assertEquals("Oliwia Woźniak", list.get(3).getTeacher()); - Assert.assertEquals("Klaudia Dziedzic", list.get(4).getTeacher()); - Assert.assertEquals("Amelia Stępień", list.get(5).getTeacher()); - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/grades/GradesSummaryTest.kt b/api/src/test/java/io/github/wulkanowy/api/grades/GradesSummaryTest.kt deleted file mode 100644 index 4eff43902..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/grades/GradesSummaryTest.kt +++ /dev/null @@ -1,59 +0,0 @@ -package io.github.wulkanowy.api.grades - -import io.github.wulkanowy.api.StudentAndParentTestCase -import org.junit.Assert.assertEquals -import org.junit.Test - -class GradesSummaryTest : StudentAndParentTestCase() { - - private val std by lazy { GradesSummary(getSnp("OcenyWszystkie-subjects.html")) } - - private val average by lazy { GradesSummary(getSnp("OcenyWszystkie-subjects-average.html")) } - - @Test fun getSummaryTest() { - assertEquals(5, std.getSummary().size) - assertEquals(5, average.getSummary().size) - } - - @Test fun getNameTest() { - assertEquals("Zachowanie", std.getSummary()[0].name) - assertEquals("Praktyka zawodowa", std.getSummary()[1].name) - assertEquals("Metodologia programowania", std.getSummary()[2].name) - assertEquals("Podstawy przedsiębiorczości", std.getSummary()[3].name) - assertEquals("Wychowanie do życia w rodzinie", std.getSummary()[4].name) - - assertEquals("Zachowanie", average.getSummary()[0].name) - assertEquals("Język polski", average.getSummary()[1].name) - assertEquals("Wychowanie fizyczne", average.getSummary()[2].name) - assertEquals("Język angielski", average.getSummary()[3].name) - assertEquals("Wiedza o społeczeństwie", average.getSummary()[4].name) - } - - @Test fun getPredictedRatingTest() { - assertEquals("bardzo dobre", std.getSummary()[0].predicted) - assertEquals("-", std.getSummary()[1].predicted) - assertEquals("bardzo dobry", std.getSummary()[2].predicted) - assertEquals("3/4", std.getSummary()[3].predicted) - assertEquals("-", std.getSummary()[4].predicted) - - assertEquals("bardzo dobre", average.getSummary()[0].predicted) - assertEquals("-", average.getSummary()[1].predicted) - assertEquals("bardzo dobry", average.getSummary()[2].predicted) - assertEquals("4/5", average.getSummary()[3].predicted) - assertEquals("-", average.getSummary()[4].predicted) - } - - @Test fun getFinalRatingTest() { - assertEquals("bardzo dobre", std.getSummary()[0].final) - assertEquals("celujący", std.getSummary()[1].final) - assertEquals("celujący", std.getSummary()[2].final) - assertEquals("dostateczny", std.getSummary()[3].final) - assertEquals("-", std.getSummary()[4].final) - - assertEquals("bardzo dobre", average.getSummary()[0].final) - assertEquals("dobry", average.getSummary()[1].final) - assertEquals("celujący", average.getSummary()[2].final) - assertEquals("bardzo dobry", average.getSummary()[3].final) - assertEquals("-", average.getSummary()[4].final) - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/grades/GradesTest.kt b/api/src/test/java/io/github/wulkanowy/api/grades/GradesTest.kt deleted file mode 100644 index 958364fd1..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/grades/GradesTest.kt +++ /dev/null @@ -1,74 +0,0 @@ -package io.github.wulkanowy.api.grades - -import io.github.wulkanowy.api.StudentAndParentTestCase -import org.junit.Assert -import org.junit.Test - -import org.junit.Assert.* - -class GradesTest : StudentAndParentTestCase() { - - private val filled by lazy { Grades(getSnp("OcenyWszystkie-filled.html")) } - - @Test fun getAllTest() { - Assert.assertEquals(7, filled.getGrades().size) // 2 items are skipped - } - - @Test fun getSubjectTest() { - assertEquals("Zajęcia z wychowawcą", filled.getGrades()[0].subject) - assertEquals("Język angielski", filled.getGrades()[3].subject) - assertEquals("Wychowanie fizyczne", filled.getGrades()[4].subject) - assertEquals("Język polski", filled.getGrades()[5].subject) - } - - @Test fun getValueTest() { - assertEquals("5", filled.getGrades()[0].value) - assertEquals("5", filled.getGrades()[3].value) - assertEquals("1", filled.getGrades()[4].value) - assertEquals("1", filled.getGrades()[5].value) - } - - @Test fun getColorTest() { - assertEquals("000000", filled.getGrades()[0].color) - assertEquals("1289F7", filled.getGrades()[3].color) - assertEquals("6ECD07", filled.getGrades()[4].color) - assertEquals("6ECD07", filled.getGrades()[5].color) - } - - @Test fun getSymbolTest() { - assertEquals("A1", filled.getGrades()[0].symbol) - assertEquals("BW3", filled.getGrades()[3].symbol) - assertEquals("STR", filled.getGrades()[4].symbol) - assertEquals("K", filled.getGrades()[5].symbol) - assertEquals("+Odp", filled.getGrades()[6].symbol) - } - - @Test fun getDescriptionTest() { - assertEquals("Dzień Kobiet w naszej klasie", filled.getGrades()[0].description) - assertEquals("Writing", filled.getGrades()[3].description) - assertEquals("", filled.getGrades()[4].description) - assertEquals("Kordian", filled.getGrades()[5].description) - assertEquals("Kordian", filled.getGrades()[6].description) - } - - @Test fun getWeightTest() { - assertEquals("1,00", filled.getGrades()[0].weight) - assertEquals("3,00", filled.getGrades()[3].weight) - assertEquals("8,00", filled.getGrades()[4].weight) - assertEquals("5,00", filled.getGrades()[5].weight) - } - - @Test fun getDateTest() { - assertEquals("2017-03-21", filled.getGrades()[0].date) - assertEquals("2017-06-02", filled.getGrades()[3].date) - assertEquals("2017-04-02", filled.getGrades()[4].date) - assertEquals("2017-02-06", filled.getGrades()[5].date) - } - - @Test fun getTeacherTest() { - assertEquals("Patryk Maciejewski", filled.getGrades()[0].teacher) - assertEquals("Oliwia Woźniak", filled.getGrades()[3].teacher) - assertEquals("Klaudia Dziedzic", filled.getGrades()[4].teacher) - assertEquals("Amelia Stępień", filled.getGrades()[5].teacher) - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/grades/SubjectsListTest.java b/api/src/test/java/io/github/wulkanowy/api/grades/SubjectsListTest.java deleted file mode 100644 index d32283781..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/grades/SubjectsListTest.java +++ /dev/null @@ -1,82 +0,0 @@ -package io.github.wulkanowy.api.grades; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.util.List; - -import io.github.wulkanowy.api.StudentAndParentTestCase; - -public class SubjectsListTest extends StudentAndParentTestCase { - - private SubjectsList std; - - private SubjectsList average; - - @Before - public void setUp() throws Exception { - std = new SubjectsList(getSnp("OcenyWszystkie-subjects.html")); - average = new SubjectsList(getSnp("OcenyWszystkie-subjects-average.html")); - } - - @Test - public void getAllTest() throws Exception { - Assert.assertEquals(5, std.getAll().size()); - Assert.assertEquals(5, average.getAll().size()); - } - - @Test - public void getNameTest() throws Exception { - List stdList = std.getAll(); - - Assert.assertEquals("Zachowanie", stdList.get(0).getName()); - Assert.assertEquals("Praktyka zawodowa", stdList.get(1).getName()); - Assert.assertEquals("Metodologia programowania", stdList.get(2).getName()); - Assert.assertEquals("Podstawy przedsiębiorczości", stdList.get(3).getName()); - Assert.assertEquals("Wychowanie do życia w rodzinie", stdList.get(4).getName()); - - List averageList = average.getAll(); - Assert.assertEquals("Zachowanie", averageList.get(0).getName()); - Assert.assertEquals("Język polski", averageList.get(1).getName()); - Assert.assertEquals("Wychowanie fizyczne", averageList.get(2).getName()); - Assert.assertEquals("Język angielski", averageList.get(3).getName()); - Assert.assertEquals("Wiedza o społeczeństwie", averageList.get(4).getName()); - } - - @Test - public void getPredictedRatingTest() throws Exception { - List stdList = std.getAll(); - - Assert.assertEquals("bardzo dobre", stdList.get(0).getPredictedRating()); - Assert.assertEquals("-", stdList.get(1).getPredictedRating()); - Assert.assertEquals("bardzo dobry", stdList.get(2).getPredictedRating()); - Assert.assertEquals("3/4", stdList.get(3).getPredictedRating()); - Assert.assertEquals("-", stdList.get(4).getPredictedRating()); - - List averageList = average.getAll(); - Assert.assertEquals("bardzo dobre", averageList.get(0).getPredictedRating()); - Assert.assertEquals("-", averageList.get(1).getPredictedRating()); - Assert.assertEquals("bardzo dobry", averageList.get(2).getPredictedRating()); - Assert.assertEquals("4/5", averageList.get(3).getPredictedRating()); - Assert.assertEquals("-", averageList.get(4).getPredictedRating()); - } - - @Test - public void getFinalRatingTest() throws Exception { - List stdList = std.getAll(); - - Assert.assertEquals("bardzo dobre", stdList.get(0).getFinalRating()); - Assert.assertEquals("celujący", stdList.get(1).getFinalRating()); - Assert.assertEquals("celujący", stdList.get(2).getFinalRating()); - Assert.assertEquals("dostateczny", stdList.get(3).getFinalRating()); - Assert.assertEquals("-", stdList.get(4).getFinalRating()); - - List averageList = average.getAll(); - Assert.assertEquals("bardzo dobre", averageList.get(0).getFinalRating()); - Assert.assertEquals("dobry", averageList.get(1).getFinalRating()); - Assert.assertEquals("celujący", averageList.get(2).getFinalRating()); - Assert.assertEquals("bardzo dobry", averageList.get(3).getFinalRating()); - Assert.assertEquals("-", averageList.get(4).getFinalRating()); - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/homework/HomeworkListTest.kt b/api/src/test/java/io/github/wulkanowy/api/homework/HomeworkListTest.kt deleted file mode 100644 index 5fe53a781..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/homework/HomeworkListTest.kt +++ /dev/null @@ -1,44 +0,0 @@ -package io.github.wulkanowy.api.homework - -import io.github.wulkanowy.api.StudentAndParentTestCase -import org.junit.Assert.assertEquals -import org.junit.Test - -class HomeworkListTest : StudentAndParentTestCase() { - - private val snp by lazy { getSnp("ZadaniaDomowe.html") } - - @Test fun getHomework() { - assertEquals(2, HomeworkList(snp).getHomework().size) - } - - @Test fun getDate() { - assertEquals("2018-08-13", HomeworkList(snp).getHomework("2018-08-13")[0].date) - assertEquals("1970-01-01", HomeworkList(snp).getHomework("1970-01-01")[1].date) - } - - @Test fun getSubject() { - assertEquals("Sieci komputerowe i administrowanie sieciami", HomeworkList(snp).getHomework()[0].subject) - assertEquals("Naprawa komputera", HomeworkList(snp).getHomework()[1].subject) - } - - @Test fun getContent() { - assertEquals("Zadania egzaminacyjne", HomeworkList(snp).getHomework()[0].content) - assertEquals("Test diagnozujący", HomeworkList(snp).getHomework()[1].content) - } - - @Test fun getTeacher() { - assertEquals("Słowacki Juliusz", HomeworkList(snp).getHomework()[0].teacher) - assertEquals("Mickiewicz Adam", HomeworkList(snp).getHomework()[1].teacher) - } - - @Test fun getTeacherSymbol() { - assertEquals("SJ", HomeworkList(snp).getHomework()[0].teacherSymbol) - assertEquals("MA", HomeworkList(snp).getHomework()[1].teacherSymbol) - } - - @Test fun getEntryDate() { - assertEquals("2017-10-16", HomeworkList(snp).getHomework()[0].entryDate) - assertEquals("2017-10-25", HomeworkList(snp).getHomework()[1].entryDate) - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/login/LoginTest.java b/api/src/test/java/io/github/wulkanowy/api/login/LoginTest.java deleted file mode 100644 index 3f16c819b..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/login/LoginTest.java +++ /dev/null @@ -1,136 +0,0 @@ -package io.github.wulkanowy.api.login; - -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.junit.Assert; -import org.junit.Test; -import org.mockito.Mockito; - -import java.util.List; - -import io.github.wulkanowy.api.Client; -import io.github.wulkanowy.api.FixtureHelper; - -public class LoginTest { - - private Document getFixtureAsDocument(String fixtureFileName) { - return Jsoup.parse(getFixtureAsString(fixtureFileName)); - } - - private String getFixtureAsString(String fixtureFileName) { - return FixtureHelper.getAsString(getClass().getResourceAsStream(fixtureFileName)); - } - - private Client getClient(String fixtureFileName) throws Exception { - Document doc = getFixtureAsDocument(fixtureFileName); - - Client client = Mockito.mock(Client.class); - Mockito.when(client.postPageByUrl(Mockito.anyString(), Mockito.any(String[][].class))).thenReturn(doc); - Mockito.when(client.getPageByUrl(Mockito.anyString(), Mockito.anyBoolean())).thenReturn(doc); - - return client; - } - - @Test - public void loginTest() throws Exception { - Client client = getClient("Logowanie-success.html"); - Mockito.when(client.getPageByUrl(Mockito.anyString(), Mockito.anyBoolean())) - .thenReturn(getFixtureAsDocument("Logowanie-error.html")); - Mockito.when(client.postPageByUrl(Mockito.eq(Login.LOGIN_PAGE_URL), Mockito.any(String[][].class))) - .thenReturn(getFixtureAsDocument("Logowanie-certyfikat.html")); - Mockito.doCallRealMethod().when(client).setSymbol(Mockito.anyString()); - Mockito.when(client.getSymbol()).thenCallRealMethod(); - Mockito.when(client.getHost()).thenReturn("fakelog.cf"); - Login login = new Login(client); - login.login("a@a", "pswd", "d123"); - - Assert.assertEquals("d123", client.getSymbol()); - } - - @Test(expected = BadCredentialsException.class) - public void sendWrongCredentialsTest() throws Exception { - Client client = getClient("Logowanie-error.html"); - Mockito.when(client.getPageByUrl(Mockito.anyString(), Mockito.anyBoolean())) - .thenReturn(getFixtureAsDocument("Logowanie-error.html")); // -error.html because it html with form used by - Login login = new Login(client); - - login.sendCredentials("a@a", "pswd"); - } - - @Test - public void sendCredentialsCertificateTest() throws Exception { - Client client = getClient("Logowanie-certyfikat.html"); - Mockito.when(client.getPageByUrl(Mockito.anyString(), Mockito.anyBoolean())) - .thenReturn(getFixtureAsDocument("Logowanie-error.html")); // -error.html because it html with form used by - Login login = new Login(client); - - Assert.assertEquals( - getFixtureAsString("cert-stock.xml").replaceAll("\\s+", ""), - login.sendCredentials("a@a", "passwd") - .select("input[name=wresult]") - .attr("value") - .replaceAll("\\s+", "") - ); - } - - @Test - public void sendCertificateNotDefaultSymbolSuccessTest() throws Exception { - Client client = getClient("Logowanie-success.html"); - Mockito.doCallRealMethod().when(client).setSymbol(Mockito.anyString()); - Mockito.when(client.getSymbol()).thenCallRealMethod(); - Mockito.when(client.getHost()).thenReturn("fakelog.cf"); - Login login = new Login(client); - - login.sendCertificate(getFixtureAsDocument("Logowanie-certyfikat.html"), "wulkanowyschool321"); - - Assert.assertEquals("wulkanowyschool321", client.getSymbol()); - } - - @Test - public void sendCertificateDefaultSymbolSuccessTest() throws Exception { - Client client = getClient("Logowanie-success.html"); - Mockito.doCallRealMethod().when(client).setSymbol(Mockito.anyString()); - Mockito.when(client.getSymbol()).thenCallRealMethod(); - Mockito.when(client.getHost()).thenReturn("fakelog.cf"); - Login login = new Login(client); - - login.sendCertificate(getFixtureAsDocument("Logowanie-certyfikat.html"), "Default"); - - Assert.assertEquals("demo12345", client.getSymbol()); - } - - @Test(expected = AccountPermissionException.class) - public void sendCertificateAccountPermissionTest() throws Exception { - Client client = getClient("Logowanie-brak-dostepu.html"); - - Login login = new Login(client); - - login.sendCertificate(getFixtureAsDocument("Logowanie-certyfikat.html"), "demo123"); - } - - @Test(expected = LoginErrorException.class) - public void sendCertificateLoginErrorTest() throws Exception { - Login login = new Login(getClient("Logowanie-certyfikat.html")); // change to other document - - login.sendCertificate(getFixtureAsDocument("Logowanie-certyfikat.html"), "demo123"); - } - - @Test - public void findSymbolInCertificateTest() throws Exception { - Login login = new Login(getClient("Logowanie-certyfikat.html")); - - String certificate = getFixtureAsString("cert-stock.xml"); - List symbols = login.getSymbolsFromCertificate(certificate); - - Assert.assertEquals("demo12345", login.getLastSymbol(symbols)); - } - - @Test(expected = AccountPermissionException.class) - public void findSymbolInCertificateWithoutSecondInstanceTest() throws Exception { - Login login = new Login(getClient("Logowanie-certyfikat.html")); - - List symbols = login.getSymbolsFromCertificate(getFixtureAsString("cert-no-symbols.xml")); - - login.getLastSymbol(symbols); - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/login/StartPageTest.kt b/api/src/test/java/io/github/wulkanowy/api/login/StartPageTest.kt deleted file mode 100644 index 271b3bb0a..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/login/StartPageTest.kt +++ /dev/null @@ -1,68 +0,0 @@ -package io.github.wulkanowy.api.login - -import io.github.wulkanowy.api.Client -import io.github.wulkanowy.api.FixtureHelper -import io.github.wulkanowy.api.VulcanException -import org.jsoup.Jsoup -import org.jsoup.nodes.Document -import org.junit.Assert.assertEquals -import org.junit.Before -import org.junit.Test -import org.mockito.Mockito -import org.mockito.Mockito.mock - -class StartPageTest { - - private val client: Client = mock(Client::class.java) - - @Before fun setUp() { - Mockito.`when`(client.host).thenReturn("fakelog.cf") - } - - private fun getDoc(name: String): Document = Jsoup.parse(FixtureHelper.getAsString(javaClass.getResourceAsStream(name))) - - @Test fun getSchoolTest() { - assertEquals("534213", StartPage(client).getSchools(getDoc("../Start-std.html"))[0].id) - } - - @Test fun getMultiSchoolTest() { - val schools = StartPage(client).getSchools(getDoc("../Start-multi.html")) - - assertEquals("123456", schools[0].id) - assertEquals("123457", schools[1].id) - } - - @Test fun getSchoolNameTest() { - assertEquals("Uczeń", StartPage(client).getSchools(getDoc("../Start-std.html"))[0].name) - } - - @Test fun getMultiSchoolNameTest() { - val schools = StartPage(client).getSchools(getDoc("../Start-multi.html")) - - assertEquals("GIMBB", schools[0].name) - assertEquals("SPBB", schools[1].name) - } - - @Test(expected = VulcanException::class) - fun getSnpPageUrlWithWrongPage() { - StartPage(client).getSchools(getDoc("../OcenyWszystkie-semester.html")) - } - - @Test - fun getExtractedIDStandardTest() { - assertEquals("123456", StartPage(client) - .getExtractedIdFromUrl("https://uonetplus-opiekun.fakelog.cf/powiat/123456/Start/Index/")) - } - - @Test - fun getExtractedIDDemoTest() { - assertEquals("demo12345", StartPage(client) - .getExtractedIdFromUrl("https://uonetplus-opiekun.fakelog.cf/demoupowiat/demo12345/Start/Index/")) - } - - @Test(expected = VulcanException::class) - fun getExtractedIDNotLoggedTest() { - assertEquals("123", StartPage(client) - .getExtractedIdFromUrl("https://uonetplus.NOTfakelog.cf/powiat/")) - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/messages/MessagesTest.java b/api/src/test/java/io/github/wulkanowy/api/messages/MessagesTest.java deleted file mode 100644 index 14fa4627e..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/messages/MessagesTest.java +++ /dev/null @@ -1,89 +0,0 @@ -package io.github.wulkanowy.api.messages; - -import org.junit.Assert; -import org.junit.Test; -import org.mockito.Mockito; - -import java.util.List; - -import io.github.wulkanowy.api.Client; -import io.github.wulkanowy.api.FixtureHelper; -import io.github.wulkanowy.api.NotLoggedInErrorException; - -public class MessagesTest { - - private Client getFixtureAsString(String fixtureFileName) throws Exception { - Client client = Mockito.mock(Client.class); - Mockito.when(client.getJsonStringByUrl(Mockito.anyString())) - .thenReturn(FixtureHelper.getAsString(getClass().getResourceAsStream(fixtureFileName))); - Mockito.when(client.postJsonStringByUrl(Mockito.anyString(), Mockito.any())) - .thenReturn(FixtureHelper.getAsString(getClass().getResourceAsStream(fixtureFileName))); - return client; - } - - @Test - public void getMessages() throws Exception { - Client client = getFixtureAsString("GetWiadomosciOdebrane.json"); - - Messages messages = new Messages(client); - List messageList = messages.getReceived(); - - Assert.assertEquals(true, messageList.get(1).unread); - Assert.assertEquals("2016-03-15 09:00:00", messageList.get(0).date); - Assert.assertEquals(null, messageList.get(0).content); - Assert.assertEquals("Kowalski Jan", messageList.get(0).sender); - Assert.assertEquals(12347, messageList.get(2).id); - } - - @Test - public void getMessagesEmpty() throws Exception { - Client client = getFixtureAsString("GetWiadomosciUsuniete-empty.json"); - - Messages messages = new Messages(client); - List messageList = messages.getSent(); - - Assert.assertTrue(messageList.isEmpty()); - } - - @Test(expected = NotLoggedInErrorException.class) - public void getMessagesError() throws Exception { - Client client = getFixtureAsString("UndefinedError.txt"); - - Messages messages = new Messages(client); - messages.getDeleted(); - } - - @Test(expected = BadRequestException.class) - public void getMessagesBadRequest() throws Exception { - Client client = getFixtureAsString("PageError.html"); - - Messages messages = new Messages(client); - messages.getDeleted(); - } - - @Test - public void getMessage() throws Exception { - Client client = getFixtureAsString("GetTrescWiadomosci.json"); - - Messages messages = new Messages(client); - Message message = messages.getMessage(123, Messages.RECEIVED_FOLDER); - Assert.assertEquals(12345, message.id); - Assert.assertEquals("Witam, …. \nPozdrawiam Krzysztof Czerkas", message.content); - } - - @Test(expected = NotLoggedInErrorException.class) - public void getMessageError() throws Exception { - Client client = getFixtureAsString("UndefinedError.txt"); - - Messages messages = new Messages(client); - messages.getMessage(321, Messages.SENT_FOLDER); - } - - @Test(expected = BadRequestException.class) - public void getMessageBadRequest() throws Exception { - Client client = getFixtureAsString("PageError.html"); - - Messages messages = new Messages(client); - messages.getMessage(1, Messages.DELETED_FOLDER); - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/mobile/RegisterDevice.kt b/api/src/test/java/io/github/wulkanowy/api/mobile/RegisterDevice.kt deleted file mode 100644 index f67310c88..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/mobile/RegisterDevice.kt +++ /dev/null @@ -1,17 +0,0 @@ -package io.github.wulkanowy.api.mobile - -import io.github.wulkanowy.api.StudentAndParentTestCase -import org.junit.Assert.assertEquals -import org.junit.Test - -class RegisterDeviceTest : StudentAndParentTestCase() { - - @Test - fun getTokenTest() { - val registration = RegisterDevice(getSnp("Rejestruj.html")) - - assertEquals("3S1A1B2C", registration.getToken().token) - assertEquals("Default", registration.getToken().symbol) - assertEquals("1234567", registration.getToken().pin) - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/mobile/RegisteredDevicesListTest.kt b/api/src/test/java/io/github/wulkanowy/api/mobile/RegisteredDevicesListTest.kt deleted file mode 100644 index 3cd8b97cc..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/mobile/RegisteredDevicesListTest.kt +++ /dev/null @@ -1,37 +0,0 @@ -package io.github.wulkanowy.api.mobile - -import io.github.wulkanowy.api.StudentAndParentTestCase -import org.junit.Assert.assertEquals -import org.junit.Test - -class RegisteredDevicesListTest : StudentAndParentTestCase() { - - private val filled = RegisteredDevices(getSnp("DostepMobilny-filled.html")) - - @Test - fun getListTest() { - assertEquals(2, filled.getList().size) - } - - @Test - fun getNameTest() { - assertEquals("google Android SDK built for x86", filled.getList()[0].name) - assertEquals("google (Android SDK) built for x86", filled.getList()[1].name) - } - - @Test - fun getSystemTest() { - assertEquals("Android 8.1.0", filled.getList()[0].system) - assertEquals("Android 8.1.0", filled.getList()[1].system) - } - - @Test - fun getDateTest() { - assertEquals("2018-01-20 22:35:30", filled.getList()[0].date) - } - - @Test - fun getIdTest() { - assertEquals(321, filled.getList()[0].id) - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/notes/AchievementsListTest.java b/api/src/test/java/io/github/wulkanowy/api/notes/AchievementsListTest.java deleted file mode 100644 index 0d7774bb4..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/notes/AchievementsListTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.github.wulkanowy.api.notes; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.util.List; - -import io.github.wulkanowy.api.StudentAndParentTestCase; - -public class AchievementsListTest extends StudentAndParentTestCase { - - private AchievementsList filledAchievementsList; - - private AchievementsList emptyAchievementsList; - - @Before - public void setUp() throws Exception { - filledAchievementsList = new AchievementsList(getSnp("UwagiOsiagniecia-filled.html")); - emptyAchievementsList = new AchievementsList(getSnp("UwagiOsiagniecia-empty.html")); - } - - @Test - public void getAllAchievementsTest() throws Exception { - Assert.assertEquals(2, filledAchievementsList.getAllAchievements().size()); - Assert.assertEquals(0, emptyAchievementsList.getAllAchievements().size()); - } - - @Test - public void getAchievements() throws Exception { - List filledList = filledAchievementsList.getAllAchievements(); - - Assert.assertEquals("I miejsce w ogólnopolskim konkursie ortograficznym", filledList.get(0)); - Assert.assertEquals("III miejsce w ogólnopolskim konkursie plastycznym", filledList.get(1)); - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/notes/NotesListTest.java b/api/src/test/java/io/github/wulkanowy/api/notes/NotesListTest.java deleted file mode 100644 index 304eb01a8..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/notes/NotesListTest.java +++ /dev/null @@ -1,60 +0,0 @@ -package io.github.wulkanowy.api.notes; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.util.List; - -import io.github.wulkanowy.api.StudentAndParentTestCase; - -public class NotesListTest extends StudentAndParentTestCase { - - private NotesList filled; - - private NotesList empty; - - @Before - public void setUp() throws Exception { - filled = new NotesList(getSnp("UwagiOsiagniecia-filled.html")); - empty = new NotesList(getSnp("UwagiOsiagniecia-empty.html")); - } - - @Test - public void getAllNotesTest() throws Exception { - Assert.assertEquals(3, filled.getAllNotes().size()); - Assert.assertEquals(0, empty.getAllNotes().size()); - } - - @Test - public void getDateTest() throws Exception { - List filledList = filled.getAllNotes(); - - Assert.assertEquals("2017-06-06", filledList.get(0).getDate()); - Assert.assertEquals("2016-10-01", filledList.get(2).getDate()); - } - - @Test - public void getTeacherTest() throws Exception { - List filledList = filled.getAllNotes(); - - Assert.assertEquals("Jan Kowalski [JK]", filledList.get(0).getTeacher()); - Assert.assertEquals("Kochański Leszek [KL]", filledList.get(2).getTeacher()); - } - - @Test - public void getCategoryTest() throws Exception { - List filledList = filled.getAllNotes(); - - Assert.assertEquals("Zaangażowanie społeczne", filledList.get(0).getCategory()); - Assert.assertEquals("Zachowanie na lekcji", filledList.get(2).getCategory()); - } - - @Test - public void getContentTest() throws Exception { - List filledList = filled.getAllNotes(); - - Assert.assertEquals("Pomoc przy pikniku charytatywnym", filledList.get(0).getContent()); - Assert.assertEquals("Przeszkadzanie w prowadzeniu lekcji", filledList.get(2).getContent()); - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/school/SchoolInfoTest.java b/api/src/test/java/io/github/wulkanowy/api/school/SchoolInfoTest.java deleted file mode 100644 index 947db9b8f..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/school/SchoolInfoTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package io.github.wulkanowy.api.school; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import io.github.wulkanowy.api.StudentAndParentTestCase; - -public class SchoolInfoTest extends StudentAndParentTestCase { - - private SchoolInfo schoolInfo; - - @Before - public void setUp() throws Exception { - schoolInfo = new SchoolInfo(getSnp("Szkola.html")); - } - - @Test - public void getNameTest() throws Exception { - Assert.assertEquals("Zespół Szkół nr 64", schoolInfo.getSchoolData().getName()); - } - - @Test - public void getAddressTest() throws Exception { - Assert.assertEquals("ul. Wiśniowa 128, 01-234 Rogalowo, Nibylandia", - schoolInfo.getSchoolData().getAddress()); - } - - @Test - public void getPhoneNumberTest() throws Exception { - Assert.assertEquals("55 5555555", schoolInfo.getSchoolData().getPhoneNumber()); - } - - @Test - public void getHeadmasterTest() throws Exception { - Assert.assertEquals("Antoni Sobczyk", schoolInfo.getSchoolData().getHeadmaster()); - } - - @Test - public void getPedagoguesTest() throws Exception { - Assert.assertArrayEquals(new String[]{ - "Zofia Czerwińska [ZC]", - "Aleksander Krzemiński [AK]", - "Karolina Kowalska [KK]", - "Bartek Dąbrowski [BD]" - }, schoolInfo.getSchoolData().getPedagogues()); - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/school/TeachersInfoTest.java b/api/src/test/java/io/github/wulkanowy/api/school/TeachersInfoTest.java deleted file mode 100644 index b0da356b1..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/school/TeachersInfoTest.java +++ /dev/null @@ -1,56 +0,0 @@ -package io.github.wulkanowy.api.school; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.util.List; - -import io.github.wulkanowy.api.StudentAndParentTestCase; - -public class TeachersInfoTest extends StudentAndParentTestCase { - - private TeachersInfo teachersInfo; - - @Before - public void setUp() throws Exception { - teachersInfo = new TeachersInfo(getSnp("Szkola.html")); - } - - @Test - public void getClassNameTest() throws Exception { - Assert.assertEquals("1a", teachersInfo.getTeachersData().getClassName()); - } - - @Test - public void getClassTeacherTest() throws Exception { - Assert.assertArrayEquals(new String[]{ - "Karolina Kowalska [AN]", - "Antoni Sobczyk [AS]" - }, teachersInfo.getTeachersData().getClassTeacher()); - } - - @Test - public void getTeachersDataSubjectsNameTest() throws Exception { - List subjects = teachersInfo.getTeachersData().getSubjects(); - - Assert.assertEquals("Biologia", subjects.get(0).getName()); - Assert.assertEquals("Język angielski", subjects.get(6).getName()); - } - - @Test - public void getTeachersDataSubjectsTeachersTest() throws Exception { - List subjects = teachersInfo.getTeachersData().getSubjects(); - - Assert.assertArrayEquals(new String[]{"Karolina Kowalska [AN]"}, - subjects.get(0).getTeachers()); - Assert.assertEquals("Karolina Kowalska [AN]", - subjects.get(0).getTeachers()[0]); - - Assert.assertArrayEquals(new String[]{ - "Karolina Kowalska [AN]", - "Mateusz Kowal [MK]", - "Amelia Mazur [AM]" - }, subjects.get(6).getTeachers()); - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/timetable/TimetableKtTest.kt b/api/src/test/java/io/github/wulkanowy/api/timetable/TimetableKtTest.kt deleted file mode 100644 index 503d8ede3..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/timetable/TimetableKtTest.kt +++ /dev/null @@ -1,183 +0,0 @@ -package io.github.wulkanowy.api.timetable - -import io.github.wulkanowy.api.StudentAndParentTestCase -import org.junit.Assert.* -import org.junit.Test - -class TimetableKtTest : StudentAndParentTestCase() { - - private val std by lazy { TimetableKt(getSnp("PlanLekcji-std.html")) } - - private val full by lazy { TimetableKt(getSnp("PlanLekcji-full.html")) } - - private val holidays by lazy { TimetableKt(getSnp("PlanLekcji-holidays.html")) } - - @Test fun getTimetableTest() { - assertEquals(32, std.getTimetable().size) - assertEquals(43, full.getTimetable().size) - assertEquals(0, holidays.getTimetable().size) - } - - @Test fun getStartDayDateTest() { - assertEquals("2017-06-19", std.getTimetable()[0].date) - assertEquals("2017-06-20", std.getTimetable()[8].date) - assertEquals("2017-06-21", std.getTimetable()[16].date) - - assertEquals("2017-06-19", full.getTimetable()[0].date) - assertEquals("2017-06-20", full.getTimetable()[10].date) - assertEquals("2017-06-22", full.getTimetable()[30].date) - } - - @Test fun getDayIsFreeTest() { - assertFalse(std.getTimetable().first().freeDayName.isNotEmpty()) - assertFalse(full.getTimetable().last().freeDayName.isNotEmpty()) - } - - @Test fun getDayFreeDayName() { - assertNotEquals("Wakacje", std.getTimetable()[0].freeDayName) - assertNotEquals("Ferie letnie", full.getTimetable()[15].freeDayName) - } - - @Test fun getLessonNumberTest() { - assertEquals(2, std.getTimetable()[1].number) - assertEquals(5, std.getTimetable()[10].number) - - assertEquals(0, full.getTimetable()[0].number) - assertEquals(9, full.getTimetable()[19].number) - } - - @Test fun getLessonSubjectTest() { - assertEquals("Historia", std.getTimetable()[1].subject) - assertEquals("Zajęcia techniczne", std.getTimetable()[17].subject) - assertEquals("Wychowanie fizyczne", std.getTimetable()[7].subject) - - assertEquals("Fizyka", full.getTimetable()[0].subject) - assertEquals("Język angielski", full.getTimetable()[1].subject) - assertEquals("Wychowanie fizyczne", full.getTimetable()[9].subject) - assertEquals("Metodologia programowania", full.getTimetable()[10].subject) - assertEquals("Wychowanie do życia w rodzinie", full.getTimetable()[20].subject) - assertEquals("Wychowanie fizyczne", full.getTimetable()[30].subject) - assertEquals("Uroczyste zakończenie roku szkolnego", full.getTimetable()[37].subject) - assertEquals("Język niemiecki", full.getTimetable()[39].subject) - } - - @Test fun getLessonTeacherTest() { - assertEquals("Bogatka Katarzyna", std.getTimetable()[1].teacher) - assertEquals("Chlebowski Stanisław", std.getTimetable()[17].teacher) - - assertEquals("Kobczyk Iwona", full.getTimetable()[1].teacher) - assertEquals("Bączek Grzegorz", full.getTimetable()[7].teacher) - assertEquals("Nowak Jadwiga", full.getTimetable()[20].teacher) - assertEquals("Nowicka Irena", full.getTimetable()[30].teacher) - assertEquals("Baran Małgorzata", full.getTimetable()[37].teacher) - assertEquals("", full.getTimetable()[38].teacher) - } - - @Test fun getLessonRoomTest() { - assertEquals("", std.getTimetable()[15].room) - - assertEquals("19", full.getTimetable()[0].room) - assertEquals("33", full.getTimetable()[7].room) - assertEquals("32", full.getTimetable()[10].room) - assertEquals("32", full.getTimetable()[18].room) - assertEquals("32", full.getTimetable()[28].room) - assertEquals("G4", full.getTimetable()[30].room) - assertEquals("37", full.getTimetable()[37].room) - } - - @Test fun getLessonDescriptionTest() { - assertEquals("", std.getTimetable()[15].description) - - assertEquals("okienko dla uczniów", full.getTimetable()[7].description) - assertEquals("przeniesiona z lekcji 7, 01.12.2017", full.getTimetable()[11].description) - assertEquals("przeniesiona z lekcji 7, 20.06.2017", full.getTimetable()[12].description) - assertEquals("przeniesiona z lekcji 4, 20.06.2017", full.getTimetable()[13].description) - assertEquals("zastępstwo (poprzednio: Religia)", full.getTimetable()[20].description) - assertEquals("egzamin", full.getTimetable()[29].description) - assertEquals("zastępstwo (poprzednio: Wychowanie fizyczne)", full.getTimetable()[30].description) - assertEquals("", full.getTimetable()[37].description) - assertEquals("", full.getTimetable()[38].description) - assertEquals("poprzednio: Wychowanie fizyczne", full.getTimetable()[39].description) - assertEquals("bez nawiasów (poprzednio: Religia)", full.getTimetable()[40].description) - assertEquals("opis w uwadze bez klasy w spanie", full.getTimetable()[41].description) - assertEquals("poprzednio: Zajęcia z wychowawcą", full.getTimetable()[42].description) - } - - @Test fun getLessonGroupNameTest() { - assertEquals("CH", std.getTimetable()[2].groupName) - assertEquals("JNPW", std.getTimetable()[26].groupName) - - assertEquals("", full.getTimetable()[7].groupName) - assertEquals("zaw2", full.getTimetable()[10].groupName) - assertEquals("wf2", full.getTimetable()[13].groupName) - assertEquals("zaw1", full.getTimetable()[30].groupName) - } - - @Test fun getLessonStartTimeTest() { - assertEquals("08:00", std.getTimetable()[0].startTime) - assertEquals("13:20", std.getTimetable()[12].startTime) - - assertEquals("07:10", full.getTimetable()[0].startTime) - assertEquals("12:20", full.getTimetable()[26].startTime) - } - - @Test fun getLessonEndTimeTest() { - assertEquals("08:45", std.getTimetable()[0].endTime) - assertEquals("14:05", std.getTimetable()[12].endTime) - - assertEquals("07:55", full.getTimetable()[10].endTime) - assertEquals("13:55", full.getTimetable()[36].endTime) - } - - @Test fun getLessonIsEmptyTest() { - assertFalse(std.getTimetable()[9].empty) - - assertFalse(full.getTimetable()[7].empty) - assertFalse(full.getTimetable()[10].empty) - assertFalse(full.getTimetable()[12].empty) - } - - @Test fun getLessonIsDivisionIntoGroupsTest() { - assertTrue(std.getTimetable()[2].divisionIntoGroups) - assertTrue(std.getTimetable()[26].divisionIntoGroups) - - assertFalse(full.getTimetable()[7].divisionIntoGroups) - assertTrue(full.getTimetable()[13].divisionIntoGroups) - assertTrue(full.getTimetable()[30].divisionIntoGroups) - } - - @Test fun getLessonIsPlanningTest() { - assertFalse(std.getTimetable()[30].planning) - - assertFalse(full.getTimetable()[1].planning) - assertTrue(full.getTimetable()[13].planning) - assertTrue(full.getTimetable()[37].planning) - } - - @Test fun getLessonIsRealizedTest() { - assertTrue(std.getTimetable()[15].realized) - - assertTrue(full.getTimetable()[1].realized) - assertTrue(full.getTimetable()[13].realized) - assertFalse(full.getTimetable()[37].realized) - } - - @Test fun getLessonIsMovedOrCanceledTest() { - assertFalse(std.getTimetable()[15].movedOrCanceled) - - assertTrue(full.getTimetable()[7].movedOrCanceled) - assertFalse(full.getTimetable()[13].movedOrCanceled) - assertFalse(full.getTimetable()[37].movedOrCanceled) - } - - @Test fun getLessonIsNewMovedInOrChangedTest() { - assertFalse(std.getTimetable()[15].newMovedInOrChanged) - - assertFalse(full.getTimetable()[1].newMovedInOrChanged) - assertTrue(full.getTimetable()[12].newMovedInOrChanged) - assertTrue(full.getTimetable()[13].newMovedInOrChanged) - assertTrue(full.getTimetable()[30].newMovedInOrChanged) - assertFalse(full.getTimetable()[38].newMovedInOrChanged) - assertTrue(full.getTimetable()[39].newMovedInOrChanged) - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/timetable/TimetableTest.java b/api/src/test/java/io/github/wulkanowy/api/timetable/TimetableTest.java deleted file mode 100644 index 7b3cce6ee..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/timetable/TimetableTest.java +++ /dev/null @@ -1,253 +0,0 @@ -package io.github.wulkanowy.api.timetable; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import io.github.wulkanowy.api.StudentAndParentTestCase; - -public class TimetableTest extends StudentAndParentTestCase { - - private Timetable std; - - private Timetable full; - - private Timetable holidays; - - @Before - public void setUp() throws Exception { - std = new Timetable(getSnp("PlanLekcji-std.html")); - full = new Timetable(getSnp("PlanLekcji-full.html")); - holidays = new Timetable(getSnp("PlanLekcji-holidays.html")); - } - - // Week - - @Test - public void getWeekTableTest() throws Exception { - Assert.assertEquals(5, std.getWeekTable().getDays().size()); - Assert.assertEquals(5, full.getWeekTable().getDays().size()); - Assert.assertEquals(5, holidays.getWeekTable().getDays().size()); - } - - @Test - public void getStartDayDateTest() throws Exception { - Assert.assertEquals("2017-06-19", std.getWeekTable().getStartDayDate()); - Assert.assertEquals("2017-06-19", full.getWeekTable().getStartDayDate()); - Assert.assertEquals("2017-07-31", holidays.getWeekTable().getStartDayDate()); - } - - // ExamDay - - @Test - public void getDayNameTest() throws Exception { - Assert.assertEquals("poniedziałek", std.getWeekTable().getDay(0).getDayName()); - Assert.assertEquals("piątek", std.getWeekTable().getDay(4).getDayName()); - Assert.assertEquals("wtorek", full.getWeekTable().getDay(1).getDayName()); - Assert.assertEquals("czwartek", full.getWeekTable().getDay(3).getDayName()); - Assert.assertEquals("środa", holidays.getWeekTable().getDay(2).getDayName()); - } - - @Test - public void getDayDateTest() throws Exception { - Assert.assertEquals("2017-06-19", std.getWeekTable().getDay(0).getDate()); - Assert.assertEquals("2017-06-23", std.getWeekTable().getDay(4).getDate()); - Assert.assertEquals("2017-06-20", full.getWeekTable().getDay(1).getDate()); - Assert.assertEquals("2017-06-22", full.getWeekTable().getDay(3).getDate()); - Assert.assertEquals("2017-08-02", holidays.getWeekTable().getDay(2).getDate()); - } - - @Test - public void getDayIsFreeTest() throws Exception { - Assert.assertFalse(std.getWeekTable().getDay(0).isFreeDay()); - Assert.assertFalse(full.getWeekTable().getDay(2).isFreeDay()); - Assert.assertTrue(holidays.getWeekTable().getDay(4).isFreeDay()); - } - - @Test - public void getDayFreeDayName() throws Exception { - Assert.assertNotEquals("Wakacje", std.getWeekTable().getDay(0).getFreeDayName()); - Assert.assertNotEquals("Ferie letnie", full.getWeekTable().getDay(1).getFreeDayName()); - Assert.assertNotEquals("Wakacje", holidays.getWeekTable().getDay(2).getFreeDayName()); - Assert.assertEquals("Ferie letnie", holidays.getWeekTable().getDay(4).getFreeDayName()); - } - - @Test - public void getDayLessonsTest() throws Exception { - Assert.assertEquals(8, std.getWeekTable().getDay(0).getLessons().size()); - Assert.assertEquals(14, full.getWeekTable().getDay(2).getLessons().size()); - Assert.assertEquals(14, holidays.getWeekTable().getDay(4).getLessons().size()); - } - - // Lesson - - @Test - public void getLessonNumberTest() throws Exception { - Assert.assertEquals(2, std.getWeekTable().getDay(0).getLesson(1).getNumber()); - Assert.assertEquals(5, std.getWeekTable().getDay(2).getLesson(4).getNumber()); - Assert.assertEquals(0, full.getWeekTable().getDay(0).getLesson(0).getNumber()); - Assert.assertEquals(13, full.getWeekTable().getDay(4).getLesson(13).getNumber()); - Assert.assertEquals(3, holidays.getWeekTable().getDay(3).getLesson(3).getNumber()); - } - - @Test - public void getLessonDayTest() throws Exception { - Assert.assertEquals("2017-06-19", std.getWeekTable().getDay(0).getLesson(1).getDate()); - Assert.assertEquals("2017-06-23", std.getWeekTable().getDay(4).getLesson(4).getDate()); - Assert.assertEquals("2017-06-20", full.getWeekTable().getDay(1).getLesson(6).getDate()); - Assert.assertEquals("2017-06-22", full.getWeekTable().getDay(3).getLesson(3).getDate()); - Assert.assertEquals("2017-08-02", holidays.getWeekTable().getDay(2).getLesson(8).getDate()); - } - - @Test - public void getLessonSubjectTest() throws Exception { - Assert.assertEquals("Historia", std.getWeekTable().getDay(0).getLesson(1).getSubject()); - Assert.assertEquals("Zajęcia techniczne", std.getWeekTable().getDay(2).getLesson(4).getSubject()); - Assert.assertEquals("Wychowanie fizyczne", std.getWeekTable().getDay(1).getLesson(1).getSubject()); - Assert.assertEquals("Język angielski", full.getWeekTable().getDay(0).getLesson(1).getSubject()); - Assert.assertEquals("Wychowanie fizyczne", full.getWeekTable().getDay(0).getLesson(9).getSubject()); - Assert.assertEquals("Wychowanie do życia w rodzinie", full.getWeekTable().getDay(2).getLesson(0).getSubject()); - Assert.assertEquals("Wychowanie fizyczne", full.getWeekTable().getDay(3).getLesson(1).getSubject()); - Assert.assertEquals("Uroczyste zakończenie roku szkolnego", full.getWeekTable().getDay(4).getLesson(0).getSubject()); - Assert.assertEquals("Fizyka", full.getWeekTable().getDay(0).getLesson(0).getSubject()); - Assert.assertEquals("Metodologia programowania", full.getWeekTable().getDay(1).getLesson(0).getSubject()); - Assert.assertEquals("Język niemiecki", full.getWeekTable().getDay(4).getLesson(2).getSubject()); - Assert.assertEquals("", holidays.getWeekTable().getDay(3).getLesson(3).getSubject()); - } - - @Test - public void getLessonTeacherTest() throws Exception { - Assert.assertEquals("Bogatka Katarzyna", std.getWeekTable().getDay(0).getLesson(1).getTeacher()); - Assert.assertEquals("Chlebowski Stanisław", std.getWeekTable().getDay(2).getLesson(4).getTeacher()); - Assert.assertEquals("Kobczyk Iwona", full.getWeekTable().getDay(0).getLesson(1).getTeacher()); - Assert.assertEquals("Bączek Grzegorz", full.getWeekTable().getDay(0).getLesson(7).getTeacher()); - Assert.assertEquals("Nowak Jadwiga", full.getWeekTable().getDay(2).getLesson(0).getTeacher()); - Assert.assertEquals("Nowicka Irena", full.getWeekTable().getDay(3).getLesson(1).getTeacher()); - Assert.assertEquals("Baran Małgorzata", full.getWeekTable().getDay(4).getLesson(0).getTeacher()); - Assert.assertEquals("", full.getWeekTable().getDay(4).getLesson(1).getTeacher()); - Assert.assertEquals("", holidays.getWeekTable().getDay(3).getLesson(3).getTeacher()); - } - - @Test - public void getLessonRoomTest() throws Exception { - Assert.assertEquals("", std.getWeekTable().getDay(3).getLesson(3).getRoom()); - Assert.assertEquals("33", full.getWeekTable().getDay(0).getLesson(7).getRoom()); - Assert.assertEquals("19", full.getWeekTable().getDay(0).getLesson(0).getRoom()); - Assert.assertEquals("32", full.getWeekTable().getDay(1).getLesson(0).getRoom()); - Assert.assertEquals("32", full.getWeekTable().getDay(1).getLesson(8).getRoom()); - Assert.assertEquals("32", full.getWeekTable().getDay(2).getLesson(8).getRoom()); - Assert.assertEquals("G4", full.getWeekTable().getDay(3).getLesson(1).getRoom()); - Assert.assertEquals("37", full.getWeekTable().getDay(4).getLesson(0).getRoom()); - Assert.assertEquals("", holidays.getWeekTable().getDay(3).getLesson(3).getRoom()); - } - - @Test - public void getLessonDescriptionTest() throws Exception { - Assert.assertEquals("", std.getWeekTable().getDay(3).getLesson(3).getDescription()); - Assert.assertEquals("przeniesiona z lekcji 7, 01.12.2017", full.getWeekTable().getDay(1).getLesson(1).getDescription()); - Assert.assertEquals("okienko dla uczniów", full.getWeekTable().getDay(0).getLesson(7).getDescription()); - Assert.assertEquals("przeniesiona z lekcji 7, 20.06.2017", full.getWeekTable().getDay(1).getLesson(2).getDescription()); - Assert.assertEquals("przeniesiona z lekcji 4, 20.06.2017", full.getWeekTable().getDay(1).getLesson(3).getDescription()); - Assert.assertEquals("zastępstwo (poprzednio: Religia)", full.getWeekTable().getDay(2).getLesson(0).getDescription()); - Assert.assertEquals("zastępstwo (poprzednio: Wychowanie fizyczne)", full.getWeekTable().getDay(3).getLesson(1).getDescription()); - Assert.assertEquals("", full.getWeekTable().getDay(4).getLesson(0).getDescription()); - Assert.assertEquals("", full.getWeekTable().getDay(4).getLesson(1).getDescription()); - Assert.assertEquals("bez nawiasów (poprzednio: Religia)", full.getWeekTable().getDay(4).getLesson(3).getDescription()); - Assert.assertEquals("poprzednio: Wychowanie fizyczne", full.getWeekTable().getDay(4).getLesson(2).getDescription()); - Assert.assertEquals("egzamin", full.getWeekTable().getDay(3).getLesson(0).getDescription()); - Assert.assertEquals("", full.getWeekTable().getDay(4).getLesson(1).getDescription()); - Assert.assertEquals("poprzednio: Zajęcia z wychowawcą", full.getWeekTable().getDay(4).getLesson(5).getDescription()); - Assert.assertEquals("opis w uwadze bez klasy w spanie", full.getWeekTable().getDay(4).getLesson(4).getDescription()); - Assert.assertEquals("", holidays.getWeekTable().getDay(3).getLesson(3).getDescription()); - } - - @Test - public void getLessonGroupNameTest() throws Exception { - Assert.assertEquals("CH", std.getWeekTable().getDay(0).getLesson(2).getGroupName()); - Assert.assertEquals("JNPW", std.getWeekTable().getDay(4).getLesson(0).getGroupName()); - Assert.assertEquals("", full.getWeekTable().getDay(0).getLesson(7).getGroupName()); - Assert.assertEquals("zaw2", full.getWeekTable().getDay(1).getLesson(0).getGroupName()); - Assert.assertEquals("wf2", full.getWeekTable().getDay(1).getLesson(3).getGroupName()); - Assert.assertEquals("zaw1", full.getWeekTable().getDay(3).getLesson(1).getGroupName()); - Assert.assertEquals("", holidays.getWeekTable().getDay(3).getLesson(3).getGroupName()); - } - - @Test - public void getLessonStartTimeTest() throws Exception { - Assert.assertEquals("08:00", std.getWeekTable().getDay(0).getLesson(0).getStartTime()); - Assert.assertEquals("14:10", std.getWeekTable().getDay(3).getLesson(7).getStartTime()); - Assert.assertEquals("07:10", full.getWeekTable().getDay(0).getLesson(0).getStartTime()); - Assert.assertEquals("12:20", full.getWeekTable().getDay(2).getLesson(6).getStartTime()); - Assert.assertEquals("12:20", holidays.getWeekTable().getDay(2).getLesson(6).getStartTime()); - } - - @Test - public void getLessonEndTimeTest() throws Exception { - Assert.assertEquals("08:45", std.getWeekTable().getDay(1).getLesson(0).getEndTime()); - Assert.assertEquals("12:15", std.getWeekTable().getDay(2).getLesson(4).getEndTime()); - Assert.assertEquals("07:55", full.getWeekTable().getDay(1).getLesson(0).getEndTime()); - Assert.assertEquals("19:00", full.getWeekTable().getDay(3).getLesson(13).getEndTime()); - Assert.assertEquals("19:00", holidays.getWeekTable().getDay(3).getLesson(13).getEndTime()); - } - - @Test - public void getLessonIsEmptyTest() throws Exception { - Assert.assertFalse(std.getWeekTable().getDay(1).getLesson(4).isEmpty()); - Assert.assertTrue(std.getWeekTable().getDay(3).getLesson(7).isEmpty()); - Assert.assertFalse(full.getWeekTable().getDay(1).getLesson(1).isEmpty()); - Assert.assertFalse(full.getWeekTable().getDay(1).getLesson(2).isEmpty()); - Assert.assertFalse(full.getWeekTable().getDay(0).getLesson(7).isEmpty()); - Assert.assertTrue(full.getWeekTable().getDay(2).getLesson(9).isEmpty()); - Assert.assertTrue(holidays.getWeekTable().getDay(0).getLesson(5).isEmpty()); - Assert.assertTrue(holidays.getWeekTable().getDay(4).getLesson(13).isEmpty()); - } - - @Test - public void getLessonIsDivisionIntoGroupsTest() throws Exception { - Assert.assertTrue(std.getWeekTable().getDay(0).getLesson(2).isDivisionIntoGroups()); - Assert.assertTrue(std.getWeekTable().getDay(4).getLesson(0).isDivisionIntoGroups()); - Assert.assertFalse(full.getWeekTable().getDay(0).getLesson(7).isDivisionIntoGroups()); - Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(3).isDivisionIntoGroups()); - Assert.assertTrue(full.getWeekTable().getDay(3).getLesson(1).isDivisionIntoGroups()); - Assert.assertFalse(holidays.getWeekTable().getDay(3).getLesson(3).isDivisionIntoGroups()); - } - - @Test - public void getLessonIsPlanningTest() throws Exception { - Assert.assertFalse(std.getWeekTable().getDay(4).getLesson(4).isPlanning()); - Assert.assertFalse(full.getWeekTable().getDay(0).getLesson(1).isPlanning()); - Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(3).isPlanning()); - Assert.assertTrue(full.getWeekTable().getDay(4).getLesson(0).isPlanning()); - Assert.assertFalse(holidays.getWeekTable().getDay(3).getLesson(3).isPlanning()); - } - - @Test - public void getLessonIsRealizedTest() throws Exception { - Assert.assertTrue(std.getWeekTable().getDay(3).getLesson(3).isRealized()); - Assert.assertTrue(full.getWeekTable().getDay(0).getLesson(1).isRealized()); - Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(3).isRealized()); - Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(0).isRealized()); - Assert.assertFalse(holidays.getWeekTable().getDay(3).getLesson(3).isRealized()); - } - - @Test - public void getLessonIsMovedOrCanceledTest() throws Exception { - Assert.assertFalse(std.getWeekTable().getDay(3).getLesson(3).isMovedOrCanceled()); - Assert.assertTrue(full.getWeekTable().getDay(0).getLesson(7).isMovedOrCanceled()); - Assert.assertFalse(full.getWeekTable().getDay(1).getLesson(3).isMovedOrCanceled()); - Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(0).isMovedOrCanceled()); - Assert.assertFalse(holidays.getWeekTable().getDay(3).getLesson(3).isMovedOrCanceled()); - } - - @Test - public void getLessonIsNewMovedInOrChangedTest() throws Exception { - Assert.assertFalse(std.getWeekTable().getDay(3).getLesson(3).isNewMovedInOrChanged()); - Assert.assertFalse(full.getWeekTable().getDay(0).getLesson(1).isNewMovedInOrChanged()); - Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(2).isNewMovedInOrChanged()); - Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(3).isNewMovedInOrChanged()); - Assert.assertTrue(full.getWeekTable().getDay(3).getLesson(1).isNewMovedInOrChanged()); - Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(1).isNewMovedInOrChanged()); - Assert.assertTrue(full.getWeekTable().getDay(4).getLesson(2).isNewMovedInOrChanged()); - Assert.assertFalse(holidays.getWeekTable().getDay(3).getLesson(3).isNewMovedInOrChanged()); - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/user/BasicInformationTest.java b/api/src/test/java/io/github/wulkanowy/api/user/BasicInformationTest.java deleted file mode 100644 index 6b729c95a..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/user/BasicInformationTest.java +++ /dev/null @@ -1,106 +0,0 @@ -package io.github.wulkanowy.api.user; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import io.github.wulkanowy.api.StudentAndParentTestCase; - -public class BasicInformationTest extends StudentAndParentTestCase { - - private BasicInformation basicInformation; - - @Before - public void setUp() throws Exception { - basicInformation = new BasicInformation(getSnp("UczenDanePodstawowe.html")); - } - - @Test - public void getPersonalFirstNameTest() throws Exception { - Assert.assertEquals("Maria", basicInformation.getPersonalData().getFirstName()); - } - - @Test - public void getPersonalSurnameTest() throws Exception { - Assert.assertEquals("Kamińska", basicInformation.getPersonalData().getSurname()); - } - - @Test - public void getPersonalFirstAndLastNameTest() throws Exception { - Assert.assertEquals("Maria Kamińska", - basicInformation.getPersonalData().getFirstAndLastName()); - } - - @Test - public void getPersonalNameTest() throws Exception { - Assert.assertEquals("Maria Aneta Kamińska", basicInformation.getPersonalData().getName()); - } - - @Test - public void getPersonalDateAndBirthPlaceTest() throws Exception { - Assert.assertEquals("01.01.1900, Warszawa", - basicInformation.getPersonalData().getDateAndBirthPlace()); - } - - @Test - public void getPersonalPeselTest() throws Exception { - Assert.assertEquals("12345678900", basicInformation.getPersonalData().getPesel()); - } - - @Test - public void getPersonalGenderTest() throws Exception { - Assert.assertEquals("Kobieta", basicInformation.getPersonalData().getGender()); - } - - @Test - public void isPersonalPolishCitizenshipTest() throws Exception { - Assert.assertTrue(basicInformation.getPersonalData().isPolishCitizenship()); - } - - @Test - public void getPersonalFamilyNameTest() throws Exception { - Assert.assertEquals("Nowak", basicInformation.getPersonalData().getFamilyName()); - } - - @Test - public void getPersonalParentsNames() throws Exception { - Assert.assertEquals("Gabriela, Kamil", - basicInformation.getPersonalData().getParentsNames()); - } - - @Test - public void getBasicAddressTest() throws Exception { - Assert.assertEquals("ul. Sportowa 16, 00-123 Warszawa", - basicInformation.getAddressData().getAddress()); - } - - @Test - public void getBasicRegisteredAddressTest() throws Exception { - Assert.assertEquals("ul. Sportowa 17, 00-123 Warszawa", - basicInformation.getAddressData().getRegisteredAddress()); - } - - @Test - public void getBasicCorrespondenceAddressTest() throws Exception { - Assert.assertEquals("ul. Sportowa 18, 00-123 Warszawa", - basicInformation.getAddressData().getCorrespondenceAddress()); - } - - @Test - public void getContactPhoneNumberTest() throws Exception { - Assert.assertEquals("005554433", - basicInformation.getContactDetails().getPhoneNumber()); - } - - @Test - public void getContactCellPhoneNumberTest() throws Exception { - Assert.assertEquals("555444333", - basicInformation.getContactDetails().getCellPhoneNumber()); - } - - @Test - public void getContactEmailTest() throws Exception { - Assert.assertEquals("wulkanowy@example.null", - basicInformation.getContactDetails().getEmail()); - } -} diff --git a/api/src/test/java/io/github/wulkanowy/api/user/FamilyInformationTest.java b/api/src/test/java/io/github/wulkanowy/api/user/FamilyInformationTest.java deleted file mode 100644 index b4f858ece..000000000 --- a/api/src/test/java/io/github/wulkanowy/api/user/FamilyInformationTest.java +++ /dev/null @@ -1,59 +0,0 @@ -package io.github.wulkanowy.api.user; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.util.List; - -import io.github.wulkanowy.api.StudentAndParentTestCase; - -public class FamilyInformationTest extends StudentAndParentTestCase { - - private FamilyInformation familyInformation; - - @Before - public void setUp() throws Exception { - familyInformation = new FamilyInformation(getSnp("UczenDanePodstawowe.html")); - } - - @Test - public void getFamilyMembers() throws Exception { - Assert.assertEquals(2, familyInformation.getFamilyMembers().size()); - } - - @Test - public void getNameTest() throws Exception { - List list = familyInformation.getFamilyMembers(); - Assert.assertEquals("Marianna Pająk", list.get(0).getName()); - Assert.assertEquals("Dawid Świątek", list.get(1).getName()); - } - - @Test - public void getKinshipTest() throws Exception { - List list = familyInformation.getFamilyMembers(); - Assert.assertEquals("matka", list.get(0).getKinship()); - Assert.assertEquals("ojciec", list.get(1).getKinship()); - } - - @Test - public void getAddressTest() throws Exception { - List list = familyInformation.getFamilyMembers(); - Assert.assertEquals("ul. Sportowa 16, 00-123 Warszawa", list.get(0).getAddress()); - Assert.assertEquals("ul. Sportowa 18, 00-123 Warszawa", list.get(1).getAddress()); - } - - @Test - public void getTelephonesTest() throws Exception { - List list = familyInformation.getFamilyMembers(); - Assert.assertEquals("555111222", list.get(0).getTelephones()); - Assert.assertEquals("555222111", list.get(1).getTelephones()); - } - - @Test - public void getEmailTest() throws Exception { - List list = familyInformation.getFamilyMembers(); - Assert.assertEquals("wulkanowy@example.null", list.get(0).getEmail()); - Assert.assertEquals("wulkanowy@example.null", list.get(1).getEmail()); - } -} diff --git a/api/src/test/resources/io/github/wulkanowy/api/OcenyWszystkie-semester.html b/api/src/test/resources/io/github/wulkanowy/api/OcenyWszystkie-semester.html deleted file mode 100644 index dc7c6c3b6..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/OcenyWszystkie-semester.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Witryna ucznia i rodzica – Oceny - - -
-

Oceny

-
-
- - -
-
-
-
wersja: 17.05.0000.24042
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/Start-multi.html b/api/src/test/resources/io/github/wulkanowy/api/Start-multi.html deleted file mode 100644 index 98d385ee8..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/Start-multi.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Uonet+ - - -
-
-
- -
-
-
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/Start-std.html b/api/src/test/resources/io/github/wulkanowy/api/Start-std.html deleted file mode 100644 index 574bd9b99..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/Start-std.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Uonet+ - - -
- -
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/WitrynaUczniaIRodzica.html b/api/src/test/resources/io/github/wulkanowy/api/WitrynaUczniaIRodzica.html deleted file mode 100644 index 66e2942fd..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/WitrynaUczniaIRodzica.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - Witryna ucznia i rodzica – Strona główna - - -
    -
  • - - -
  • -
  • - - -
  • -
- -
wersja: 17.09.0008.26553
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/attendance/Frekwencja-excellent.html b/api/src/test/resources/io/github/wulkanowy/api/attendance/Frekwencja-excellent.html deleted file mode 100644 index 5eaf50dfe..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/attendance/Frekwencja-excellent.html +++ /dev/null @@ -1,408 +0,0 @@ - - - - - Witryna ucznia i rodzica – Frekwencja - - - -
-

Frekwencja

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Lekcjaponiedziałek
31.08.2015
wtorek
01.09.2015
środa
02.09.2015
czwartek
03.09.2015
piątek
04.09.2015
0
1 -
- Uroczyste rozpoczęcie roku szkolnego 2015/2016 -
-
-
- Wychowanie do życia w rodzinie -
-
-
- Urządzenia techniki komputerowej -
-
2 -
- Język angielski -
-
-
- Język niemiecki -
-
-
- Urządzenia techniki komputerowej -
-
3 -
- Systemy operacyjne -
-
-
- Chemia -
-
-
- Urządzenia techniki komputerowej -
-
4 -
- Systemy operacyjne -
-
-
- Geografia -
-
-
- Urządzenia techniki komputerowej -
-
5 -
- Tworzenie stron internetowych -
-
-
- Matematyka -
-
-
- Język polski -
-
6 -
- Tworzenie stron internetowych -
-
-
- Fizyka -
-
-
- Matematyka -
-
7 -
- Wychowanie fizyczne -
-
-
- Język polski -
-
-
- Historia -
-
8 -
- Wychowanie fizyczne -
-
9
10
11
12
13
-

Statystyki

-
- - -
-

Frekwencja od początku roku szkolnego: 100,00%

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IXXXIXIIIIIIIIIVVVIVIIVIIIRazem
Obecność14214313911013175126139921141211
Nieobecność nieusprawiedliwiona
Nieobecność usprawiedliwiona
Nieobecność z przyczyn szkolnych
Spóźnienie nieusprawiedliwione
Spóźnienie usprawiedliwione
Zwolnienie
-
-
wersja: 17.07.0002.24480
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/attendance/Frekwencja-full.html b/api/src/test/resources/io/github/wulkanowy/api/attendance/Frekwencja-full.html deleted file mode 100644 index aa9953053..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/attendance/Frekwencja-full.html +++ /dev/null @@ -1,498 +0,0 @@ - - - - - Witryna ucznia i rodzica – Frekwencja - - - -
-

Frekwencja

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Lekcjaponiedziałek
05.09.2016
wtorek
06.09.2016
środa
07.09.2016
czwartek
08.09.2016
piątek
09.09.2016
0
1 -
- Urządzenia techniki komputerowej -
-
-
- Multimedia i grafika komputerowa -
-
-
- Użytkowanie urządzeń peryferyjnych komputera -
-
-
- Religia -
-
2 -
- Urządzenia techniki komputerowej -
-
-
- Język niemiecki -
-
-
- Użytkowanie urządzeń peryferyjnych komputera -
-
-
- Język niemiecki -
-
-
- Sieci komputerowe i administrowanie sieciami -
-
3 -
- Urządzenia techniki komputerowej -
-
-
- Fizyka -
-
-
- Historia -
-
-
- Wychowanie fizyczne -
-
-
- Wiedza o kulturze -
-
4 -
- Naprawa komputera -
-
-
- Wychowanie fizyczne -
-
-
- Język angielski -
-
-
- Wychowanie fizyczne -
-
-
- Język polski -
-
5 -
- Sieci komputerowe i administrowanie sieciami -
-
-
- Metodologia programowania -
-
-
- Urządzenia techniki komputerowej -
-
-
- Matematyka -
-
-
- Metodologia programowania -
-
6 -
- Język niemiecki -
-
-
- Sieci komputerowe i administrowanie sieciami -
-
-
- Język polski -
-
-
- Podstawy przedsiębiorczości -
-
-
- Matematyka -
-
7 -
- Fizyka -
-
-
- Język polski -
-
-
- Systemy operacyjne -
-
-
- Zajęcia z wychowawcą -
-
-
- Religia -
-
8 -
- Naprawa komputera -
-
-
- Systemy operacyjne -
-
-
- Urządzenia techniki komputerowej -
-
-
- Zajęcia z wychowawcą -
-
9
10
11
12
13
-

Statystyki

-
- - -
-

Frekwencja od początku roku szkolnego: 80,94%

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IXXXIXIIIIIIIIIVVVIVIIVIIIRazem
Obecność1351031085437100339010359822
Nieobecność nieusprawiedliwiona246
Nieobecność usprawiedliwiona627293044161327192
Nieobecność z przyczyn szkolnych77
Spóźnienie nieusprawiedliwione41222112
Spóźnienie usprawiedliwione11
Zwolnienie112
-
-
wersja: 17.07.0002.24480
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/exams/Sprawdziany-empty.html b/api/src/test/resources/io/github/wulkanowy/api/exams/Sprawdziany-empty.html deleted file mode 100644 index bf1032b4d..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/exams/Sprawdziany-empty.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - Witryna ucznia i rodzica – Terminarz sprawdzianów - - -
-

Sprawdziany

-

Tydzień 30.04.2018 - 06.05.2018

-

Nie zaplanowano żadnych sprawdzianów na wybrany tydzień

- -
-
wersja: 17.09.0009.26859
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/exams/Sprawdziany-one-per-day.html b/api/src/test/resources/io/github/wulkanowy/api/exams/Sprawdziany-one-per-day.html deleted file mode 100644 index 81b3052b2..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/exams/Sprawdziany-one-per-day.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - Witryna ucznia i rodzica – Terminarz sprawdzianów - - -
-

Sprawdziany

-

Tydzień 23.10.2017 - 29.10.2017

-
-

poniedziałek, 23.10.2017

-
-
-
Przedmiot i grupa:
-
Sieci komputerowe 3Ti|zaw2
-
-
-
Rodzaj sprawdzianu:
-
Sprawdzian
-
-
-
Opis:
-
Łącza danych
-
-
-
Nauczyciel i data wpisu:
-
Adam Wiśniewski [AW], 16.10.2017
-
-
-
-
-

wtorek, 24.10.2017

-
-
-
Przedmiot i grupa:
-
Język angielski 3Ti|J1
-
-
-
Rodzaj sprawdzianu:
-
Sprawdzian
-
-
-
Opis:
-
Czasy teraźniejsze
-
-
-
Nauczyciel i data wpisu:
-
Natalia Nowak [NN], 17.10.2017
-
-
-
-
-

środa, 25.10.2017

-
-
-
Przedmiot i grupa:
-
Język angielski 3Ti|J2
-
-
-
Rodzaj sprawdzianu:
-
Sprawdzian
-
-
-
Opis:
-
słownictwo (zdrowie)
-
-
-
Nauczyciel i data wpisu:
-
Natalia Nowak [NN], 17.10.2017
-
-
-
-
-
Przedmiot i grupa:
-
Metodologia programowania 3Ti|zaw1
-
-
-
Rodzaj sprawdzianu:
-
Kartkówka
-
-
-
Opis:
-
programowanie obiektowe
-
-
-
Nauczyciel i data wpisu:
-
Małgorzata Nowacka [MN], 16.10.2017
-
-
-
-
-

czwartek, 26.10.2017

-
-
-
Przedmiot i grupa:
-
Język polski 3Ti
-
-
-
Rodzaj sprawdzianu:
-
Sprawdzian
-
-
-
Opis:
-
Dwudziestolecie
-
-
-
Nauczyciel i data wpisu:
-
Czerwieńska Agata [CA], 16.10.2017
-
-
-
-
-

piątek, 27.10.2017

-
-
-
Przedmiot i grupa:
-
Metodologia programowania 3Ti|zaw2
-
-
-
Rodzaj sprawdzianu:
-
Sprawdzian
-
-
-
Opis:
-
-
-
-
Nauczyciel i data wpisu:
-
Małgorzata Nowacka [MN], 16.10.2017
-
-
-
-
-
- -
-
wersja: 17.08.0001.24874
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/grades/OcenyWszystkie-filled.html b/api/src/test/resources/io/github/wulkanowy/api/grades/OcenyWszystkie-filled.html deleted file mode 100644 index d0cdb6643..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/grades/OcenyWszystkie-filled.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - Witryna ucznia i rodzica – Oceny - - -
-

Oceny

-
-
- - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PrzedmiotOcena cząstkowaOpisWagaDataNauczyciel
ZachowanieBrak ocen
Zajęcia z wychowawcą - 5 - A1, Dzień Kobiet w naszej klasie1,0021.03.2017Patryk Maciejewski
Edukacja dla bezpieczeństwa - 4- - S1, PIERWSZA POMOC I RESUSCYTACJA5,0031.03.2017Weronika Ratajczak
Fizyka - 2 - O, Odpowiedź3,0025.06.2017Jakub Michalak
Język angielski - 5 - BW3, Writing3,0002.06.2017Oliwia Woźniak
Wiedza o społeczeństwieBrak ocen
Wychowanie fizyczne1STR8,0002.04.2017Klaudia Dziedzic
Język polski1K, Kordian5,0006.02.2017Amelia Stępień
Język polski5+Odp, Kordian5,0011.05.2017Amelia Stępień
-
-
wersja: 17.02.0000.23328
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/grades/OcenyWszystkie-subjects-average.html b/api/src/test/resources/io/github/wulkanowy/api/grades/OcenyWszystkie-subjects-average.html deleted file mode 100644 index 023b5405e..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/grades/OcenyWszystkie-subjects-average.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - Witryna ucznia i rodzica – Oceny - - -
-

Oceny

-
-
- - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PrzedmiotOceny cząstkoweŚredniaPrzewidywana ocena rocznaOcena roczna
ZachowanieBrak ocen-bardzo dobrebardzo dobre
Język polski03,53-dobry
Wychowanie fizyczne05,05bardzo dobrycelujący
Język angielski04,44/5bardzo dobry
Wiedza o społeczeństwieBrak ocen---
-
-
wersja: 17.02.0000.23328
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/grades/OcenyWszystkie-subjects.html b/api/src/test/resources/io/github/wulkanowy/api/grades/OcenyWszystkie-subjects.html deleted file mode 100644 index 0f6da4148..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/grades/OcenyWszystkie-subjects.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - Witryna ucznia i rodzica – Oceny - - -
-

Oceny

-
-
- - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PrzedmiotOceny cząstkowePrzewidywana ocena rocznaOcena roczna
Zachowanie-bardzo dobrebardzo dobre
Praktyka zawodowa--celujący
Metodologia programowania-bardzo dobrycelujący
Podstawy przedsiębiorczości-3/4dostateczny
Wychowanie do życia w rodzinie---
-
-
wersja: 17.05.0000.24042
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/homework/ZadaniaDomowe.html b/api/src/test/resources/io/github/wulkanowy/api/homework/ZadaniaDomowe.html deleted file mode 100644 index ec68d2abd..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/homework/ZadaniaDomowe.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - Witryna ucznia i rodzica – Zadania domowe - - -
-

Zadania domowe

- -

poniedziałek, 23.10.2017

- -
-
-
Przedmiot:
-
Sieci komputerowe i administrowanie sieciami
-
-
-
Opis:
-
Zadania egzaminacyjne -
-
-
-
Nauczyciel i data wpisu:
-
Słowacki Juliusz [SJ], 16.10.2017
-
-
-
-
-
Przedmiot:
-
Naprawa komputera
-
-
-
Opis:
-
Test diagnozujący
-
-
-
Nauczyciel i data wpisu:
-
Mickiewicz Adam [MA], 25.10.2017
-
-
- -
-
wersja: 18.02.0007.28151
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-brak-dostepu.html b/api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-brak-dostepu.html deleted file mode 100644 index 2911f1d24..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-brak-dostepu.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - Logowanie - - -
-
- Adres example@wulkanowy.io nie został zarejestrowany w dzienniku uczniowskim jako adres rodzica, bądź ucznia. - Jeśli jesteś rodzicem (prawnym opiekunem) ucznia (lub uczniem) szkoły korzystającej z dziennika „UONET +” udaj się do - wychowawcy i poproś o wprowadzenie Twojego adresu e-mail do Twoich danych. -
-
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-certyfikat.html b/api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-certyfikat.html deleted file mode 100644 index f53a34856..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-certyfikat.html +++ /dev/null @@ -1,17 +0,0 @@ - - - Working... - - -
- - - - -
- - - diff --git a/api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-error.html b/api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-error.html deleted file mode 100644 index afb044d7f..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-error.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - Logowanie (demo123) - - -
-
-
-

Logowanie

-
-
- Zła nazwa użytkownika lub hasło -
-
-
- - - diff --git a/api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-notLoggedIn.html b/api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-notLoggedIn.html deleted file mode 100644 index f961bf82c..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-notLoggedIn.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Dziennik UONET+ - - -
-
-
-
-
- - Zaloguj się -
-
-
-
Uonet+ wersja 17.09.0007.26300
-
-
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-success.html b/api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-success.html deleted file mode 100644 index f35e68668..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/login/Logowanie-success.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - Uonet+ - - -
-
-
- example@wulkanowy.io (wyloguj) -
-
- -
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/login/PrzerwaTechniczna.html b/api/src/test/resources/io/github/wulkanowy/api/login/PrzerwaTechniczna.html deleted file mode 100644 index 062f9b60c..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/login/PrzerwaTechniczna.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Przerwa techniczna - - -
-
-
-

Przerwa techniczna

-

Aktualnie trwają prace konserwacyjne. Witryna będzie dostępna za kilka minut.

> -
- -
-
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/login/cert-no-symbols.xml b/api/src/test/resources/io/github/wulkanowy/api/login/cert-no-symbols.xml deleted file mode 100644 index ca14bdf55..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/login/cert-no-symbols.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - Default - - - - - - diff --git a/api/src/test/resources/io/github/wulkanowy/api/login/cert-stock.xml b/api/src/test/resources/io/github/wulkanowy/api/login/cert-stock.xml deleted file mode 100644 index 31aa19b27..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/login/cert-stock.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - Default - demo12345 - incorrect value - warszawa - asdf - asdfsdf - - - - - - diff --git a/api/src/test/resources/io/github/wulkanowy/api/messages/GetTrescWiadomosci.json b/api/src/test/resources/io/github/wulkanowy/api/messages/GetTrescWiadomosci.json deleted file mode 100644 index 1ba54a32c..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/messages/GetTrescWiadomosci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "success": true, - "data": { - "Id": 12345, - "Tresc": "Witam, …. \nPozdrawiam Krzysztof Czerkas" - } -} diff --git a/api/src/test/resources/io/github/wulkanowy/api/messages/GetWiadomosciOdebrane.json b/api/src/test/resources/io/github/wulkanowy/api/messages/GetWiadomosciOdebrane.json deleted file mode 100644 index 326390ed6..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/messages/GetWiadomosciOdebrane.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "success": true, - "data": [ - { - "Nieprzeczytana": false, - "Data": "2016-03-15 09:00:00", - "Tresc": null, - "Temat": "Wycieczka", - "NadawcaNazwa": "Kowalski Jan", - "IdWiadomosci": 1234, - "IdNadawca": 4321, - "Id": 12345 - }, - { - "Nieprzeczytana": true, - "Data": "2016-04-20 22:00:00", - "Tresc": null, - "Temat": "\"Dzień dobrego słowa\"", - "NadawcaNazwa": "Pazura Agnieszka", - "IdWiadomosci": 1235, - "IdNadawca": 12, - "Id": 12346 - }, - { - "Nieprzeczytana": false, - "Data": "2016-04-29 10:00:00", - "Tresc": null, - "Temat": "Rozdajemy oceny celujące", - "NadawcaNazwa": "Kowalski Jan", - "IdWiadomosci": 1236, - "IdNadawca": 4321, - "Id": 12347 - } - ] -} diff --git a/api/src/test/resources/io/github/wulkanowy/api/messages/GetWiadomosciUsuniete-empty.json b/api/src/test/resources/io/github/wulkanowy/api/messages/GetWiadomosciUsuniete-empty.json deleted file mode 100644 index 36f89aa1e..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/messages/GetWiadomosciUsuniete-empty.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "success": true, - "data": [] -} diff --git a/api/src/test/resources/io/github/wulkanowy/api/messages/PageError.html b/api/src/test/resources/io/github/wulkanowy/api/messages/PageError.html deleted file mode 100644 index ae976af1f..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/messages/PageError.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - Błąd strony - - - -
- -
-
- Wystąpił nieoczekiwany błąd -
-
Wystąpił błąd aplikacji. Prosimy zalogować się ponownie. Jeśli problem będzie się powtarzał, prosimy o kontakt z serwisem.
-
-
-
- -
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/messages/UndefinedError.txt b/api/src/test/resources/io/github/wulkanowy/api/messages/UndefinedError.txt deleted file mode 100644 index c8d55a96c..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/messages/UndefinedError.txt +++ /dev/null @@ -1 +0,0 @@ -The custom error module does not recognize this error. \ No newline at end of file diff --git a/api/src/test/resources/io/github/wulkanowy/api/mobile/DostepMobilny-filled.html b/api/src/test/resources/io/github/wulkanowy/api/mobile/DostepMobilny-filled.html deleted file mode 100644 index 9fbfd4039..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/mobile/DostepMobilny-filled.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - Witryna ucznia i rodzica – dostęp mobilny - - - -
-

Dostęp mobilny

- -
-

Zarejestrowane urządzenia

-
- - - - - - - - - - - - - - - - - - - - -
UrządzenieData rejestracji
google Android SDK built for x86 (Android 8.1.0)20.01.2018 godz: 22:35:30 - Wyrejestruj -
google (Android SDK) built for x86 (Android 8.1.0)20.01.2018 godz: 22:35:30 - Wyrejestruj -
-
- -
wersja: 18.01.0001.27311
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/mobile/Rejestruj.html b/api/src/test/resources/io/github/wulkanowy/api/mobile/Rejestruj.html deleted file mode 100644 index 15d08d07c..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/mobile/Rejestruj.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Witryna ucznia i rodzica – Rejestracja urządzenia mobilnego - - - -
-

Rejestracja urządzenia mobilnego

-
- Za pomocą aplikacji "Dzienniczek+" zeskanuj kod QR. - Kod QR - Token: 3S1A1B2C - Symbol: Default - PIN: 1234567 -
-
-
wersja: 18.01.0001.27311
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/notes/UwagiOsiagniecia-empty.html b/api/src/test/resources/io/github/wulkanowy/api/notes/UwagiOsiagniecia-empty.html deleted file mode 100644 index b15bb6e70..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/notes/UwagiOsiagniecia-empty.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - Witryna ucznia i rodzica – Uwagi i osiągnięcia - - -
-
-

Uwagi

-

Brak informacji do wyświetlenia

-
-
-

Osiągnięcia

-

Brak informacji do wyświetlenia

-
-
-
wersja: 17.05.0000.24042
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/notes/UwagiOsiagniecia-filled.html b/api/src/test/resources/io/github/wulkanowy/api/notes/UwagiOsiagniecia-filled.html deleted file mode 100644 index 50e740585..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/notes/UwagiOsiagniecia-filled.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - Witryna ucznia i rodzica – Uwagi i osiągnięcia - - -
-
-

Uwagi

-

06.06.2017

-
-
-
Nauczyciel:
-
Jan Kowalski [JK]
-
-
-
Kategoria:
-
Zaangażowanie społeczne
-
-
-
Treść:
-
Pomoc przy pikniku charytatywnym
-
-
-

01.12.2016

-
-
-
Nauczyciel:
-
Ochocka Zofia [PZ]
-
-
-
Kategoria:
-
Reprezentowanie szkoły
-
-
-
Treść:
-
Udział w przygotowaniu spektaklu
-
-
-

01.10.2016

-
-
-
Nauczyciel:
-
Kochański Leszek [KL]
-
-
-
Kategoria:
-
Zachowanie na lekcji
-
-
-
Treść:
-
Przeszkadzanie w prowadzeniu lekcji
-
-
-
-
-

Osiągnięcia

-
I miejsce w ogólnopolskim konkursie ortograficznym
-
III miejsce w ogólnopolskim konkursie plastycznym
-
-
-
wersja: 17.05.0000.24042
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/school/Szkola.html b/api/src/test/resources/io/github/wulkanowy/api/school/Szkola.html deleted file mode 100644 index 05a698a04..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/school/Szkola.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - Witryna ucznia i rodzica – Szkoła i nauczyciele - - -
-

Szkoła

-
-
- Nazwa szkoły: - Zespół Szkół nr 64 -
-
- Adres szkoły: - ul. Wiśniowa 128, 01-234 Rogalowo, Nibylandia -
-
- Telefon: - 55 5555555 -
-
- Imię i nazwisko dyrektora: - Antoni Sobczyk -
-
- Imię i nazwisko pedagoga: - Zofia Czerwińska [ZC], Aleksander Krzemiński [AK], Karolina Kowalska [KK], Bartek Dąbrowski [BD] -
-
-

Nauczyciele

-

- Klasa: 1a, Wychowawcy: - Karolina Kowalska [AN], Antoni Sobczyk [AS]

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Lp.PrzedmiotNauczyciel
1BiologiaKarolina Kowalska [AN]
2ChemiaZofia Czerwińska [NA]
3Edukacja dla bezpieczeństwaAleksandra Krajewska [AK]
4FizykaStanisław Krupa [BS]
5GeografiaAleksandra Wójtowicz [AW]
6HistoriaSara Wierzbicka [KB]
7Język angielskiKarolina Kowalska [AN], Mateusz Kowal [MK], Amelia Mazur [AM]
8Język niemieckiMateusz Kowal [MK], Barbara Markowska [BM]
9Język polskiMichał Mazur [MM]
10MatematykaSzymon Wojciechowski [SW]
11PlastykaMichał Mazur [MM]
12ReligiaMaja Wiśniewska [M]
13Wiedza o społeczeństwieKarolina Kowalska [AN]
14Wychowanie do życia w rodzinieZofia Czerwińska [NA]
15Wychowanie fizyczneKarolina Kowalska [AN], Liliana Kowal [LK]
16Zajęcia techniczneBartek Dąbrowski [BD]
17Zajęcia z wychowawcąKarolina Kowalska [AN]
-
-
wersja: 17.02.0000.23328
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-full.html b/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-full.html deleted file mode 100644 index c3dbfebe0..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-full.html +++ /dev/null @@ -1,567 +0,0 @@ - - - - - Witryna ucznia i rodzica – Plan lekcji - - - -
-

Plan lekcji

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LekcjaPora lekcjiponiedziałek
19.06.2017
wtorek
20.06.2017
środa
21.06.2017
czwartek
22.06.2017
piątek
23.06.2017
007:10 07:55 -
- Fizyka [zaw2] - - Bączek Grzegorz - 19 - (uczniowie zwolnieni do domu) -
-
-
- Metodologia programowania [zaw2] - - - 32 -
-
-
- Religia - Cyranka Krystian - 3 - Wychowanie do życia w rodzinie - Nowak Jadwiga - 3 - (zastępstwo) -
-
-
- Język polski - - 16 - (oddział nieobecny) -
- -
egzamin
-
-
- Uroczyste zakończenie roku szkolnego - Baran Małgorzata - 37 -
-
108:00 08:45 -
- Język angielski [J1] - - Kobczyk Iwona - -
-
-
- Wychowanie fizyczne [zaw2] - - - G3 - (przeniesiona z lekcji 7, 01.12.2017) -
-
- Metodologia programowania [zaw2] - - Baran Małgorzata - 36 - (zmiana organizacji zajęć) -
-
-
- Użytkowanie urządzeń peryferyjnych komputera [zaw2] - - Bączek Robert - -
-
-
- Wychowanie fizyczne [zaw1] - - Jarocki Krzysztof - G4 - Wychowanie fizyczne [zaw1] - - Nowicka Irena - G4 - (zastępstwo) -
-
-
- Uroczyste rozpoczecie roku szkolnego 2017/2018 - - -
-
- Uroczyste rozpoczecie roku szkolnego 2017/2018 - - -
-
208:50 09:35 -
- Język polski - Bocian Natalia - -
-
-
- Język niemiecki [J1] - - Rożeniec Honorata - 25 - (okienko dla uczniów) -
-
- Język polski - Bocian Natalia - - (przeniesiona z lekcji 7, 20.06.2017) -
-
- Język polski - Bocian Natalia - -
-
-
- Urządzenia techniki komputerowej [zaw2] - - Bocian Grzegorz - -
-
-
- Matematyka - Baran Małgorzata - -
-
-
- Język niemiecki [wf_grupa_2] - - - -
-
- Wychowanie fizyczne [wf_grupa_2] - - Nauczycielel - 106 -
-
309:40 10:25 -
- Język polski - Bocian Natalia - -
-
-
- Fizyka - Bączek Grzegorz - 19 - (okienko dla uczniów) -
-
- Wychowanie fizyczne [wf2] - - Nowicka Irena - - (przeniesiona z lekcji 4, 20.06.2017) -
-
- Wychowanie fizyczne [wf2] - - Nowicka Irena - -
-
-
- Metodologia programowania [zaw2] - - Baran Małgorzata - -
-
-
- Wychowanie fizyczne [wf2] - - Nowicka Irena - -
-
-
- Religia - Cyranka Krystian - 3 - Wychowanie do życia w rodzinie - Nowak Jadwiga - 3 - bez nawiasów -
-
410:40 11:25 -
- Urządzenia techniki komputerowej [zaw2] - - Bocian Grzegorz - -
-
-
- Wychowanie fizyczne [wf2] - - Nowicka Irena - - (przeniesiona na lekcję 3, 20.06.2017) -
-
-
- Matematyka - Baran Małgorzata - -
-
-
- Wychowanie fizyczne [wf2] - - Nowicka Irena - -
-
-
- Język polski - - 16 - (oddział nieobecny) -
- -
opis w uwadze bez klasy w spanie
-
511:30 12:15 -
- Urządzenia techniki komputerowej [zaw2] - - Bocian Grzegorz - -
-
-
- Podstawy przedsiębiorczości - Bogatka Anna - W12 - (okienko dla uczniów) -
-
-
- Religia - Cyranka Krystian - -
-
-
- Sieci komputerowe i administrowanie sieciami [zaw2] - - Rożeniec Piotr - -
-
-
- Tworzenie i administrowanie bazami danych [zaw2] - - - -
-
- Zajęcia z wychowawcą - Małgorzata Kowal - 43 - (zmiana organizacji zajęć) -
-
612:20 13:05 -
- Matematyka - Baran Małgorzata - -
-
-
- Podstawy przedsiębiorczości - Bogatka Anna - W12 - (okienko dla uczniów) -
-
-
- Język angielski [J1] - - Brodziec Sylwia - -
-
-
- Religia - Cyranka Krystian - -
-
713:10 13:55 -
- Fizyka - Bączek Grzegorz - 33 - (okienko dla uczniów) -
-
-
- Język polski - Bocian Natalia - - (przeniesiona na lekcję 2, 20.06.2017) -
-
-
- Multimedia i grafika komputerowa [zaw2] - - Bocian Konrad - -
-
-
- Wiedza o kulturze - Bocian Natalia - -
-
814:00 14:45 -
- Zajęcia z wychowawcą - Baran Małgorzata - -
-
-
- Naprawa komputera [zaw2] - - Kraska Maciej - 32 - (okienko dla uczniów) -
-
-
- Systemy operacyjne [zaw2] - - Kraska Maciej - 32 -
-
914:50 15:35 -
- Wychowanie fizyczne [zaw2] - - - G3 - (przeniesiona z lekcji 7, 01.12.2017) -
-
- -
-
-
- Język niemiecki [J1] - - Rożeniec Honorata - 25 - (uczniowie zwolnieni do domu) -
-
1015:40 16:25
1116:35 17:20
1217:25 18:10
1318:15 19:00
-
-
-
- Kursywa- planowane -
-
- Zwykła czcionka- zrealizowane -
-
- Przekreślone- odwołane lub przeniesione -
-
- Pogrubione- nowe lekcje, przeniesione z innego terminu, zastępstwa -
-
-
-
wersja: 17.05.0000.24042
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-holidays.html b/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-holidays.html deleted file mode 100644 index 09555cf3f..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-holidays.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - Witryna ucznia i rodzica – Plan lekcji - - -
-

Plan lekcji

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LekcjaPora lekcjiponiedziałek
31.07.2017
Ferie letnie
wtorek
01.08.2017
Ferie letnie
środa
02.08.2017
Ferie letnie
czwartek
03.08.2017
Ferie letnie
piątek
04.08.2017
Ferie letnie
007:10 07:55
108:00 08:45
208:50 09:35
309:40 10:25
410:40 11:25
511:30 12:15
612:20 13:05
713:10 13:55
814:00 14:45
914:50 15:35
1015:40 16:25
1116:35 17:20
1217:25 18:10
1318:15 19:00
-
-
-
wersja: 17.05.0000.24042
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-std.html b/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-std.html deleted file mode 100644 index 8bcc9794e..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-std.html +++ /dev/null @@ -1,303 +0,0 @@ - - - - - Witryna ucznia i rodzica – Plan lekcji - - -
-

Plan lekcji

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LekcjaPora lekcjiponiedziałek
19.06.2017
wtorek
20.06.2017
środa
21.06.2017
czwartek
22.06.2017
piątek
23.06.2017
108:00 08:45 -
- Edukacja dla bezpieczeństwa - Kobczyk Iwona - -
-
-
- Język niemiecki [JNPW] - - Dzwoniec Ewa - -
-
-
- Wychowanie do życia w rodzinie - Baran Dominika - -
-
-
- Język niemiecki [JNPW] - - Dzwoniec Ewa - -
-
208:50 09:35 -
- Historia - Bogatka Katarzyna - -
-
-
- Wychowanie fizyczne [CH] - - Brodziec Dominika - -
-
-
- Fizyka - Bocian Łukasz - -
-
-
- Biologia - Kowalska Anna - -
-
-
- Religia - Kraska Maciej - -
-
309:40 10:25 -
- Wychowanie fizyczne [CH] - - Brodziec Dominika - -
-
-
- Język polski - Rożeniec Paulina - -
-
-
- Matematyka - Bączek Dominika - -
-
-
- Plastyka - Rożeniec Paulina - -
-
-
- Zajęcia z wychowawcą - Kowalska Anna - -
-
410:30 11:15 -
- Geografia - Orłowski Konrad - -
-
-
- Matematyka - Bączek Dominika - -
-
-
- Język angielski [JAPN] - - Biegus Kazimiera - -
-
-
- Matematyka - Bączek Dominika - -
-
-
- Historia - Bogatka Katarzyna - -
-
511:30 12:15 -
- Matematyka - Bączek Dominika - -
-
-
- Biologia - Kowalska Anna - -
-
-
- Zajęcia techniczne - Chlebowski Stanisław - -
-
-
- Język angielski [JAPN] - - Biegus Kazimiera - -
-
-
- Język polski - Rożeniec Paulina - -
-
612:30 13:15 -
- Matematyka - Bączek Dominika - -
-
-
- Fizyka - Bocian Łukasz - -
-
-
- Język polski - Rożeniec Paulina - -
-
-
- Wychowanie fizyczne [CH] - - Brodziec Dominika - -
-
-
- Język polski - Rożeniec Paulina - -
-
713:20 14:05 -
- Język angielski [JAPN] - - Biegus Kazimiera - -
-
-
- Religia - Kraska Maciej - -
-
-
- Wychowanie fizyczne [CH] - - Brodziec Dominika - -
-
814:10 14:55
-
-
-
wersja: 17.02.0000.23328
- - diff --git a/api/src/test/resources/io/github/wulkanowy/api/user/UczenDanePodstawowe.html b/api/src/test/resources/io/github/wulkanowy/api/user/UczenDanePodstawowe.html deleted file mode 100644 index c54dd8614..000000000 --- a/api/src/test/resources/io/github/wulkanowy/api/user/UczenDanePodstawowe.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - Witryna ucznia i rodzica – Dane ucznia - - -
-

Dane podstawowe

-

Dane osobowe

-
-
- Imię (imiona) nazwisko: - Maria Aneta Kamińska -
-
- Data i miejsce urodzenia: - 01.01.1900, Warszawa -
-
- PESEL: - 12345678900 -
-
- Płeć: - Kobieta -
-
- Obywatelstwo polskie: - Tak -
-
- Nazwisko rodowe: - Nowak -
-
- Imię matki i ojca: - Gabriela, Kamil -
-
-

Dane adresowe

-
-
- Adres zamieszkania: - ul. Sportowa 16, 00-123 Warszawa -
-
- Adres zameldowania: - ul. Sportowa 17, 00-123 Warszawa -
-
- Adres korespondencji: - ul. Sportowa 18, 00-123 Warszawa -
-
-

Kontakt

-
-
- Telefon: - 005554433 -
-
- Telefon komórkowy: - 555444333 -
-
- E-mail: - wulkanowy@example.null -
-
-

Rodzina

-
-
- Nazwisko i imię: - Marianna Pająk -
-
- Stopień pokrewieństwa: - matka -
-
- Adres: - ul. Sportowa 16, 00-123 Warszawa -
-
- Telefony: - 555111222 -
-
- E-mail: - wulkanowy@example.null -
-
-
-
- Nazwisko i imię: - Dawid Świątek -
-
- Stopień pokrewieństwa: - ojciec -
-
- Adres: - ul. Sportowa 18, 00-123 Warszawa -
-
- Telefony: - 555222111 -
-
- E-mail: - wulkanowy@example.null -
-
-
-
wersja: 17.02.0000.23328
- - diff --git a/app/build.gradle b/app/build.gradle index 38b4c9472..9a870db5b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,31 +1,12 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-kapt'// sync warning probably caused by bug https://issuetracker.google.com/issues/74537216 +apply plugin: 'kotlin-kapt'// sync warning probably caused by bug https://issuetracker.google.com/issues/74537216, fix in AS 3.2 apply plugin: 'kotlin-android-extensions' apply plugin: 'io.fabric' apply from: 'jacoco.gradle' -apply from: 'android-sonarqube.gradle' -apply plugin: 'com.google.gms.oss.licenses.plugin' +apply from: 'sonarqube.gradle' apply plugin: 'com.github.triplet.play' -buildscript { - repositories { - maven { url "https://plugins.gradle.org/m2/" } - maven { url 'https://maven.fabric.io/public' } - google() - } - - dependencies { - classpath "io.fabric.tools:gradle:$fabricGradle" - classpath "com.google.gms:oss-licenses:0.9.2" - classpath "com.github.triplet.gradle:play-publisher:$playPublisher" - } -} - -repositories { - maven { url 'https://maven.fabric.io/public' } -} - android { compileSdkVersion 27 buildToolsVersion '27.0.3' @@ -76,16 +57,6 @@ android { multiDexKeepProguard file('proguard-multidex-rules.pro') } } - - testOptions { - unitTests.all { - testLogging { - events "passed", "skipped", "failed", "standardOut", "standardError" - outputs.upToDateWhen { false } - showStandardStreams = true - } - } - } } androidExtensions { @@ -97,54 +68,57 @@ play { uploadImages = true } -configurations.all { - resolutionStrategy.force "com.android.support:support-annotations:$supportVersion" -} +ext.supportVersion = "27.1.1" dependencies { - implementation project(':api') - implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation 'com.github.wulkanowy:api:88ede83149' + implementation "com.android.support:support-v4:$supportVersion" implementation "com.android.support:design:$supportVersion" implementation "com.android.support:cardview-v7:$supportVersion" implementation "com.android.support:preference-v14:$supportVersion" - implementation "com.firebase:firebase-jobdispatcher:$firebaseJob" - implementation "org.apache.commons:commons-lang3:$apacheLang" - implementation "org.apache.commons:commons-collections4:$apacheCollections" - implementation "eu.davidea:flexible-adapter:$flexibleAdapter" - implementation "eu.davidea:flexible-adapter-ui:$flexibleUi" - implementation "com.google.dagger:dagger-android-support:$dagger2" - implementation "com.aurelhubert:ahbottomnavigation:$ahbottom" - implementation "com.jakewharton.threetenabp:threetenabp:$threeTenABP" - implementation "com.google.android.gms:play-services-oss-licenses:$ossLicenses" - implementation "com.jakewharton.timber:timber:$timber" - implementation "at.favre.lib:slf4j-timber:$slf4jTimber" - implementation "android.arch.persistence.room:runtime:1.1.1" - implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' - implementation "io.reactivex.rxjava2:rxjava:2.2.0" implementation 'com.android.support:multidex:1.0.3' + + implementation "com.google.android.gms:play-services-oss-licenses:16.0.0" + implementation "com.firebase:firebase-jobdispatcher:0.8.5" + + implementation "com.google.dagger:dagger-android-support:2.17" + kapt "com.google.dagger:dagger-compiler:2.17" + kapt "com.google.dagger:dagger-android-processor:2.17" + + implementation "android.arch.persistence.room:runtime:1.1.1" implementation "android.arch.persistence.room:rxjava2:1.1.1" - implementation 'com.github.pwittchen:reactivenetwork-rx2:2.1.0' - implementation 'com.ncapdevi:frag-nav:3.0.0-RC3' - - implementation("com.crashlytics.sdk.android:crashlytics:$crashlyticsSdk@aar") { - transitive = true - } - implementation("com.crashlytics.sdk.android:answers:$crashlyticsAnswers@aar") { - transitive = true - } - - kapt "com.google.dagger:dagger-compiler:$dagger2" - kapt "com.google.dagger:dagger-android-processor:$dagger2" kapt "android.arch.persistence.room:compiler:1.1.1" - debugImplementation "com.amitshekhar.android:debug-db:$debugDb" + implementation "eu.davidea:flexible-adapter:5.0.5" + implementation "eu.davidea:flexible-adapter-ui:1.0.0-b5" + implementation "com.aurelhubert:ahbottomnavigation:2.2.0" + implementation 'com.ncapdevi:frag-nav:3.0.0-RC3' - testImplementation "junit:junit:$junit" - testImplementation "org.mockito:mockito-inline:$mockito" - testImplementation "org.jsoup:jsoup:$jsoup" + implementation 'com.github.pwittchen:reactivenetwork-rx2:2.1.0' + implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' + implementation "io.reactivex.rxjava2:rxjava:2.2.0" - androidTestImplementation "com.android.support.test:runner:$testRunner" - androidTestImplementation "org.mockito:mockito-android:$mockito" + implementation "org.apache.commons:commons-lang3:3.8" + implementation "org.apache.commons:commons-collections4:4.2" + implementation "com.jakewharton.threetenabp:threetenabp:1.1.0" + + implementation "com.jakewharton.timber:timber:4.7.1" + implementation "at.favre.lib:slf4j-timber:1.0.1" + implementation("com.crashlytics.sdk.android:crashlytics:2.9.5@aar") { + transitive = true + } + implementation("com.crashlytics.sdk.android:answers:1.4.3@aar") { + transitive = true + } + + debugImplementation "com.amitshekhar.android:debug-db:1.0.4" + + testImplementation "junit:junit:4.12" + testImplementation "org.mockito:mockito-inline:2.21.0" + + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation "org.mockito:mockito-android:2.21.0" androidTestImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version" } diff --git a/app/jacoco.gradle b/app/jacoco.gradle index 45c55617d..4f94ef190 100644 --- a/app/jacoco.gradle +++ b/app/jacoco.gradle @@ -1,7 +1,7 @@ apply plugin: "jacoco" jacoco { - toolVersion "0.8.1" + toolVersion "0.8.2" reportsDir = file("$buildDir/reports") } @@ -9,7 +9,6 @@ tasks.withType(Test) { jacoco.includeNoLocationClasses = true } -// run ./gradlew clean createDebugCoverageReport jacocoTestReport task jacocoTestReport(type: JacocoReport) { group = "Reporting" @@ -30,17 +29,12 @@ task jacocoTestReport(type: JacocoReport) { '**/*Dagger*.*', '**/*MembersInjector*.*', '**/*_Provide*Factory*.*', - '**/*_Factory.*', - '**/*$*$*.*' - ] + '**/*_Factory.*'] - // generated classes classDirectories = fileTree( - // Java generated classes on Android project (debug build) dir: "$buildDir/intermediates/classes/debug", excludes: excludes ) + fileTree( - // Kotlin generated classes on Android project (debug build) dir: "$buildDir/tmp/kotlin-classes/debug", excludes: excludes ) diff --git a/app/android-sonarqube.gradle b/app/sonarqube.gradle similarity index 80% rename from app/android-sonarqube.gradle rename to app/sonarqube.gradle index b9284eeac..9fd890d85 100644 --- a/app/android-sonarqube.gradle +++ b/app/sonarqube.gradle @@ -4,16 +4,13 @@ sonarqube { //noinspection GroovyAssignabilityCheck properties { - def files = fileTree("${rootProject.projectDir}/api/build/libs/").filter { it.isFile() }.files.name - def libraries = project.android.sdkDirectory.getPath() + "/platforms/android-27/android.jar," + - "${project.rootDir}/api/build/libs/" + files[0] + def libraries = project.android.sdkDirectory.getPath() + "/platforms/android-27/android.jar" property "sonar.projectName", GROUP_ID + ":app" property "sonar.projectKey", GROUP_ID + ":app" property "sonar.sources", "src/main/java" - property "sonar.exclusions", "build/**,**/*.png,*.iml, **/*generated*," + - "src/**/entities/*.java, src/androidTest/**/entities/*.java" + property "sonar.exclusions", "build/**,**/*.png,*.iml, **/*generated*," property "sonar.import_unknown_files", true // Defines where the java files are diff --git a/app/src/androidTest/java/io/github/wulkanowy/data/repositories/local/StudentLocalTest.kt b/app/src/androidTest/java/io/github/wulkanowy/data/repositories/local/StudentLocalTest.kt index e4e9e1dfd..7103d478b 100644 --- a/app/src/androidTest/java/io/github/wulkanowy/data/repositories/local/StudentLocalTest.kt +++ b/app/src/androidTest/java/io/github/wulkanowy/data/repositories/local/StudentLocalTest.kt @@ -38,7 +38,7 @@ class StudentLocalTest { @Test fun saveAndReadTest() { - studentLocal.save(Student(email = "test", password = "test123", schoolId = "23")) + studentLocal.save(Student(email = "test", password = "test123", schoolId = "23")).blockingAwait() assert(sharedHelper.getLong(StudentLocal.CURRENT_USER_KEY, 0) == 1L) assert(studentLocal.isStudentLoggedIn) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a4c2c9471..47e6e013e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -28,13 +28,13 @@ + android:resource="@xml/provider_widget_timetable" /> - diff --git a/app/src/main/java/io/github/wulkanowy/data/ErrorHandler.kt b/app/src/main/java/io/github/wulkanowy/data/ErrorHandler.kt index 207e9251f..67edf916d 100644 --- a/app/src/main/java/io/github/wulkanowy/data/ErrorHandler.kt +++ b/app/src/main/java/io/github/wulkanowy/data/ErrorHandler.kt @@ -2,7 +2,7 @@ package io.github.wulkanowy.data import android.content.res.Resources import io.github.wulkanowy.R -import io.github.wulkanowy.api.NotLoggedInErrorException +import io.github.wulkanowy.api.auth.NotLoggedInException import timber.log.Timber import java.io.IOException import java.net.SocketTimeoutException @@ -17,9 +17,9 @@ open class ErrorHandler @Inject constructor(private val resources: Resources) { Timber.i(error, "An exception occurred while the Wulkanowy was running") showErrorMessage((when (error) { - is UnknownHostException -> resources.getString(R.string.noInternet_text) - is SocketTimeoutException -> resources.getString(R.string.generic_timeout_error) - is NotLoggedInErrorException, is IOException -> resources.getString(R.string.login_failed_text) + is UnknownHostException -> resources.getString(R.string.all_no_internet) + is SocketTimeoutException -> resources.getString(R.string.all_timeout) + is NotLoggedInException, is IOException -> resources.getString(R.string.all_login_failed) else -> error.localizedMessage })) } @@ -28,4 +28,3 @@ open class ErrorHandler @Inject constructor(private val resources: Resources) { showErrorMessage = {} } } - diff --git a/app/src/main/java/io/github/wulkanowy/data/RepositoryModule.kt b/app/src/main/java/io/github/wulkanowy/data/RepositoryModule.kt index 6cacc01e5..5cca9bd15 100644 --- a/app/src/main/java/io/github/wulkanowy/data/RepositoryModule.kt +++ b/app/src/main/java/io/github/wulkanowy/data/RepositoryModule.kt @@ -7,7 +7,7 @@ import android.support.v7.preference.PreferenceManager import com.github.pwittchen.reactivenetwork.library.rx2.internet.observing.InternetObservingSettings import dagger.Module import dagger.Provides -import io.github.wulkanowy.api.Vulcan +import io.github.wulkanowy.api.Api import io.github.wulkanowy.data.db.AppDatabase import io.github.wulkanowy.utils.DATABASE_NAME import javax.inject.Singleton @@ -23,7 +23,7 @@ internal class RepositoryModule { @Singleton @Provides - fun provideVulcanApi() = Vulcan() + fun provideApi() = Api() @Singleton @Provides @@ -41,4 +41,4 @@ internal class RepositoryModule { @Singleton @Provides fun provideStudentDao(database: AppDatabase) = database.studentDao() -} \ No newline at end of file +} diff --git a/app/src/main/java/io/github/wulkanowy/data/db/AppDatabase.kt b/app/src/main/java/io/github/wulkanowy/data/db/AppDatabase.kt index ffb02591b..c140cf0bc 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/AppDatabase.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/AppDatabase.kt @@ -2,17 +2,21 @@ package io.github.wulkanowy.data.db import android.arch.persistence.room.Database import android.arch.persistence.room.RoomDatabase +import io.github.wulkanowy.data.db.dao.SemesterDao import io.github.wulkanowy.data.db.dao.StudentDao +import io.github.wulkanowy.data.db.entities.Semester import io.github.wulkanowy.data.db.entities.Student import javax.inject.Singleton @Singleton @Database( - entities = [Student::class], + entities = [Student::class, Semester::class], version = 1, exportSchema = false ) abstract class AppDatabase : RoomDatabase() { abstract fun studentDao(): StudentDao -} \ No newline at end of file + + abstract fun semesterDao(): SemesterDao +} diff --git a/app/src/main/java/io/github/wulkanowy/data/db/dao/SemesterDao.kt b/app/src/main/java/io/github/wulkanowy/data/db/dao/SemesterDao.kt new file mode 100644 index 000000000..a8ebb4788 --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/data/db/dao/SemesterDao.kt @@ -0,0 +1,13 @@ +package io.github.wulkanowy.data.db.dao + +import android.arch.persistence.room.Dao +import android.arch.persistence.room.Insert +import android.arch.persistence.room.OnConflictStrategy.REPLACE +import io.github.wulkanowy.data.db.entities.Semester + +@Dao +interface SemesterDao { + + @Insert(onConflict = REPLACE) + fun insert(semester: Semester): Long +} diff --git a/app/src/main/java/io/github/wulkanowy/data/db/entities/Semester.kt b/app/src/main/java/io/github/wulkanowy/data/db/entities/Semester.kt new file mode 100644 index 000000000..dec731d7a --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/data/db/entities/Semester.kt @@ -0,0 +1,26 @@ +package io.github.wulkanowy.data.db.entities + +import android.arch.persistence.room.ColumnInfo +import android.arch.persistence.room.Entity +import android.arch.persistence.room.Index +import android.arch.persistence.room.PrimaryKey + +@Entity(tableName = "Semesters", + indices = [Index(value = ["diary_id", "semester_id"], unique = true)]) +data class Semester( + + @PrimaryKey + var id: Long = 0, + + @ColumnInfo(name = "diary_id") + var diaryId: String, + + @ColumnInfo(name = "diary_name") + var diaryName: String = "", + + @ColumnInfo(name = "semester_id") + var semesterId: String, + + @ColumnInfo(name = "semester_name") + var semesterName: String = "" +) diff --git a/app/src/main/java/io/github/wulkanowy/data/repositories/StudentRepository.kt b/app/src/main/java/io/github/wulkanowy/data/repositories/StudentRepository.kt index 59659ea54..316c482c3 100644 --- a/app/src/main/java/io/github/wulkanowy/data/repositories/StudentRepository.kt +++ b/app/src/main/java/io/github/wulkanowy/data/repositories/StudentRepository.kt @@ -5,6 +5,7 @@ import com.github.pwittchen.reactivenetwork.library.rx2.internet.observing.Inter import io.github.wulkanowy.data.db.entities.Student import io.github.wulkanowy.data.repositories.local.StudentLocal import io.github.wulkanowy.data.repositories.remote.StudentRemote +import io.reactivex.Completable import io.reactivex.Single import java.net.UnknownHostException import javax.inject.Inject @@ -31,9 +32,7 @@ class StudentRepository @Inject constructor( return cachedStudents } - fun save(student: Student) { - local.save(student) - } + fun save(student: Student): Completable = local.save(student) fun getCurrentStudent(): Single = local.getCurrentStudent() diff --git a/app/src/main/java/io/github/wulkanowy/data/repositories/local/StudentLocal.kt b/app/src/main/java/io/github/wulkanowy/data/repositories/local/StudentLocal.kt index 6c325f68e..a500141c3 100644 --- a/app/src/main/java/io/github/wulkanowy/data/repositories/local/StudentLocal.kt +++ b/app/src/main/java/io/github/wulkanowy/data/repositories/local/StudentLocal.kt @@ -6,6 +6,7 @@ import io.github.wulkanowy.data.db.dao.StudentDao import io.github.wulkanowy.data.db.entities.Student import io.github.wulkanowy.utils.security.Scrambler.decrypt import io.github.wulkanowy.utils.security.Scrambler.encrypt +import io.reactivex.Completable import io.reactivex.Single import javax.inject.Inject import javax.inject.Singleton @@ -23,9 +24,10 @@ class StudentLocal @Inject constructor( val isStudentLoggedIn: Boolean get() = sharedPref.getLong(CURRENT_USER_KEY, 0) != 0L - fun save(student: Student) { - sharedPref.putLong(CURRENT_USER_KEY, studentDb.insert(student.copy( - password = encrypt(student.password, context)))) + fun save(student: Student): Completable { + return Single.fromCallable { studentDb.insert(student.copy(password = encrypt(student.password, context))) } + .map { sharedPref.putLong(CURRENT_USER_KEY, it) } + .ignoreElement() } fun getCurrentStudent(): Single { diff --git a/app/src/main/java/io/github/wulkanowy/data/repositories/remote/StudentRemote.kt b/app/src/main/java/io/github/wulkanowy/data/repositories/remote/StudentRemote.kt index 491c3fdd9..02b447232 100644 --- a/app/src/main/java/io/github/wulkanowy/data/repositories/remote/StudentRemote.kt +++ b/app/src/main/java/io/github/wulkanowy/data/repositories/remote/StudentRemote.kt @@ -1,55 +1,32 @@ package io.github.wulkanowy.data.repositories.remote -import io.github.wulkanowy.api.Vulcan -import io.github.wulkanowy.api.login.AccountPermissionException +import io.github.wulkanowy.api.Api import io.github.wulkanowy.data.db.entities.Student -import io.github.wulkanowy.utils.DEFAULT_SYMBOL import io.reactivex.Single -import org.apache.commons.lang3.StringUtils.stripAccents import javax.inject.Inject import javax.inject.Singleton @Singleton -class StudentRemote @Inject constructor(private val api: Vulcan) { +class StudentRemote @Inject constructor(private val api: Api) { fun getConnectedStudents(email: String, password: String, symbol: String): Single> { - return Single.fromCallable { - initApi(email, password, symbol) - getSymbols().filterNot { it == DEFAULT_SYMBOL } - .mapNotNull { symbol -> - try { - initApi(email, password, symbol) - api.schools.flatMap { school -> - initApi(email, password, symbol, school.id) - api.studentAndParent.students.map { student -> - Student( - email = email, - password = password, - symbol = symbol, - studentId = student.id, - studentName = student.name, - schoolId = school.id, - schoolName = school.name - ) - } - } - } catch (e: AccountPermissionException) { - null - } - }.flatten() + api.let { + it.email = email + it.password = password + it.symbol = symbol + it.host = "vulcan.net.pl" + it.onConfigChange() } - } - - private fun initApi(email: String, password: String, symbol: String, schoolId: String? = null) { - api.apply { - logout() - setCredentials(email, password, symbol, schoolId, null, null) - } - } - - private fun getSymbols(): List { - return api.symbols.map { - stripAccents(it.replace("[\\s \\W]".toRegex(), "")) + return api.getPupils().map { students -> + students.map { + Student(email = email, + password = password, + symbol = it.symbol, + studentId = it.studentId, + studentName = it.studentName, + schoolId = it.schoolId, + schoolName = it.schoolName) + } } } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/base/BaseActivity.kt b/app/src/main/java/io/github/wulkanowy/ui/base/BaseActivity.kt index 696834e08..0946b251d 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/base/BaseActivity.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/base/BaseActivity.kt @@ -23,7 +23,7 @@ abstract class BaseActivity : DaggerAppCompatActivity(), BaseView { } override fun showNoNetworkMessage() { - showMessage(getString(R.string.noInternet_text)) + showMessage(getString(R.string.all_no_internet)) } override fun onDestroy() { diff --git a/app/src/main/java/io/github/wulkanowy/ui/login/LoginErrorHandler.kt b/app/src/main/java/io/github/wulkanowy/ui/login/LoginErrorHandler.kt index 93b66ab18..5eeaceb7e 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/login/LoginErrorHandler.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/login/LoginErrorHandler.kt @@ -1,7 +1,7 @@ package io.github.wulkanowy.ui.login import android.content.res.Resources -import io.github.wulkanowy.api.login.BadCredentialsException +import io.github.wulkanowy.api.auth.BadCredentialsException import io.github.wulkanowy.data.ErrorHandler class LoginErrorHandler(resources: Resources) : ErrorHandler(resources) { diff --git a/app/src/main/java/io/github/wulkanowy/ui/login/form/LoginFormFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/login/form/LoginFormFragment.kt index cf231c3e1..b2e3145bc 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/login/form/LoginFormFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/login/form/LoginFormFragment.kt @@ -54,7 +54,7 @@ class LoginFormFragment : BaseFragment(), LoginFormView { } override fun showSymbolInput() { - loginHeader.text = getString(R.string.login_heading_symbol) + loginHeader.text = getString(R.string.login_header_symbol) loginMainForm.visibility = GONE loginSymbolInput.visibility = VISIBLE loginSymbolEdit.requestFocus() @@ -68,49 +68,49 @@ class LoginFormFragment : BaseFragment(), LoginFormView { override fun setErrorEmailRequired() { loginEmailEdit.run { requestFocus() - error = getString(R.string.error_field_required) + error = getString(R.string.login_field_required) } } override fun setErrorEmailInvalid() { loginEmailEdit.run { requestFocus() - error = getString(R.string.error_invalid_email) + error = getString(R.string.login_invalid_email) } } override fun setErrorPassRequired(focus: Boolean) { loginPassEdit.run { if (focus) requestFocus() - error = getString(R.string.error_field_required) + error = getString(R.string.login_field_required) } } override fun setErrorPassInvalid(focus: Boolean) { loginPassEdit.run { if (focus) requestFocus() - error = getString(R.string.error_invalid_password) + error = getString(R.string.login_invalid_password) } } override fun setErrorSymbolRequire() { loginSymbolEdit.run { requestFocus() - error = getString(R.string.error_field_required) + error = getString(R.string.login_field_required) } } override fun setErrorPassIncorrect() { loginPassEdit.run { requestFocus() - error = getString(R.string.error_incorrect_password) + error = getString(R.string.login_incorrect_password) } } override fun setErrorSymbolIncorrect() { loginSymbolEdit.run { requestFocus() - error = getString(R.string.error_incorrect_symbol) + error = getString(R.string.login_incorrect_symbol) } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/login/options/LoginOptionsItem.kt b/app/src/main/java/io/github/wulkanowy/ui/login/options/LoginOptionsItem.kt index 777c7ef4c..5abab9bc8 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/login/options/LoginOptionsItem.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/login/options/LoginOptionsItem.kt @@ -8,11 +8,11 @@ import eu.davidea.viewholders.FlexibleViewHolder import io.github.wulkanowy.R import io.github.wulkanowy.data.db.entities.Student import kotlinx.android.extensions.LayoutContainer -import kotlinx.android.synthetic.main.fragment_login_opions_item.view.* +import kotlinx.android.synthetic.main.item_login_options.view.* class LoginOptionsItem(val student: Student) : AbstractFlexibleItem() { - override fun getLayoutRes(): Int = R.layout.fragment_login_opions_item + override fun getLayoutRes(): Int = R.layout.item_login_options override fun createViewHolder(view: View?, adapter: FlexibleAdapter>?): ItemViewHolder { return ItemViewHolder(view, adapter) diff --git a/app/src/main/java/io/github/wulkanowy/ui/login/options/LoginOptionsPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/login/options/LoginOptionsPresenter.kt index f714596d2..3221cf51a 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/login/options/LoginOptionsPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/login/options/LoginOptionsPresenter.kt @@ -5,7 +5,6 @@ import io.github.wulkanowy.data.db.entities.Student import io.github.wulkanowy.data.repositories.StudentRepository import io.github.wulkanowy.ui.base.BasePresenter import io.github.wulkanowy.utils.schedulers.SchedulersManager -import io.reactivex.Single import javax.inject.Inject class LoginOptionsPresenter @Inject constructor( @@ -33,16 +32,13 @@ class LoginOptionsPresenter @Inject constructor( } fun onSelectStudent(student: Student) { - disposable.add(student.let { - Single.fromCallable { repository.save(it) } - .subscribeOn(schedulers.backgroundThread()) - .observeOn(schedulers.mainThread()) - .doOnSubscribe { _ -> - view?.showLoginProgress(true) - view?.showActionBar(false) - } - .doOnSuccess { _ -> view?.openMainView() } - .subscribe({ _ -> }, { error -> errorHandler.proceed(error) }) - }) + disposable.add(repository.save(student) + .subscribeOn(schedulers.backgroundThread()) + .observeOn(schedulers.mainThread()) + .doOnSubscribe { _ -> + view?.showLoginProgress(true) + view?.showActionBar(false) + } + .subscribe({ view?.openMainView() }, { errorHandler.proceed(it) })) } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/main/MainActivity.kt b/app/src/main/java/io/github/wulkanowy/ui/main/MainActivity.kt index 5b8450804..4ec418fb3 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/main/MainActivity.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/main/MainActivity.kt @@ -58,11 +58,11 @@ class MainActivity : BaseActivity(), MainView, FragNavController.TransactionList override fun initBottomNav() { mainBottomNav.run { addItems(mutableListOf( - AHBottomNavigationItem(R.string.grades_text, R.drawable.ic_menu_grade_26dp, 0), - AHBottomNavigationItem(R.string.attendance_text, R.drawable.ic_menu_attendance_24dp, 0), - AHBottomNavigationItem(R.string.exams_text, R.drawable.ic_menu_exams_24dp, 0), - AHBottomNavigationItem(R.string.timetable_text, R.drawable.ic_menu_timetable_24dp, 0), - AHBottomNavigationItem(R.string.more_text, R.drawable.ic_menu_other_24dp, 0) + AHBottomNavigationItem(R.string.grade_title, R.drawable.ic_menu_main_grade_26dp, 0), + AHBottomNavigationItem(R.string.attendance_title, R.drawable.ic_menu_main_attendance_24dp, 0), + AHBottomNavigationItem(R.string.exam_title, R.drawable.ic_menu_main_exam_24dp, 0), + AHBottomNavigationItem(R.string.timetable_title, R.drawable.ic_menu_main_timetable_24dp, 0), + AHBottomNavigationItem(R.string.more_title, R.drawable.ic_menu_main_more_24dp, 0) )) accentColor = ContextCompat.getColor(context, R.color.colorPrimary) inactiveColor = ContextCompat.getColor(context, android.R.color.black) @@ -89,14 +89,14 @@ class MainActivity : BaseActivity(), MainView, FragNavController.TransactionList setTitle(title) } - override fun defaultTitle(): String = getString(R.string.activity_main_text) + override fun defaultTitle(): String = getString(R.string.main_title) override fun mapOfTitles(): Map { - return mapOf(0 to R.string.grades_text, - 1 to R.string.attendance_text, - 2 to R.string.exams_text, - 3 to R.string.timetable_text, - 4 to R.string.more_text + return mapOf(0 to R.string.grade_title, + 1 to R.string.attendance_title, + 2 to R.string.exam_title, + 3 to R.string.timetable_title, + 4 to R.string.more_title ).mapValues { getString(it.value) } } @@ -105,4 +105,3 @@ class MainActivity : BaseActivity(), MainView, FragNavController.TransactionList navController.onSaveInstanceState(outState) } } - diff --git a/app/src/main/java/io/github/wulkanowy/ui/main/exam/ExamFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/main/exam/ExamFragment.kt index 6e8ad5998..ca60fe888 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/main/exam/ExamFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/main/exam/ExamFragment.kt @@ -14,7 +14,6 @@ class ExamFragment : BaseFragment() { } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(R.layout.fragment_exams, container, false) + return inflater.inflate(R.layout.fragment_exam, container, false) } } - diff --git a/app/src/main/java/io/github/wulkanowy/ui/main/grade/GradeFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/main/grade/GradeFragment.kt index 3b70cdbc2..961afb1e0 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/main/grade/GradeFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/main/grade/GradeFragment.kt @@ -14,7 +14,6 @@ class GradeFragment : BaseFragment() { } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(R.layout.fragment_grades, container, false) + return inflater.inflate(R.layout.fragment_grade, container, false) } } - diff --git a/app/src/main/java/io/github/wulkanowy/utils/CommonUtils.java b/app/src/main/java/io/github/wulkanowy/utils/CommonUtils.java index 5c94cc57a..d84770e54 100644 --- a/app/src/main/java/io/github/wulkanowy/utils/CommonUtils.java +++ b/app/src/main/java/io/github/wulkanowy/utils/CommonUtils.java @@ -16,19 +16,19 @@ public final class CommonUtils { public static int colorHexToColorName(String hexColor) { switch (hexColor) { case "000000": - return R.string.color_black_text; + return R.string.all_black; case "F04C4C": - return R.string.color_red_text; + return R.string.all_red; case "20A4F7": - return R.string.color_blue_text; + return R.string.all_blue; case "6ECD07": - return R.string.color_green_text; + return R.string.all_green; default: - return R.string.noColor_text; + return R.string.all_empty_color; } } diff --git a/app/src/main/res/drawable-hdpi/ic_notify_grade.png b/app/src/main/res/drawable-hdpi/ic_stat_notify_grade.png similarity index 100% rename from app/src/main/res/drawable-hdpi/ic_notify_grade.png rename to app/src/main/res/drawable-hdpi/ic_stat_notify_grade.png diff --git a/app/src/main/res/drawable-mdpi/ic_notify_grade.png b/app/src/main/res/drawable-mdpi/ic_stat_notify_grade.png similarity index 100% rename from app/src/main/res/drawable-mdpi/ic_notify_grade.png rename to app/src/main/res/drawable-mdpi/ic_stat_notify_grade.png diff --git a/app/src/main/res/drawable-night/ic_border.xml b/app/src/main/res/drawable-night/ic_all_divider.xml similarity index 100% rename from app/src/main/res/drawable-night/ic_border.xml rename to app/src/main/res/drawable-night/ic_all_divider.xml diff --git a/app/src/main/res/drawable-v15/splash_background.xml b/app/src/main/res/drawable-v15/splash_background.xml deleted file mode 100644 index c58c374a1..000000000 --- a/app/src/main/res/drawable-v15/splash_background.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/drawable-v23/splash_background.xml b/app/src/main/res/drawable-v23/splash_background.xml deleted file mode 100644 index 611bb2a7a..000000000 --- a/app/src/main/res/drawable-v23/splash_background.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/drawable-xhdpi/ic_notify_grade.png b/app/src/main/res/drawable-xhdpi/ic_stat_notify_grade.png similarity index 100% rename from app/src/main/res/drawable-xhdpi/ic_notify_grade.png rename to app/src/main/res/drawable-xhdpi/ic_stat_notify_grade.png diff --git a/app/src/main/res/drawable-xxhdpi/ic_notify_grade.png b/app/src/main/res/drawable-xxhdpi/ic_stat_notify_grade.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/ic_notify_grade.png rename to app/src/main/res/drawable-xxhdpi/ic_stat_notify_grade.png diff --git a/app/src/main/res/drawable/ic_border.xml b/app/src/main/res/drawable/ic_all_divider.xml similarity index 100% rename from app/src/main/res/drawable/ic_border.xml rename to app/src/main/res/drawable/ic_all_divider.xml diff --git a/app/src/main/res/drawable/ic_exclamation_24dp.xml b/app/src/main/res/drawable/ic_all_note_24dp.xml similarity index 96% rename from app/src/main/res/drawable/ic_exclamation_24dp.xml rename to app/src/main/res/drawable/ic_all_note_24dp.xml index 149504585..988df22c0 100644 --- a/app/src/main/res/drawable/ic_exclamation_24dp.xml +++ b/app/src/main/res/drawable/ic_all_note_24dp.xml @@ -7,4 +7,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_alert_24dp.xml b/app/src/main/res/drawable/ic_all_round_note_24dp.xml similarity index 97% rename from app/src/main/res/drawable/ic_alert_24dp.xml rename to app/src/main/res/drawable/ic_all_round_note_24dp.xml index 1c41b556d..f4f1f2c52 100644 --- a/app/src/main/res/drawable/ic_alert_24dp.xml +++ b/app/src/main/res/drawable/ic_all_round_note_24dp.xml @@ -7,4 +7,4 @@ android:fillColor="@color/colorPrimary" android:pathData="M13 13h-2V7h2m0 10h-2v-2h2M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2z" /> - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_action_menu_semester.xml b/app/src/main/res/drawable/ic_menu_grade_semester_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_action_menu_semester.xml rename to app/src/main/res/drawable/ic_menu_grade_semester_24dp.xml diff --git a/app/src/main/res/drawable/ic_action_menu_summary.xml b/app/src/main/res/drawable/ic_menu_grade_summary_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_action_menu_summary.xml rename to app/src/main/res/drawable/ic_menu_grade_summary_24dp.xml diff --git a/app/src/main/res/drawable/ic_menu_attendance_24dp.xml b/app/src/main/res/drawable/ic_menu_main_attendance_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_menu_attendance_24dp.xml rename to app/src/main/res/drawable/ic_menu_main_attendance_24dp.xml diff --git a/app/src/main/res/drawable/ic_menu_exams_24dp.xml b/app/src/main/res/drawable/ic_menu_main_exam_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_menu_exams_24dp.xml rename to app/src/main/res/drawable/ic_menu_main_exam_24dp.xml diff --git a/app/src/main/res/drawable/ic_menu_grade_26dp.xml b/app/src/main/res/drawable/ic_menu_main_grade_26dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_menu_grade_26dp.xml rename to app/src/main/res/drawable/ic_menu_main_grade_26dp.xml diff --git a/app/src/main/res/drawable/ic_menu_main_more_24dp.xml b/app/src/main/res/drawable/ic_menu_main_more_24dp.xml new file mode 100644 index 000000000..26932b2b2 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_main_more_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_timetable_24dp.xml b/app/src/main/res/drawable/ic_menu_main_timetable_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_menu_timetable_24dp.xml rename to app/src/main/res/drawable/ic_menu_main_timetable_24dp.xml diff --git a/app/src/main/res/drawable/ic_menu_other_24dp.xml b/app/src/main/res/drawable/ic_menu_other_24dp.xml deleted file mode 100644 index a07747245..000000000 --- a/app/src/main/res/drawable/ic_menu_other_24dp.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/ic_swap_30dp.xml b/app/src/main/res/drawable/ic_timetable_swap_30dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_swap_30dp.xml rename to app/src/main/res/drawable/ic_timetable_swap_30dp.xml diff --git a/app/src/main/res/drawable/img_splash_512px.png b/app/src/main/res/drawable/img_splash_512px.png deleted file mode 100644 index 9d8f403c2885d82a1d4c0c0f19d083c3880ce75a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9691 zcmeHs^{pWqqqFOPfVPLN{L87T5gPrkC+}SMQ_@H)(b3JsSVnmmBy{Ai7*ZBkZI3 z6UJA5Z~P-=3)L1MJ&rLNibwb;#rnD`W+(EPb?trL2LR@HHAQ)Sf2{qfiAb{`%J35^ zDXC{*pYFNg&yO1_a-Pk5i8q9}T=ym}cbm6o_b|<9n-f0 zY@&S9EW$jJ9EK!(!Vff8WrEHRUE79DQ`3Olyb0s>V`{l`HIfk7do6XgtQmMZY?PbKkkeB+eG0E;`R5ajlRY>Rye8o9xj9Vm zy#JkU-}a0N>_ItWVXOi*@-zB@$B@1mbhM;U-myq(RWV^&A!4iSEu#P;A6Oq(U4oGq6Z|HdP(Q5D z>1&pK33PYuRRI=s=|ekHWZuirV`j|f%@X1D(G^t+(zf`6Z_KYt-zCY*q1Cw2WiR-z z1TLboZuJxXTd@ALH)ujK3R?J(5Z<@v-yHoP`<{vf4U3&ecR4l^?X%+mc=!UbifRPP&t*3GwBW zXqTTWy5ix+IUKYehxKIPzlyp1%e34co5e!N!ror(#T2TOcgfTt_sU{$ZvHUG_SrP$ z8N~R)v;&sFAZV?{;%swJYqIxnuW3=+R+E#Ajk~5w8he4kcShBWC)m0xY{!0@wL+~zU}edhTS_g6 z{OQV(cO^M5u4Zit?vxq6t4Mm5glo{0MZkie3W{Un1}|r0VCk!$)nWsw)Qj25$}zUT z`wR@zru^>%GSace=)KwxuIZZ9&PgUn#EZBK8nln_Ym*Pp`;D*Hn#0BTQWTZGeMJZiIL>C(UmO*-v%{{&?pin*~b~fy1v`^VZ9g$B|!43GjMy z**%7Hb(E#w>;;!;E-b9m`E^aMy=Kgmblt6Sa?9^fMQdL3m1g*jyw+O%DRXM8Hu@~} zxmDpqm3R~KTj5Z9T)UHoipB43`N29*aCoSE%CKJA3;qcLd1ft{6g-VL=1r2MCBY@* z6bvJKI;bfJF%ZrVokiriw$vgbHOP$ijN{U6=Ii%XtPQV^ae28LB$;^Z77G;eB&Lsq zBIK0|Y5w$djkUeZpov!;jl<)J-XB#(=2t%}?lI{so3qw`H}@n1{)>QJ6Z!McX|$^D z<`2!%;R++79+S~sfkz@17Rzh_o|X^S!?gpyII9hQIe{C{fA~S_{*3r3^4-4!5Q_O? zUzatQeb}5*z7aV_nQUQ)DJx)wd8ZLR2;Z_qtfGK2(zgBEFNF7VoQ;rrCeaCT6}Osv?v zIV4zk+aR!Xnb~G}@NpxKka|UN23oLz%spmQWVu9MWrx{~j{tB;{A5r1m6@Y7Vh`=T zdRX3jJlj)$3X35QVmlT?^V&}RWz+ANluT?SkR>E0Hhh2GG*lUGWmmyrXjBARh>UHQ ziaWxwagVkSqk49>je4yYv4?t(nAJ*mg;+Re}iJ>hS363&n1 zvMZ<2j=JQl;VLB7(d1%jhu#vKZzQs^T$73vB%4vi$)lx6({|D#Ft&g3j~|Pp98clW z+~bDWLdGEZsea}{+I?T_g}rG1W2&jdIijvqir4UVUNz z);81$l74bM8VhS(0UW|K@?$v5+Edr(eJKz;R4Vu;fdY+VTbppfTLpZm+0|)%7xF68 z;UZ~J>Wx22Ym)tvZwU7857GNr=B?gO5S-=EL<~0r#WqvSE3s5OZNnD?1K)l?u|k|! zarmNp%fI_S(EdHmAIs+j`%WdI+BTIf^R;S0R=%qwiz7ob@0O@XEOLFQ3GYNh zox`3#hd<+3oEw5)g$Py;N^wcqg3-I1*lsL79tYEESd1tHbL*+K{UBHL;(h(#ERchK zuA_}SF9)krl_pl_oSV^cun3HD)sO^JoJrTvHdFG6KEVZ7L|W%?kf)Y#7E4SKvKg)N z#r96bW)U7h4kXevYAs@nsU0X1>K=|2mC~}!b5KN$OQ0U;ixcw4mnzf_4~46~agL4H zXn^F@rQ4O$5vRO2V!>5uM&#PFqs*yB71-pcl7nlG;3ZeRDDyH3W|Ugb@>{5*zW$Q| zDnC+CoUs;NKQMW&#h}v^tjY^?X^fakb7`oEnY?A#4e=zZd&8W-Hah8&9puQj5<~tL@Gb9Vl zzn7uv8R8cC=!#CYa>LS*Rza_9H~f)gii@E91hKJdr4=l(O08jNtj>vT{+u-Cly6{z zo<#Gyz>YWOk%oJUIrEXiko2@_!#HWo)`M#wKi7CmxTg~F>qqA3y|YuY5@ z3p*Mr6An;ILqJWmJptrJ4q(?@yofwi)>+UsqWsECwE?Y0s_OO}HQYoz*Ihu-D8vYQ z$7}F2D-h7k9c8PG1e2 zPpEze6w`j-Ax$uHmKR@PB4^!8*Kkw}h1lv6fp|C!52Ia+@fOv6ZOKH*LA&INUkDXG z(H3J_QIn>6+C#ZuF*6?)M_%tff6L4fb3i)2tZM5ZA<2uq``bsRCcup&igGG3t=i3H zEjnJQs)iz0Svj_hf}5h{xP`DZ{hN5y47f0&=;_B41dfo^M}_n^a;9;=RMbe*PGz{M zYXkMoAo_i$-Z-{)J0v#4ZSsRA&0=jE(ajGsKaiJq;gM!|#|PUuHXd2y>-YG;GO}Ew zJFa{=mwI|diC&v#CH0Ygr4wPU)zLzyRQy>cM@G+$#*nuN6UTmWhM-LxH&)nTZSq1| zwtml^^!#Q^^w*DA>SBKKtjza)k1L*Sg1e$LTSE>C6fxzN@${)(X4JNQBD27k;jp9V zr3Y(z@4Q4roU^f|$s0v(Z!N^QZH|aehzhlW_d}12@bUsYOKKZ}4J$NCu!N2>$}zi* zL zNPPA;m+BPV7AJWs%X!T|;QaW=DvifsW}@9rFq8e?S1L<0L9MQJkbU7#J#4AA@^bPF z8dYrMVk1eFLCe_On5#kB;+`ML<|ieOy|fESJm9ix@h4$Wjt#=MGRU~J!h;^|-RL>w zAldIL177ZDf~sbBXU89QEb)@IN<(g1Gu+UkKu5fJHHw|{}V+DR*Fe|r9kL^H9?eF83= z(`R{S16QZJ9IWOBIn{n*Ke4-MgFM)>ZkX5HM zgZ@q9dciEk)kC|;Iq_z8Qll3k^vRro3tns)JZeZLmDKnigAotb^{kL5X+7g^9FwX! z69tX&7Bmrk=(eSN@Ye&$NwuqwW0xS5k6nLWAZuk;q zo!4#$Z#A5JNv=Im)p+bNzJq3as4z>8{L09>8vCiy=e~b@`P+*v&(H=b=6?3CM{nN) z!pOHeD$kbpE)^;DVjaZ!G7X7OlJ-j~J4$5D)e(LbYrN|C)9M7^rg34*%Wy5itJF33 z+vKh42>HoMt|lI#EzjFE2qu$ba9&~j^&D|O?`Z;&C6yjtV@{3SP_Ce{$`_4W9&v7<6PqU{!dpK zTN-|*)2dtZ_6WnD_h}0VP>r|vT33iSHs=RgRc!M3lA<8ezJWpl)q}|L$ww>9-ej7F z^J>F+DlOS3(B|q)o@6JJ9~zPoDiZ;@((W*WS{DJgy^d!)x86@slYOX#FICu{+nz~% z;}p+4<|9*6Us2?*Ycng+Y|yliOjO8R7TN?R5KF1JFfGn)$Us&r5#>=r1A4mnm!D=>05H`PxK;}JKWcVcojeMM&qDMmNUcp z<1>!o#9qS+UQ2-zoRb|N3S1o*eq%GV)a((hbK)2*YM_o)KOS4j$xwZr{f5D^$@YV>^~U$RSvP5@ z8?*7-9m>_ss39F<&3A&@-=hVXz`iG!-xk|ttbIn-rsMx5FDMzrtG}&a@APX{5R0uU zavw$xrr+-Ekhm4fpo0^ZRX^n)+Ez;`Jha<7xC)-ElecJHR^&7ggcX>!y@*PpuScuj zT9vKLSACzZ(Mr!EqWd_)RQ>(e2M1#BP#))(c!C$>P0Gfxg}y-@>2{}qGQ`^$$7Rqe zM-`KIS5po=k8n6rOZwv?_3FFhs?j7@p#yb^h^egMUk;1fymiN~RE*Ys!{U5ao|arU<%eL}|HD(4jmtw1~HR zGK6x{hRX5sw;SkGx#!)-ghL4Z#b_i~vinjHzh#kF7DC*jON3No={Z{Q##?YA@9uHc z6hCKqB5yLG_lmX-rLWw0xleTPN?#pL+*d?FqV%z|dFB1uJ_Nh>%0}Em5Jzd$$W&gI zfg|?Rm<6-_#=GK&&7HWmc3ebfV`G%t^wVef&f%Kgsj+b%B=wcf|7mfIYK4E^rmt+T_nWqP`N8C2hxV@#(3CO(C2cW| zq;~8?3I&#FY+bd;%d!l8=`wcOh&Wm1`BWn2Cm99r*eiK|ozOmUTce2f^{be5&7_Nn zdAB~vf6;c`+J47$8&c*q64agr`=5Tf>ZcwRH>O=cMW1X+-Q{b)^l$6_3x1eu`RC~F zh`kK86?6O<1aj3h@7ZtPFTqE7P<=?U{});w1=ow1zEtPV#EdHm?KRtGo(+2K^3g;T zd^D=<4OxRsm{X?m=LT*a(;8u-;pzqnyF;OLcjv{r@fqd5fk#hek5gj0C@EvPF7ayaw+}Io{UwdO4Z2Zxmi)327 z``cWZE#TBelXX7XSaNXn5(=Rqcf25g)fLEmtP2bKgB_ObwNj@*F^BomF!ajZ;+w}& z7-NWwCXd)wBG32(5De_T+bQ;Xzj;j&oxX7cIs5AcHcEmWFaxX0VKr%|uYqJKUoi;? z2)=yoo?1oF}!N;LrqX?scYJI0~)Lq0KmL<1{kq9dQM54{A#|-e%;p0)B z@33g)p^q#kB2< zii7w1a5YMz@Gub0QP}f))0_z?sDWJG>}g!CP$`e%5__F_WI9x6LOXLY_e`r`^>ge_*D#?^Qrz5ffi8Fi9X(#J& zt_O|;#sc|8H+?F_YQxj+S526$(BS!&?&sO}%rtT+2)V#CiGkZ0}^--(~~M*_&{ z&p~Q~Vq$Lut@3-{X7zC*l&^wP{o%2fj&Y(^Pe3oiVwq0xb_@=}sfKxPL zio=m0q{5XiEEpFAS3}p2{l=zGAjSfRH-p^?()Yc+_~MOV0419h!HpkJpZzesG=3FN z=RCq)a5>h4xil0|ok!4Mkjam#E*^n&^UuxHD5HNmVCeA#z`gCjq&tC(Ogau2TOJ&a zaxH$x&1Y)?eTVm@5zCA_5)PpzHHWeQlP(0Vm3C!P_AnqVQ)F6U<Nc1^8e++`J)sMZg%h21Si-ZE5rd-aj zK36|0aCkVmEAwbXwo2&nkCCz(Cd=(cV9bUEC8Yqk~n(XSCiC$b&nAp6%VS%jFEk z`BsPWpJp<;@D9L9v8qp6^s9!s!-ndki8pFA*VApJ@!L1Kog91CYcos;qVFj4Ci@kj z;WKZXzJID(%=nFPE^fK5sQ}YNLc<#pEGAWL`a1b*sXy~N1oiWFb44zQEvRU|38+U= zxb)Ab$l-9NVPGJb)6I|Px==O01=Mlt6XsqReD?40j3-*SS7eqK2JbEKMx~S+$r3 z{Y2%%s?XeS;_tLpO5X-K*d*X_$5zd`I=_ZpSfJOA6T1iy&z5Fw7GtlkUib>Vq5au5NElfo-(pMyIUHM`e zImVvsoIeIvPAANMHj}1-;h#vm^UQ)Cn*eu{Dnh27RAQ^611c}L=@Lcu_5>O5 zpd~t+9&q@6BPJ#`>HgLFY2eCpH#f)Qh84=Eo9ZuI+9!8TqhD}J*zZLuLpo>$2{qON z%M^H3try+@m>+Fsf+$T_;0^gwt%?|0c?;fdgIWN}zjk{ye7Jo5SIzFHT3nTy*55Zw`Db4Z(C*NO zbO7}<+P$SBEPk9o?Tc@{&%YJMW9jHMimGUqcH(asd=cD8g9JA9HT}tjWpwL|+5_LTXcsjSF71qFV?^TDk?sxJ z0Su3mQ-)Js+zlR+L}8Iy-YybbaA{3t2D9c6?qGr%hPGSiG}*w|olA00O|!X(!;hue zDZl05$N%u^n_)cEM$_HB=!93_KtDk`j_$8`9&2Av7@YEE^WDjf*R%s#UpRZst5FA! zN(CRY&_RjuC8dBTDfs(V1Rsdbbo8{BKCMT?KpnUBNMGFOzmnFrkj=(DbOd#X8e|H-k>yjt@x z;eT9S-7=SMbB{CiDXTXys@1HbMF&Y+u+{^pRx$gqe+V+++ESp2F2?+)TX#M;I?-Oo zm_2nNG3a^Y=RZ1F);r&0l;&;>bIQbJy}!FgF>*eRfa)B=xeu8pT)TlSe-i}kJboYdCW8Le`KHd~?jRK-bd@H& zlwb6WB|bhFcHv)7Q4qENElw1zPm+kb%htfxlqF4*<9X)+7^_>mUR>#WdbcgbAjX_w zu?*qC{B@hI@df|i7e)MR7c{M_O6{0*o4g2~2I?zuxKM8O(*dIxG9a>HETV$VV}Wac zx7!rbVT;o9=TAf9sx=BwTR@%YfmC*^qENHaeL6<+S(Y-wJ26mEujY4QOt?K5Zz|o{ zjJDF#6zHEuv@)^_xe9`@t8&Q!>QTt>r!)RkRV{tm(1F(g(t&^d)&j5BrlA14^Rp5z zPWbaZxvo%rEiGMIMw4)c@cXLKz?72LDEy~Jza8LWX>Gc-q(xIOGREuC-3Wlo2N|e= z`=Xj^rYev)=z)F(1*ql_8zd>=q5s8xeb5W4q$ zf|&;Ki=s(q*G&hat&PC&1iCiV-ohzOt@?m4wKUJFJWywE#&r-Ri<&q>kYZVzB43-0%Y77?s?xY=u0g(s38_WS`Ba*2AdKI~zb zf7(@2yoRt0z}K1kMY|Jk+miNnvXtE;>sxfZ3IoTrtIiEw1M;y{yQgxo?Rcv}VCRMilL*+uS5r!@yauB3#q)*N-vd0^9;B-%*mYjp@jex|9Kp->*ADl3`VM94h|?tEGWc z$biWDy&4K{X#Xg@6Dz*m%@^p%Ik1NSbw^Gf_qGjI|H1-VUfoZ;;Ui57KZO`RpVVgdEx}&6=Fo=>K(&CQF95gX2LUvZ+gK0w zXM*oRQCrOSs(J(g{TQM}ta~8F`(+c|;s7#o$F%n{*WC9^XyX5vM8$xPtC;1IzFA`r iTbAcRv&PG{KsqyJSzAH;kG0Z~a+!t2>DbxRC$&9HhTA+((CCXZOPd}UUsqROzUic5Ym-q`qGI*| zk?(H~yQZi$U;jCDu-$K#6C<9xE-urt-{%U4Ce;5DH%YFMkmwYLiIA$sv>+2)T zy!XYgt!x!9e*YzndY1CjX|z^W7MATPS&ODv&7tKSEG+Ako$#;D|NGbf z?Zf{r!T*Bcf0^Ka8S#JR;D2TD{|}g;iISA09@vz%}q9O`OTX*+s3J$Ig{`7>(r%7 zUA@)eI{K6q`PaF=e*Ro<>aHMsyr{UC9-qo%W@_5OBWn28{%5XgloVrQ&Z$&MeLv%c zl#Gmn2M_9Q4t?^(WvuICPtRrMy~6Gs*~Is!+?2MBUKO>rwss5Owrv}IFSU%;rtMzj zInl>>_;+?TB})6Lfq}t5CcByXat<>=8snmgNk(p4U97y{%%5K*uPFgJ4|UN`b5?9) zIHrc0CFJCcM9Zjhr==I@8#SDropp6}FI~E1WYn5vQ5hc}|Dc|)bn}J{ znimC!f9C1^`&bt)TzJOe^mpajvTO9DProVxb*w4&3;q55G@7eyqDP=>Gl5TIOlRfYMUGVTTYw z68YLltHHuPl?j$DWk%}+{J&`Uh4%LL;`lk%3g~BDQoMZmRY}|;Wras)*$sPzvDK9TyyLRo+9~KAJ za@GhQ=HBNoUU(1v$YKsQrCQElsdMZbI|m27>PXXall2P4WajwPR7uVj1KPF&`}UnV zb4G?d*+0_u&VA@d+#7`stM@OWqu;p=N?rc^=-6nH#E~P~Z9Z?<^7muoPu;(NpLV#& zp{-B>MuOrpsA^!)Jn%iabZODcZB$$P`M62&;FX`b z!=2@~gnVayVKegc^Z)o7zI=$y-leUpOATJEjgnsaEx&XqrFd)8Mgf8Oo~LTZCu$^c zXJ;z(^l1|+XU~4Y{dON|mGzmMoSE_Pxz#+*Wcu{S1u6w^O?-1J;oObF?K1x4q(ydD z7Z=~79^#jp59bJW(C+PKv~`EbA9rZY_g$DPC@f^8bnFuo(-UPbOm~bnXInRA7_<9{ zIFcAYvbyiC-#PMbwB&2_F?vjF`T;eD?I|56>m6C!ZOt;^r2Tb?NE( z@-#}?aq(xF#^+~hz)WOqt(j4hqI`8O9^2Jtz;Et4S+ zAI3=9g;9gwzduE?i`kPrbtb9GfavLvEzIaRtF5;oDL0)k-Yf(YjpMJ&ra^{nLgjI zUbyfzO!Q*OY+sbDYhTar--BXrY_hVl5DNtb1?}zaRM{VN*7?<5*fVuQ!$K@HvvhH8 zs5u*VlH6D$dF9(Ht>g=iC9_uQ>h37 z^zUSOkXBfDbmvZs;g%dB?>{Hcox2~Cvwd-K5ea71s#Sf9|1=ESd{3(Vt|o8nrOhFh z$&!Q9ryQ1$pf@hnJjef+#@xIUdDM-uQBAHPL7DsOy|w#r-B94Udk+J=IU;iU-~BEoS(BAG?;$@Suhw%OirQ$bmmSMT1vi&?gH zS9{_zUWF@Hu3Wy{gJ-PmD%>Id^6lHVuU_q9vaDRQ<|;CE%!;joQ%)>h!otE*j_vbP zKOHMSejM0;M6OPLY2I{ct_l0eI8^JwvOJ8n92)7DoAN^KpT70Z{S z1~`9_K60YSlyjZ7mX<5>s$vk&HWFD|EiUeyni{Usmo$UygGTvf8J0&*Ea%w1Z|`2~ zfp3ZH*RLl(2oT-Bf1qP&ar*6*?_Xo()m&f3?T}&FpO~14yJk}2?Wv*hIA+;MzC~RO zNy7STk;hoPAR8B3IqO|YM#jU34;SYKGwHc$G0QT(eEzJ?chvf;!1+Q=`9Fak;j7J9 zgvD%;bHl>Ic(!c$-P1!+?5*IIrCK0w-R2yJmI%qog@0F8+mDATKNHQdGC<<*vhppFQCkxJ9q9) zc6MF#u{G6aGcd{&=u(Y&PQu_2UXp7nl znX&JZ_wL=BlPX*H2_?k7P5_($N0Uv%d z^;n;&=4bo0hK7fkysu@JbNsPmgv2A&?%r*QczgW#ag>z(H|dDYxZu*#c}c2KNAV>q zn-ZFKeXt-cEo~-pety2Fs3=u0v(dNsIV!&Tv_{*pix)3)a0DW<^$iSCI?PbzJUwx0 z4Rst-JUl#%rI53$xwsZ8PQGvXHjmayeIxPSi_eAU!w8@r+G1vN#?JTW@2 zqmANpGeg6@zPh@)t*tnhLi2f>o0~z}5RYntBhAgwHng<1PCXVC5kVPAnu~bx!su`2 z^JhqXe<$kX^-7Pe?ekasM}|dpL6lOvfEwx8nm>jLcj(ZeId<2Vx<)xH)1w`J2*MpZ zcG&LL<$P`EL+>kLJZPcK7z~>h8$Qu7PSG)FvkTppd?C6e$1Yr0l&+70mt%V6sGOYK zDFubUlLOxiT&?MvB_$H53DR_?Qc@2{qq($%x`fbmfR>n`Ks>OkZr9Ny47~~ z)bzBwlhe#_;l(Xf`SFQ~r%#^H4tw`}Uaup_^evZlcc0EMe#g$i0c3I<>k=1NPyZl% z*ujs(pAmBN<}x>H3kwUKD~gJWDQYUeUc6?6&*YUZ4By}oRL`O$vz$Na^fFG1b2wB) zkM?PSs*^f3+7bKoX@aA;r-_M)n*72fl0?P(_uk&#kw>n?JLZ#cYXO_Ejqlt?+Y#em zp6+FGDbetwD7CI-{;X69!?!kZBPoUM8^n$fwXsH%+aH&<*lXGWHT05?Y1d`!1XZ>r z*FLqMX;>rH0NlPT98VJ3Eiv z+qjp;t=ynBj;Ib;!xw*w>NPz=mAF09;+Ud*3fJ`UPUVunBk%A;R@T;o{EP~$D(>h*tU)K7Uf!T)WPGiz#*OH}0lE*jBwE*=Jagu=mKurKd5b&OvBQL1`Ht-SxwckE zUMPn>HC6|uprpKBKtQ1I`tZ?f{q-orZVcL4OXXq#nUs-Hda7PRe7qE*)@`uyd$QUf z|AXqEKfO>#@XS&duCjhIXD+*ka;g{^9O=;behr+Xn68be4<}*?xY0 zn@QV_U4NUCLvrrAT~d1&2nTVEb-wi7L|!fKx13{Z{O#Mfk>-_AUp{<5mLD*9+Jv>a zclb<~a|m5?b(QFQa@F2`cwitUGQqMsEL_Y~YRLB?o^xTg&QDOYUDO;KTU?DRs9GwCM&uU zr0?1ENko?Lxb}6*DC$Z|e!hOk9x+Ktotz7qCdEUt)B6srD8IpeI{jJY!)<@Ng2ZyK zHfw5Yzru+EvYL4IhMHFd&_{3FwryjMjiHLCq@`)gpCx%s&@|_0T583U-_BEG(POBJ z;+I*5#m1U?c;w^p9=p3ywmTq;B8C3=!di`c69>#ifcutL?S*cso^&O^E+PXf3;Db) znX;dMa-R+7bs_p_XjoW#%e|xQYk0+-yFR37B~$5>zb9fN54(l8wYBNE{%C1IAgI<= zRe$-i|G2-Pb<=PgooALv1JTFa8T%*3{#0(Z|xlzxMIRTa{c;sTsXU*x%O!CG&P^ZYzE#bh*Jop3P~Q5 zHDg`5R=*@NGP1ieL@oBXF+D(-n`F1A@Y=vQN?%Ii*HVvU?fyy{Zlq4~u{Fl~_ z2!Y`*dt<$OL-ppSM@P|JJrtqXK12r;dQLCH=#Zi7+pEoQfZ+%rvnE3HCL2!%Fx0_= z4oGlzO&OB!TKsU|n}ftI3$1XD9-OJPKD zuURuWK7Q1D#>vDaCMNWi?^j@b+s3r#f^1eno&LL1Q&KeSem&WJzOODeGr6Y9XSz+= z{QdHrjKQn{jgF}MaRfYPZ}P(LZo}^ERgK)VZk?It-zyHmwhwjF4GZ$~DS^65N&zvO zwY0T2ZP@S)x7I}GMuEg%dEZWUq*rOj_9E|D7m}2St;F2dW21P!M8T+C%F2~qBL&uz z{SD-Ke&qYQ<9~;cFzE4$oSc+kLv$}8q^XEPQ(s?S@;Mb<-9`ZL+WrmlWz2N~uk`_b zF6LgHo&2t*`b+p_UfK8W*#H7bep}f?H;I+Z#Lww6XSU$*rpK$rkaEAHm&kj~bqz&( zZ;Zz!8byPAVE^I6XT@V$W^Vk0|OCJQHv(5IvaoyBE-#a z;&k0qaToTQSfo@6QSOubo?8>yvhvCG(RO2feF}%a=RY!L&ownQb<^~n|8$-tNhz?g zuThU`Ae*%y)gSiw(`h==^XJbWkEv#BA+MoB%zH6!WT-2SxiOAh`L>IGhkULEt?IXL z-zHha)s}M{P*+s^h$@%wIbns*0&YeNt<6~=7*&MEeGR`=<(9D)R%mqn?X-SkI?59VAQFHTOax2#S1hBWP~gE z>Q(?j)G}`$pTQa7v)CX+B(qF_l1m_ae^#~;;9;cMa@tqzJ<4shQ^P;G`K44sEH7JI z#~yX7n%R=RVhv@z^6`o%&%(n;e`G1xJ2SExWI=eiHFb2zZ{J>4SEuIF_3PI!27}Sx zZ)0JRpxawjRfTOrPOhn`dG?I<;lu6faIsjD7ZRZE(#9t5v5#BCiYK2m5ATrip8135 z1FVc2$&9h(1%Q@E8v`ggnB@-$sSmV62}T2VNDSjYNEnZLgs@aNR#0~@Tj-suHW*X5j=pPkUs z(qcZ#YDFC(TCX6n5*bv-M~~JyIy&aaAQTC#M_3c$#gmN~1ulk^Q;{rx}EFXmxg(*OK(sps=! zTjsaCauv$fd>{kniBCw%Xbo_2rEzgjtE$#wA;Gh{Kg!C=mgX|UfjFdWX%r+3zMja- zQ&Ur@mA=2D-D&caWV1cELcjqnDO!6;JnQ)R?cS!+ma!{4m7OvwCcAx4QdRO28NyX6 zndu7p9UEJpYk#pK#;0hC{0cEaUL#>{X}MWIpcR>e#PbLl`OzbF9i8+_e}f$|W~->F zsUV;n-%i{oejH~sMw)Kz?(g3>*{2rg#}f~<&c0TF!f{wzQ%~Dy`hAiA{_e9}VK39t zhLA@;H5ZT7NYtss$Q1w-SzX(z&Z|6}DvYP0Td*Qw|C%%v*TNH@L~9L>XJUMOQXd4* z5}F89fnqRz?fd;Z@Z=irt`CF0n$$mW>eMM;-x5I<(!f2};;H zz^eueg=*k|+S=VRW}sdoia&ffy;*>~y&LGtZ?Zv|>+h7FzOayxkeHYlN&M}YEFi1WsIU7M}X?(9K^0k z=xS*_eg5148M<;=z}jssaS9yQ9bb-UJN@|ivwDTHj?U&$%^R{v-JfXJO+euGuTsKU z3FmnU@SN>Up>o;T*^#7$<^SJzNn}!k@84fdl6w1a+p&Ov0GDl&t(!IrfNXH_ z`Y0?S(pC5y^9Bov*>9;9@BuB#KyiN9hu{Sgx58n8+|w4B-kU2@uz_Mt``(jwF5rn}o8K!4(vx zqoJXJ^u@6Zq4$GWZvu~%iv78&Voe7Ni|?<_Zj{>XoQ=!W(@q^88OhL$==7KE(%>XE zbEo^MWuaRcSE4)1YK6fSs;M=xDP(77Yn7KjlqSyEDlK=_CiUfnJCJP9ofnxK4sO;uef6dXsW|=;Y(|0&ewwsjfaoo}>t_e4UrKSH>*K zgZBOb3Zi7OQV5qQ7$*^t^W6SN?}mgd4J5}-p75t~W$an`@1fAy1F<|oenW)j)vE_8 zgX14oRac_{=`m5$FwDJr)~QSd;bb8!gANIu0`o^bS}N{sM|Y7o?A6~8x>fn1Km!|} zuuPBOAOC&W0F@Pi;o;%^<^n)X!T0W&@8wuTM$$o*ym~cFu-c}rFsJn(>BJ`7&PIyH zPPFh|US1>~Conz$Dz5$e7S%yZAuqJ@UkU|*{qp7ZhrD;5cirHe=)>3V-^m<@Q3!aq zZ4-50>!u&jvZYfyj*;aL7&)MPY5(&dGA@3pyMn7$y6S;?LI5I- zGqN5aHGy;|vD9#tvreF|YeIKKdZYo`4_z~$a+UFOp1y;Ul5PugOg=t7@`0D&`OVGE z1guB%8d*!GrCkeoM%-O#KI|?bdes8|;)Zn?fj{Ia`MeSa}Im2#cBo$TlkS zc-(g)9gI_^X{pI%?f!G%wGrB<)nwVu;Kx?czB{8UoIIgPCeO7NxORArl5!NQ?_7TT z{JAVZtE63He^vwtKI*H!yBZOaH`&4noQX3<1NPm*9F5Ezo+j^V^OIO$=lVaJHf>5X zEj|9vKc_-=a|y^iVv{i&0bE*!u-hy!GBQFwkoNku69f#$qOng+rhd^85ud9?xYR8z zdm%y4Dz@+4tE_g<+0|96d&{-d;PCC$y}-agq=z}F$=cU8!iTW6M5)tB)g9P>woY!MCf~VR#-EKqxp&mnDs2J;x8=&CpQMi@7THn;6c;w%=Zz_3)T^ zZC)Wr?vDd6`1-MJBcMEDK@xoFfL6rPHwo)WX44_I-nImc!mSl<~v(#*|OzLg%Qm}xHlo>xM7a14)n$t$@}}Yk{$@i zzB&7J50I-YZl;oG4^oHT;0GWA=Cf7%knL1dw9hwzDAdx_Y;9|clC&dKO2>c!LgCxD zPrt-_R(@%=4oDcks-OSCC1`YnuyEo8i}~uH@A8zcz1AmS zu9ma2=l-XOF)Yw{Y2TqNzRt*|Sg>N|Aw*a^Ewboh2kw5UxVx{vA1U)L>uI#Y|d&FLLs^b5#Yd zzaI+7y39p_5B16Z1=1dfEOl|^>eZS%x&{Xahlh>d9s5vTesbZ+t8N7n2USW(hdR=U zb_^2VdLf}qM+u;;cgU=z6JL)JxO(;LO}L)V$sVbq<4d!#ONW|o$@(TqjSD-M!J~lb2y%3i>!^JN| zr_=R7H97ryUw(@NoYL0Kn=RjZkx2>xYcz5WnU%3@9Jo;CkGz==w25$0d45zflei=$t{q{{fJjlphglOqL@*?K2Jr?BscQ}uOYwP9P8{<<$^%DbZ z-#{s-{P1DZ=FJ2ADp4q=03ks^K~TE@&*mtUnb-K|n>U(uSK$)ay?ZyKy|=Hgu`yuv ze!33R}1ZCrQ_REo=&C%c6uCl5S0C?_|s<~R4F%HDWEBHL625Z|>MhixM{|04o;oP}7 zMrtPHX^+KuPg2m_cZe2SOufg(DusSCCT!GYxH;ay*zfW-~!0C z!R>*g209~50;2o&sh`g&DWBZ5WeZ?108~e(wnk2+J@_D>hIqw2E__n+1W}J2Ay6qB z*Q#>X`K7ezJ`Wf9kVOuvHuqC>yP=t%btyfm?q5HL@DCTdZb~U*!v=bwQ6#R`hD5 zMN>$HkbzBon43q>9$EpNyAwS$+Irt=$1CgySRmGSSUWm)yh-!}7%Frh9T^I;Y}Y}~}y*laH=D>XRmpz%@HJ{8-FO_a*Ii;l&THuc-#=OL{)a%Sik%Od1S z1C(ggMu1wle-xjR-&KMMq>=l&x-^d+5EX3$Zv&5n>9Nx!+qObCY*xERcQ6vEOM|CB zNuW$9J2!V~Y)m64u;l_5H@CZsi|~O1M;;G-{`{E;4_v11Pr>x53TRFx(53On{ZSff z%a$$M1D_0dx!147+ZR{w!(tq6&Ux)eZ9jkh7!<2Fmepu@D2^08;ah#RQCoO&%>G*G4)31F%4l86-f8%EC_1qO03kt%dTEQri5 zBU zBBG)?Ib-lYI5fZcc%)A4{?8`Jjj-qtLcKkm3fhEC?-JYMx^hA1GK`_AI;4MC}QSNK9S~-Y=_gsc3^oRbFgPX1%DM36zI`(X_lFturQojutb%! z|MA)!nHbKXZ`nM`_8lC{m*YYy`E;R=h5F&>n0Zsdek`?fpQtDbGl;0#s;YDUeY~n_ zdSR-SPzqx_EB+KN#D6?Dc= zJXu-U36N+lUn!(7^twzjN^&^E4o$s|H)WYt`QwNP4@fy1_g?t$@#F4YyJ)_N`@ypn zBC9Js;B7!B?51Xa^{NN!ihK}T+f%_?5jz#TG%Li^5G^D(${{G-`s?G6HW&U*>y8O_?d_9ojpJq-`b2hkaP5~*NcGPvKh9tD>`!veCJ=^sv|IFqRI zKvBSZ)Hww#`0V-f)!^(wEPwr~JArhAjbw0mbqCSG_(KKx00s-J<-}GbWt<;E9W9oM z&*a2}*5hA2J+Desmi$dAA~)E0=@ciy;w>JqcXK5324YCYtBJOu=&RiN`Mm@$3t;Pij}zFZ?x<9 zkm_Km#%?BnaMQ+?Lx)}(%C1vcn*5DAvNZo&9zp34>BySyGomTv$Gk`7V%}T*FgE2& zto)+O%CZQ;%tSKEaL63OxjJGUTF^SJpAe`sjXP-88#H&gz{OxyP7QE_o6 za5H$`Cat7oq!vQCMW$7=XCYvicrLKY8UYz~$w0v*2w=_URK{o#z z#NXrT1;x!y0EA8cSWdVCp=@%mTv>0yA}(-~jUog)k1cX&sqX^*p3;fy&*sRtV*3rk z#)j7W(GG>lmnEdB9~MXmZZ0n0@N*!;DAM>jMr*;u&JelyN@gJhU$RZVe~FgfU?nH?9#JgGh2?O))73+@UZ=S zP$l(iKC(Rk+9WT_uJzbGFjlBA!GgT!!7@Qq8zwwN|M#!1U0cJ&MQ5`Z_>q-hyOto7 z*;&rw^OkJ6yX*1C&DkhX$$~8YFeg#`uwUcT)6#v%EJ$*4a1C16*`?xXA9S*)+)Pfk zo*rpqo@fUK0GW}_!LmJs`17Ek^Jp?BPeg=-5GGJ#Q|m>RdT|8*Sz!JNCX>!)PJ*NJ zN7l~0f0vo5;6`uQD(%qv#_~MrQP0p&D=L(ukPw!YU;~3%g8T~gO!!v(I?Gr|>k_Jx zrX`DZ@c19X=cTCoJwWLpZ%=AiB2IYqO*R&myWPBNF$wmt6Grc@mH*%Vm7$E30Im9- zQAPo%1qq4l`1n&HtY!5$Gv60S-Jo3?z?zUcZCR3^k9=7X>pgyNE==3A-vIaR|FJ^q zySTc-2uu`sIF<5j8s2wwl%ltrlj<&ng&1y;62u|;1CT&&1K&QPv~{qv1SmMMe9|>C zDst}rgsS=u&My&>K^U*FByn29Py#bc=7bL(%($*Z4=|j8YB(`50YQZJB(u@0U`V~=goDEf z^!27R0|~pvG!RpiaZ2%7$-ueR%F1N?W-wzpPg%^?1*`N#NWQ%Bxu#|w$!L+8={GR8 z1bXA>c;raiJ7DKjosR9jaf>zo5i@kZ1?~!Gydp!-iTTZ*_x3J|nIl1T$93VAaWX?T0PEBX`L(kXDwCI%*EU-0bu>70V(@9B z#u))B08Mdl3mRox1uxzo^je(#O{6A})+BcSpGr4AvsDuwN30WmEtL?~&JbMZa*SnwEP0<+ zCt~QH!{G`iK0GvrD7H)_Fmqy8+KXffmY&}qfdxPL-Rv8z6i!rGmYh&OP)smT@7lGi zKPBMgippI3pE430{_@x{_D5l1CHP%v?gpH1J%0A=2)yUSuz;>EV?WCbX*q|}JD@0_ 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/widget_timetable_preview.png b/app/src/main/res/drawable/img_timetable_widget_preview.png similarity index 100% rename from app/src/main/res/drawable/widget_timetable_preview.png rename to app/src/main/res/drawable/img_timetable_widget_preview.png diff --git a/app/src/main/res/drawable/layer_splash_background.xml b/app/src/main/res/drawable/layer_splash_background.xml new file mode 100644 index 000000000..22c1be470 --- /dev/null +++ b/app/src/main/res/drawable/layer_splash_background.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/app/src/main/res/drawable/splash_background.xml b/app/src/main/res/drawable/splash_background.xml deleted file mode 100644 index 0b79b6729..000000000 --- a/app/src/main/res/drawable/splash_background.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 35a681f0a..3b04cf220 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -7,5 +7,4 @@ android:id="@+id/loginViewpager" android:layout_width="match_parent" android:layout_height="match_parent" /> - - \ No newline at end of file + diff --git a/app/src/main/res/layout/current_week_tab.xml b/app/src/main/res/layout/current_week_tab.xml deleted file mode 100644 index ab3755a12..000000000 --- a/app/src/main/res/layout/current_week_tab.xml +++ /dev/null @@ -1,8 +0,0 @@ - - diff --git a/app/src/main/res/layout/attendance_dialog.xml b/app/src/main/res/layout/dialog_attendance.xml similarity index 91% rename from app/src/main/res/layout/attendance_dialog.xml rename to app/src/main/res/layout/dialog_attendance.xml index 4b0f1ff9a..730b632d7 100644 --- a/app/src/main/res/layout/attendance_dialog.xml +++ b/app/src/main/res/layout/dialog_attendance.xml @@ -35,7 +35,7 @@ android:minHeight="60dp" android:minLines="2" android:paddingTop="10dp" - android:text="@string/generic_dialog_details" + android:text="@string/all_details" android:textIsSelectable="true" android:textSize="20sp" /> @@ -47,7 +47,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/attendance_dialog_details" android:layout_marginTop="10dp" - android:text="@string/attendance_dialog_subject" + android:text="@string/all_subject" android:textIsSelectable="true" android:textSize="17sp" /> @@ -59,7 +59,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/attendance_dialog_subject" android:layout_marginTop="3dp" - android:text="@string/generic_app_no_data" + android:text="@string/all_no_data" android:textIsSelectable="true" android:textSize="12sp" /> @@ -71,7 +71,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/attendance_dialog_subject_value" android:layout_marginTop="10dp" - android:text="@string/attendance_dialog_description" + android:text="@string/all_description" android:textSize="17sp" /> @@ -94,7 +94,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/attendance_dialog_description_value" android:layout_marginTop="10dp" - android:text="@string/attendance_dialog_date" + android:text="@string/all_date" android:textSize="17sp" /> @@ -117,7 +117,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/attendance_dialog_date_value" android:layout_marginTop="10dp" - android:text="@string/attendance_dialog_number" + android:text="@string/attendance_number" android:textSize="17sp" /> @@ -143,9 +143,9 @@ android:layout_marginTop="25dp" android:background="?attr/selectableItemBackground" android:focusable="true" - android:text="@string/generic_dialog_close" - android:textColor="?android:attr/android:textColorSecondary" + android:text="@string/all_close" android:textAllCaps="true" + android:textColor="?android:attr/android:textColorSecondary" android:textSize="15sp" /> diff --git a/app/src/main/res/layout/exams_dialog.xml b/app/src/main/res/layout/dialog_exam.xml similarity index 90% rename from app/src/main/res/layout/exams_dialog.xml rename to app/src/main/res/layout/dialog_exam.xml index 72d4b8ddb..e59956ef8 100644 --- a/app/src/main/res/layout/exams_dialog.xml +++ b/app/src/main/res/layout/dialog_exam.xml @@ -35,7 +35,7 @@ android:minHeight="60dp" android:minLines="2" android:paddingTop="10dp" - android:text="@string/generic_dialog_details" + android:text="@string/all_details" android:textIsSelectable="true" android:textSize="20sp" /> @@ -47,7 +47,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/exams_dialog_details" android:layout_marginTop="10dp" - android:text="@string/attendance_dialog_subject" + android:text="@string/all_subject" android:textIsSelectable="true" android:textSize="17sp" /> @@ -59,7 +59,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/exams_dialog_subject" android:layout_marginTop="3dp" - android:text="@string/generic_app_no_data" + android:text="@string/all_no_data" android:textIsSelectable="true" android:textSize="12sp" /> @@ -71,7 +71,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/exams_dialog_subject_value" android:layout_marginTop="10dp" - android:text="@string/exams_type" + android:text="@string/exam_type" android:textIsSelectable="true" android:textSize="17sp" /> @@ -83,7 +83,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/exams_dialog_type" android:layout_marginTop="3dp" - android:text="@string/generic_app_no_data" + android:text="@string/all_no_data" android:textIsSelectable="true" android:textSize="12sp" /> @@ -95,7 +95,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/exams_dialog_type_value" android:layout_marginTop="10dp" - android:text="@string/generic_dialog_teacher" + android:text="@string/all_teacher" android:textSize="17sp" /> @@ -118,7 +118,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/exams_dialog_teacher_value" android:layout_marginTop="10dp" - android:text="@string/exams_dialog_entry_date" + android:text="@string/exam_entry_date" android:textSize="17sp" /> @@ -141,7 +141,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/exams_dialog_date_value" android:layout_marginTop="10dp" - android:text="@string/dialog_description_text" + android:text="@string/all_description" android:textSize="17sp" /> @@ -168,7 +168,7 @@ android:layout_marginTop="25dp" android:background="?attr/selectableItemBackground" android:focusable="true" - android:text="@string/generic_dialog_close" + android:text="@string/all_close" android:textColor="?android:attr/android:textColorSecondary" android:textAllCaps="true" android:textSize="15sp" /> diff --git a/app/src/main/res/layout/grades_dialog.xml b/app/src/main/res/layout/dialog_grade.xml similarity index 91% rename from app/src/main/res/layout/grades_dialog.xml rename to app/src/main/res/layout/dialog_grade.xml index 932c895ea..3f6943519 100644 --- a/app/src/main/res/layout/grades_dialog.xml +++ b/app/src/main/res/layout/dialog_grade.xml @@ -48,7 +48,7 @@ android:maxLines="5" android:minHeight="80dp" android:minLines="2" - android:text="@string/grades_text" + android:text="@string/grade_header" android:textIsSelectable="true" android:textSize="20sp" /> @@ -59,7 +59,7 @@ android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_below="@+id/grade_dialog_subject" - android:text="@string/dialog_description_text" + android:text="@string/all_description" android:textIsSelectable="true" android:textSize="17sp" /> @@ -71,7 +71,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/grade_dialog_description" android:layout_marginTop="3dp" - android:text="@string/noDescription_text" + android:text="@string/all_no_description" android:textIsSelectable="true" android:textSize="12sp" /> @@ -83,7 +83,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/grade_dialog_description_value" android:layout_marginTop="10dp" - android:text="@string/grade_weight_text" + android:text="@string/grade_weight" android:textSize="17sp" /> @@ -106,7 +106,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/grade_dialog_weight_value" android:layout_marginTop="10dp" - android:text="@string/dialog_teacher_text" + android:text="@string/all_teacher" android:textSize="17sp" /> @@ -129,7 +129,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/grade_dialog_teacher_value" android:layout_marginTop="10dp" - android:text="@string/dialog_color_text" + android:text="@string/all_color" android:textSize="17sp" /> @@ -152,7 +152,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/grade_dialog_color_value" android:layout_marginTop="10dp" - android:text="@string/dialog_date_text" + android:text="@string/all_date" android:textSize="17sp" /> @@ -178,7 +178,7 @@ android:layout_marginTop="25dp" android:background="?attr/selectableItemBackground" android:focusable="true" - android:text="@string/generic_dialog_close" + android:text="@string/all_close" android:textColor="?android:attr/android:textColorSecondary" android:textAllCaps="true" android:textSize="15sp" /> diff --git a/app/src/main/res/layout/timetable_dialog.xml b/app/src/main/res/layout/dialog_timetable.xml similarity index 90% rename from app/src/main/res/layout/timetable_dialog.xml rename to app/src/main/res/layout/dialog_timetable.xml index 5898bc4a9..365af4bfe 100644 --- a/app/src/main/res/layout/timetable_dialog.xml +++ b/app/src/main/res/layout/dialog_timetable.xml @@ -35,7 +35,7 @@ android:minHeight="60dp" android:minLines="2" android:paddingTop="10dp" - android:text="@string/generic_dialog_details" + android:text="@string/all_details" android:textIsSelectable="true" android:textSize="20sp" /> @@ -47,7 +47,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/timetable_dialog_details" android:layout_marginTop="10dp" - android:text="@string/timetable_dialog_description" + android:text="@string/timetable_changes" android:textColor="@color/colorPrimary" android:textSize="17sp" /> @@ -59,7 +59,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/timetable_dialog_description" android:layout_marginTop="3dp" - android:text="@string/generic_app_no_data" + android:text="@string/all_no_data" android:textColor="@color/colorPrimary" android:textIsSelectable="true" android:textSize="12sp" /> @@ -72,7 +72,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/timetable_dialog_description_value" android:layout_marginTop="10dp" - android:text="@string/timetable_dialog_lesson" + android:text="@string/timetable_lesson" android:textIsSelectable="true" android:textSize="17sp" /> @@ -84,7 +84,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/timetable_dialog_lesson" android:layout_marginTop="3dp" - android:text="@string/generic_app_no_data" + android:text="@string/all_no_data" android:textIsSelectable="true" android:textSize="12sp" /> @@ -96,7 +96,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/timetable_dialog_lesson_value" android:layout_marginTop="10dp" - android:text="@string/generic_dialog_teacher" + android:text="@string/all_teacher" android:textSize="17sp" /> @@ -119,7 +119,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/timetable_dialog_teacher_value" android:layout_marginTop="10dp" - android:text="@string/timetable_dialog_group" + android:text="@string/timetable_group" android:textSize="17sp" /> @@ -142,7 +142,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/timetable_dialog_group_value" android:layout_marginTop="10dp" - android:text="@string/timetable_dialog_room" + android:text="@string/timetable_room" android:textSize="17sp" /> @@ -165,7 +165,7 @@ android:layout_alignParentStart="true" android:layout_below="@+id/timetable_dialog_room_value" android:layout_marginTop="10dp" - android:text="@string/timetable_dialog_time" + android:text="@string/timetable_time" android:textSize="17sp" /> @@ -191,7 +191,7 @@ android:layout_marginTop="25dp" android:background="?attr/selectableItemBackground" android:focusable="true" - android:text="@string/generic_dialog_close" + android:text="@string/all_close" android:textColor="?android:attr/android:textColorSecondary" android:textAllCaps="true" android:textSize="15sp" /> diff --git a/app/src/main/res/layout/fragment_attendance_tab.xml b/app/src/main/res/layout/fragment_attendance_tab.xml index 4dc450b58..38fc1bd72 100644 --- a/app/src/main/res/layout/fragment_attendance_tab.xml +++ b/app/src/main/res/layout/fragment_attendance_tab.xml @@ -35,7 +35,7 @@ android:minHeight="100dp" android:minWidth="100dp" app:tint="?android:attr/textColorPrimary" - app:srcCompat="@drawable/ic_menu_attendance_24dp" + app:srcCompat="@drawable/ic_menu_main_attendance_24dp" tools:ignore="contentDescription" /> diff --git a/app/src/main/res/layout/fragment_exams.xml b/app/src/main/res/layout/fragment_exam.xml similarity index 100% rename from app/src/main/res/layout/fragment_exams.xml rename to app/src/main/res/layout/fragment_exam.xml diff --git a/app/src/main/res/layout/fragment_exams_tab.xml b/app/src/main/res/layout/fragment_exam_tab.xml similarity index 95% rename from app/src/main/res/layout/fragment_exams_tab.xml rename to app/src/main/res/layout/fragment_exam_tab.xml index 433f5b1cb..9614f80fa 100644 --- a/app/src/main/res/layout/fragment_exams_tab.xml +++ b/app/src/main/res/layout/fragment_exam_tab.xml @@ -34,7 +34,7 @@ android:layout_marginTop="40dp" android:minHeight="100dp" android:minWidth="100dp" - app:srcCompat="@drawable/ic_menu_exams_24dp" + app:srcCompat="@drawable/ic_menu_main_exam_24dp" app:tint="?android:attr/textColorPrimary" tools:ignore="contentDescription" /> @@ -44,7 +44,7 @@ android:layout_height="wrap_content" android:layout_marginTop="46dp" android:gravity="center" - android:text="@string/exams_no_entries" + android:text="@string/exam_no_items" android:textSize="20sp" /> diff --git a/app/src/main/res/layout/fragment_grades.xml b/app/src/main/res/layout/fragment_grade.xml similarity index 99% rename from app/src/main/res/layout/fragment_grades.xml rename to app/src/main/res/layout/fragment_grade.xml index 604588644..bcead8e33 100644 --- a/app/src/main/res/layout/fragment_grades.xml +++ b/app/src/main/res/layout/fragment_grade.xml @@ -156,7 +156,7 @@ android:layout_marginTop="40dp" android:minHeight="100dp" android:minWidth="100dp" - app:srcCompat="@drawable/ic_menu_grade_26dp" + app:srcCompat="@drawable/ic_menu_main_grade_26dp" app:tint="?android:attr/textColorPrimary" tools:ignore="contentDescription" /> diff --git a/app/src/main/res/layout/fragment_login_form.xml b/app/src/main/res/layout/fragment_login_form.xml index 6e82b5280..e64384d32 100644 --- a/app/src/main/res/layout/fragment_login_form.xml +++ b/app/src/main/res/layout/fragment_login_form.xml @@ -29,7 +29,7 @@ android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginBottom="15dp" - android:text="@string/step_login" /> + android:text="@string/login_progress" /> + android:hint="@string/login_email_hint"> + android:hint="@string/login_password_hint"> @@ -120,7 +120,7 @@ android:layout_height="wrap_content" android:layout_marginBottom="30dp" android:layout_marginTop="20dp" - android:text="@string/action_sign_in" + android:text="@string/login_sign_in" android:textColor="@android:color/white" android:textStyle="bold" app:backgroundTint="@color/colorPrimary" /> diff --git a/app/src/main/res/layout/fragment_login_options.xml b/app/src/main/res/layout/fragment_login_options.xml index 9c9cbb964..be09acd17 100644 --- a/app/src/main/res/layout/fragment_login_options.xml +++ b/app/src/main/res/layout/fragment_login_options.xml @@ -27,11 +27,11 @@ android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginBottom="15dp" - android:text="@string/step_synchronization" /> + android:text="@string/login_sync" /> - \ No newline at end of file + android:layout_height="match_parent" /> + diff --git a/app/src/main/res/layout/fragment_timetable_tab.xml b/app/src/main/res/layout/fragment_timetable_tab.xml index 612b5df81..d4f0a55e1 100644 --- a/app/src/main/res/layout/fragment_timetable_tab.xml +++ b/app/src/main/res/layout/fragment_timetable_tab.xml @@ -34,7 +34,7 @@ android:layout_marginTop="40dp" android:minHeight="100dp" android:minWidth="100dp" - app:srcCompat="@drawable/ic_menu_timetable_24dp" + app:srcCompat="@drawable/ic_menu_main_timetable_24dp" app:tint="?android:attr/textColorPrimary" tools:ignore="contentDescription" /> @@ -44,7 +44,7 @@ android:layout_height="wrap_content" android:layout_marginTop="46dp" android:gravity="center" - android:text="@string/info_free_week" + android:text="@string/timetable_no_items" android:textSize="20sp" /> - \ No newline at end of file + diff --git a/app/src/main/res/layout/attendance_header.xml b/app/src/main/res/layout/header_attendance.xml similarity index 95% rename from app/src/main/res/layout/attendance_header.xml rename to app/src/main/res/layout/header_attendance.xml index 350b24522..7299eb6bf 100644 --- a/app/src/main/res/layout/attendance_header.xml +++ b/app/src/main/res/layout/header_attendance.xml @@ -1,7 +1,7 @@ @@ -79,7 +79,7 @@ android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginTop="10dp" - app:srcCompat="@drawable/ic_exclamation_24dp" + app:srcCompat="@drawable/ic_all_note_24dp" tools:ignore="contentDescription" /> diff --git a/app/src/main/res/layout/exams_header.xml b/app/src/main/res/layout/header_exam.xml similarity index 100% rename from app/src/main/res/layout/exams_header.xml rename to app/src/main/res/layout/header_exam.xml diff --git a/app/src/main/res/layout/grades_header.xml b/app/src/main/res/layout/header_grade.xml similarity index 94% rename from app/src/main/res/layout/grades_header.xml rename to app/src/main/res/layout/header_grade.xml index b819dd54c..79bfefd8b 100644 --- a/app/src/main/res/layout/grades_header.xml +++ b/app/src/main/res/layout/header_grade.xml @@ -4,7 +4,7 @@ android:id="@+id/grade_header_container" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@drawable/ic_border" + android:background="@drawable/ic_all_divider" android:foreground="?attr/selectableItemBackgroundBorderless" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" @@ -54,7 +54,7 @@ android:layout_marginEnd="10dp" android:layout_marginRight="10dp" android:layout_marginTop="5dp" - android:text="@string/info_grades_predicted_rating" + android:text="@string/grade_predicted" android:textColor="?android:attr/android:textColorSecondary" android:textSize="12sp" /> @@ -66,7 +66,7 @@ android:layout_marginTop="5dp" android:layout_toEndOf="@+id/grade_header_predicted_rating_text" android:layout_toRightOf="@+id/grade_header_predicted_rating_text" - android:text="@string/info_grades_final_rating" + android:text="@string/grade_final" android:textColor="?android:attr/android:textColorSecondary" android:textSize="12sp" /> @@ -77,6 +77,6 @@ android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginTop="10dp" - app:srcCompat="@drawable/ic_alert_24dp" + app:srcCompat="@drawable/ic_all_round_note_24dp" tool:ignore="contentDescription" /> diff --git a/app/src/main/res/layout/grades_summary_header.xml b/app/src/main/res/layout/header_grade_summary.xml similarity index 98% rename from app/src/main/res/layout/grades_summary_header.xml rename to app/src/main/res/layout/header_grade_summary.xml index 06954bd62..b291c9b20 100644 --- a/app/src/main/res/layout/grades_summary_header.xml +++ b/app/src/main/res/layout/header_grade_summary.xml @@ -31,4 +31,4 @@ android:text="@string/app_name" android:textSize="12sp" /> - \ No newline at end of file + diff --git a/app/src/main/res/layout/timetable_header.xml b/app/src/main/res/layout/header_timetable.xml similarity index 96% rename from app/src/main/res/layout/timetable_header.xml rename to app/src/main/res/layout/header_timetable.xml index 53ea8ce45..a029619e8 100644 --- a/app/src/main/res/layout/timetable_header.xml +++ b/app/src/main/res/layout/header_timetable.xml @@ -1,7 +1,7 @@ diff --git a/app/src/main/res/layout/attendance_subitem.xml b/app/src/main/res/layout/item_attendance.xml similarity index 93% rename from app/src/main/res/layout/attendance_subitem.xml rename to app/src/main/res/layout/item_attendance.xml index e16fc9fe8..a46451345 100644 --- a/app/src/main/res/layout/attendance_subitem.xml +++ b/app/src/main/res/layout/item_attendance.xml @@ -32,7 +32,7 @@ android:maxLength="2" android:text="0" android:textSize="32sp" - tool:ignore="all"/> + tool:ignore="all" /> + tool:ignore="all" /> @@ -70,8 +70,8 @@ android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginTop="10dp" - app:srcCompat="@drawable/ic_exclamation_24dp" - tool:ignore="contentDescription"/> + app:srcCompat="@drawable/ic_all_note_24dp" + tool:ignore="contentDescription" /> diff --git a/app/src/main/res/layout/exams_subitem.xml b/app/src/main/res/layout/item_exam.xml similarity index 97% rename from app/src/main/res/layout/exams_subitem.xml rename to app/src/main/res/layout/item_exam.xml index 3f50f07c4..736c528bc 100644 --- a/app/src/main/res/layout/exams_subitem.xml +++ b/app/src/main/res/layout/item_exam.xml @@ -9,7 +9,7 @@ @@ -59,7 +59,7 @@ android:layout_alignBottom="@+id/grade_subitem_value" android:layout_alignLeft="@+id/grade_subitem_description" android:layout_alignStart="@+id/grade_subitem_description" - android:text="@string/dialog_date_text" + android:text="@string/all_date" android:textSize="12sp" /> diff --git a/app/src/main/res/layout/grades_summary_subitem.xml b/app/src/main/res/layout/item_grade_summary.xml similarity index 92% rename from app/src/main/res/layout/grades_summary_subitem.xml rename to app/src/main/res/layout/item_grade_summary.xml index c7715092c..e42bc9ec0 100644 --- a/app/src/main/res/layout/grades_summary_subitem.xml +++ b/app/src/main/res/layout/item_grade_summary.xml @@ -6,7 +6,7 @@ android:id="@+id/grades_summary_subitem_predicted_container" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@drawable/ic_border" + android:background="@drawable/ic_all_divider" android:minHeight="35dp"> + android:paddingTop="5dp"> @@ -34,7 +34,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" - android:layout_marginBottom="10dp" + android:layout_marginBottom="5dp" android:text="@string/app_name" android:textSize="20sp" /> @@ -43,8 +43,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/loginItemName" + android:maxLines="2" android:text="@string/app_name" - android:textSize="17sp" /> + android:textSize="13sp" /> - \ No newline at end of file + diff --git a/app/src/main/res/layout/timetable_subitem.xml b/app/src/main/res/layout/item_timetable.xml similarity index 96% rename from app/src/main/res/layout/timetable_subitem.xml rename to app/src/main/res/layout/item_timetable.xml index 3c3cdc42a..5d30a2798 100644 --- a/app/src/main/res/layout/timetable_subitem.xml +++ b/app/src/main/res/layout/item_timetable.xml @@ -59,7 +59,7 @@ android:layout_alignLeft="@id/timetable_subItem_lesson" android:layout_alignStart="@id/timetable_subItem_lesson" android:maxLines="1" - android:text="@string/grades_text" + android:text="@string/app_name" android:textColor="?android:attr/android:textColorSecondary" android:textSize="12sp" /> @@ -75,7 +75,7 @@ android:layout_toEndOf="@+id/timetable_subItem_time" android:layout_toRightOf="@+id/timetable_subItem_time" android:maxLines="1" - android:text="@string/grades_text" + android:text="@string/app_name" android:textColor="?android:attr/android:textColorSecondary" android:textSize="12sp" tool:ignore="all"/> @@ -87,7 +87,7 @@ android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginTop="10dp" - app:srcCompat="@drawable/ic_swap_30dp" + app:srcCompat="@drawable/ic_timetable_swap_30dp" tool:ignore="contentDescription"/> diff --git a/app/src/main/res/layout/timetable_widget_item.xml b/app/src/main/res/layout/item_widget_timetable.xml similarity index 99% rename from app/src/main/res/layout/timetable_widget_item.xml rename to app/src/main/res/layout/item_widget_timetable.xml index d97be4af0..6b0e73ee4 100644 --- a/app/src/main/res/layout/timetable_widget_item.xml +++ b/app/src/main/res/layout/item_widget_timetable.xml @@ -64,4 +64,4 @@ android:textSize="12sp" /> - \ No newline at end of file + diff --git a/app/src/main/res/layout/timetable_widget.xml b/app/src/main/res/layout/widget_timetable.xml similarity index 96% rename from app/src/main/res/layout/timetable_widget.xml rename to app/src/main/res/layout/widget_timetable.xml index acf8d238c..9a2a79f54 100644 --- a/app/src/main/res/layout/timetable_widget.xml +++ b/app/src/main/res/layout/widget_timetable.xml @@ -53,7 +53,7 @@ android:ellipsize="end" android:gravity="center_vertical" android:maxLines="1" - android:text="@string/timetable_text" + android:text="@string/timetable_title" android:textColor="@android:color/white" android:textSize="20sp" /> @@ -69,7 +69,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" - android:text="@string/widget_timetable_no_lesson" + android:text="@string/widget_timetable_no_items" android:textColor="@android:color/black" android:textSize="20sp" /> diff --git a/app/src/main/res/menu/grades_action_menu.xml b/app/src/main/res/menu/action_menu_grade.xml similarity index 69% rename from app/src/main/res/menu/grades_action_menu.xml rename to app/src/main/res/menu/action_menu_grade.xml index 0533ae39e..3f0ff786b 100644 --- a/app/src/main/res/menu/grades_action_menu.xml +++ b/app/src/main/res/menu/action_menu_grade.xml @@ -5,16 +5,15 @@ - diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 7dc7ba953..e7505a895 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -1,173 +1,166 @@ Wulkanowy - - Zaloguj się - Zaloguj się za pomocą konta ucznia lub rodzica - Podaj symbol dziennika VULCAN - Email - Hasło - Symbol - Zaloguj - Łączenie z dziennikiem - Logowanie - Synchronizacja - Ten adres email nie jest poprawny - To hasło jest za krótkie - To hasło jest niepoprawne - Nie znaleziono ucznia. Sprwadź symbol - To pole jest wymagane - Brak dostępu do dziennika. Sprawdź inny symbol - Pomyślnie zalogowano - Niepoprawny e-mail lub hasło - Brak uprawnień do otwarcia dziennika. Sprawdź wprowadzoną nazwę powiatu - Logowanie nie powiodło się. Spróbuj ponownie lub zrestartuj aplikację - Nie masz jeszcze konta? Załóż je - Zapomniałeś hasła? - Wybierz ucznia + + Wybierz ucznia + Wulkanowy + Oceny + Frekwencja + Sprawdziany + Plan lekcji + Ustawienia + Więcej - Czarny - Czerwony - Niebieski - Zielony - Brak koloru - Główna aktywność - Sprawdziany - Oceny - Frekwencja - Plan lekcji - Ustawienia - Więcej - Ta część aplikacji jest w budowie - Brak ocen + + Zaloguj się za pomocą konta ucznia lub rodzica + Podaj symbol dziennika VULCAN + Email + Hasło + Symbol + Zaloguj + Logowanie… + Synchronizacja + Ten adres email nie jest poprawny + To hasło jest za krótkie + To hasło jest niepoprawne + Nie znaleziono ucznia. Sprwadź symbol + To pole jest wymagane - Brak połączenia z internetem - Szyfrowanie nie powiodło się. Automatyczne logowanie zostało wyłączone - Wersja %1$s - "Podczas odświeżania zawartości wystąpił błąd. " - Blokada aplikacji - W obawie o bezpieczeństwo przechowywanych danych osobistych na urządzeniu z podwyższonymi uprawnieniami (root), aplikacja Wulkanowy została zablokowana - Opis - Waga - Brak opisu - Nauczyciel - Data - Kolor - - Zmień semestr - Semestr %d - Anuluj - - Lekcja - Sala - Grupa - Godziny - Zmiany - - Synchronizacja zakończona - - Szczegóły - Zamknij - Nauczyciel - - Brak danych - Zbyt długie oczekiwanie na połączenie - - Brak nowych ocen - Ilość nowych ocen: %1$d - - Średnia: %1$.2f - Brak średniej - Przewidywana: %1$s - Końcowa: %1$s - Brak lekcji w tym tygodniu - Sala %s - - Przewidywana - Końcowa - - + + Ocena + Semestr %d + Zmień semestr + Brak ocen + Waga + Brak nowych ocen + Ilość nowych ocen: %1$d + Średnia: %1$.2f + Brak średniej + Przewidywana: %1$s + Końcowa: %1$s + Obliczona średnia + Szacowana średnia + Końcowa średnia + Podsumowanie + %d ocena %d oceny %d ocen %d ocen - + Nowa ocena Nowe oceny Nowych ocen Nowych ocen - - Dostałeś %1$d ocenę - "Dostałeś %1$d oceny - Dostałeś %1$d ocen - Dostałeś %1$d ocen - - Nieobecny z przyczyn szkolnych + + Lekcja + Sala %s + Grupa + Godziny + Zmiany + Brak lekcji w tym tygodniu + + + + Nieobecny z przyczyn szkolnych Nieobecność usprawiedliwiona Nieobecność nieusprawiedliwiona Zwolniony Spóźnienie usprawiedliowione Spóźnienie nieusprawiedliwione Obecny - Opis - Data - Przedmiot - Numer lekcji - Brak wpisów - + Numer lekcji + Brak wpisów + %1$d nieobecność %1$d nieobecności %1$d nieobecności + + Brak sprawdzianów w tym tygodniu + Typ + Data wpisu + + + + Opis + Brak opisu + Nauczyciel + Data + Kolor + Szczegóły + Zamknij + Brak danych + Przedmiot + + + + Brak lekcji + Dziś + Jutro + + + Widok - Domyślny widok - Pokazuj podsumowanie w ocenach - Pokazuj obecność we frekwencji - Wymagany restart + Domyślny widok + Pokazuj podsumowanie w ocenach + Pokazuj obecność we frekwencji Ciemny motyw (Beta) Powiadomienia Pokazuj powiadomienia Usługi - Włącz odświeżanie danych w tle - Zawieszone na wakacjach - Interwał między odświeżaniem danych - Synchronizacja tylko przez WiFi + Automatyczna aktualizacja + Zawieszone na wakacjach + Interwał aktualizacji + Tylko WiFi - O aplikacji - Informacje o Wulkanowym - Wulkanowy to nieoficjalny klient dziennika VULCAN UONET+ + Informacje o Wulkanowym Wersja Licencje open source Szczegóły licencji na oprogramowanie open source Kod źródłowy i feedback + Nie, nie zostaniesz programistą! Musisz bardziej się postarać! Kliknij jeszcze parę razy - Odwiedź zakładkę Kod źródłowy i pokaż jaki z ciebie programista! + Odwiedź zakładkę Kod źródłowy i pokaż jaki z ciebie programista! - Nowe oceny - Brak lekcji - Dziś - Jutro - Brak sprawdzianów w tym tygodniu - Typ - Data wpisu + Wymagany restart - Obliczona średnia - Szacowana średnia - Końcowa średnia - Podsumowanie - Szczegóły - Podczas synchronizacji wystąpił błąd + + + Nowe oceny + + Dostałeś %1$d ocenę + "Dostałeś %1$d oceny + Dostałeś %1$d ocen + Dostałeś %1$d ocen + + + + + Czarny + Czerwony + Niebieski + Zielony + Brak koloru + + + + Brak połączenia z internetem + Synchronizacja zakończona + Podczas synchronizacji wystąpił błąd + Zbyt długie oczekiwanie na połączenie + Logowanie nie powiodło się. Spróbuj ponownie lub zrestartuj aplikację diff --git a/app/src/main/res/values-pl/prefernces_array.xml b/app/src/main/res/values-pl/value_prefernces.xml similarity index 100% rename from app/src/main/res/values-pl/prefernces_array.xml rename to app/src/main/res/values-pl/value_prefernces.xml diff --git a/app/src/main/res/values/symbols.xml b/app/src/main/res/values/api_symbols.xml similarity index 100% rename from app/src/main/res/values/symbols.xml rename to app/src/main/res/values/api_symbols.xml diff --git a/app/src/main/res/values/identificators.xml b/app/src/main/res/values/identificators.xml deleted file mode 100644 index fa7b1f199..000000000 --- a/app/src/main/res/values/identificators.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 53e317ec2..de18d8a3f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,169 +1,159 @@ Wulkanowy - - Sign in - Sign in with student or parent account - Enter the VULCAN diary symbol - Email - Password - Symbol - Sign in - Connecting with log - Login… - Synchronization… - This email address is invalid - This password is too short - This password is incorrect - No student found. Check the symbol - This field is required - No permission to open log. Check another symbol - Login is successful - Bad e-mail or password - No permission to open log. Check entered symbol - Login is failed. Try again or restart the app - No account yet? Create one - Forgot password? - Select student + + Select student + Wulkanowy + Grades + Attendance + Exams + Timetable + Settings + More - Black - Red - Blue - Green - No color - Main Activity - Exams - Grades - Attendance - Timetable - Settings - More - This section of app is under construction. - No grades + + Sign in with the student or parent account + Enter the VULCAN diary symbol + Email + Password + Symbol + Sign in + Logging in… + Synchronization… + This email address is invalid + This password is too short + This password is incorrect + Student not found. Check the symbol + This field is required - No internet connection - Encryption failed. Automatic login has been disabled - Version %1$s - An error occurred while refreshing the content. - Application lock - For the sake of safety of personal data stored on a device with increased authorization (root), the Wulkanowy application has been blocked. - Description - Weight - No description - Teacher - Date - Color - - Switch semester - Semester %d - Cancel - - Lesson - Room - Group - Times - Changes - - Synchronization completed - - Details - Close - Teacher - - No data - Too long wait for connection - - No new grades - Number of new grades: %1$d - - Average: %1$.2f - No average - Predicted: %1$s - Final: %1$s - No lesson in this week - - Predicted - Final - - Room %s - - + + Grade + Semester %d + Change semester + No grades + Weight + No new grades + Number of new ratings: %1$d + Average: %1$.2f + No average + Predicted: %1$s + Final: %1$s + Calculated average + Predicted average + Final average + Summary + %d grade %d grades - + New grade New grades - - You received %1$d grade - You received %1$d grades - - Absence for school reasons - Absence excused + + Lesson + Room %s + Group + Hours + Changes + No lesson in this week + + + + Absent for school reasons + Excused absence Unexcused absence Exemption Excused lateness Unexcused lateness Present - Description - Date - Subject - Lesson number - No entries - + Number of lesson + No entries + %1$d absence - %1$d absences - %1$d absences %1$d absences - View - Default view after startup - Show summary in grades - Show present in attendance - Required restart + + No exams in this week + Type + Entry date + + + + Description + No description + Teacher + Date + Color + Details + Close + No data + Subject + + + + No lesson + Today + Tomorrow + + + + View + Default view + Show the summary in the grades + Show presence in attendance Dark theme (Beta) Notifications - Show the notifications + Show notifications Services - Enable background data refreshing - Suspended on holidays - Interval between data refreshing - Synchronization via WiFi only + Automatic update + Suspended on holiday + Updates interval + Only WiFi - About - About Wulkanowy - Wulkanowy is an unofficial VULCAN UONET+ log client + About Wulkanowy Version - Open source licenses + Open source licences License details for open source software Source code & feedback + No, you will not become a programmer! You must try harder! Click a few more times - Visit the Source code tab and show how good a programmer you are! + Visit the Source code tab and show how good a programmer you are! - New grades - No lessons - Today - Tomorrow - No exams in this week - Type - Date of entry + Restart required - Calculated average - Predicted average - Final average - Summary - Details - An error has occurred during synchronization + + + New grades + + You received %1$d grade + You received %1$d grades + + + + + Black + Red + Blue + Green + No color + + + + No internet connection + Synchronization complete + There was an error during synchronization + Too long wait for connection + Login is failed. Try again or restart the app diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index c7506e2d4..94f9ecb93 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -33,7 +33,7 @@ diff --git a/app/src/main/res/values/prefernces_array.xml b/app/src/main/res/values/value_prefernces.xml similarity index 87% rename from app/src/main/res/values/prefernces_array.xml rename to app/src/main/res/values/value_prefernces.xml index 59f4fffed..b855e24c5 100644 --- a/app/src/main/res/values/prefernces_array.xml +++ b/app/src/main/res/values/value_prefernces.xml @@ -1,10 +1,10 @@ - @string/grades_text - @string/attendance_text - @string/exams_text - @string/timetable_text + @string/grade_title + @string/attendance_title + @string/exam_title + @string/timetable_title 0 diff --git a/app/src/main/res/xml/identificators.xml b/app/src/main/res/xml/identificators.xml new file mode 100644 index 000000000..2d1873f48 --- /dev/null +++ b/app/src/main/res/xml/identificators.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/app/src/main/res/xml/widget_provider.xml b/app/src/main/res/xml/provider_widget_timetable.xml similarity index 61% rename from app/src/main/res/xml/widget_provider.xml rename to app/src/main/res/xml/provider_widget_timetable.xml index a140a6c16..cffa24ff4 100644 --- a/app/src/main/res/xml/widget_provider.xml +++ b/app/src/main/res/xml/provider_widget_timetable.xml @@ -1,9 +1,9 @@ \ No newline at end of file + android:widgetCategory="home_screen" /> diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/scheme_preferences.xml similarity index 85% rename from app/src/main/res/xml/preferences.xml rename to app/src/main/res/xml/scheme_preferences.xml index 9944cba68..ae687aa81 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/scheme_preferences.xml @@ -7,17 +7,17 @@ android:entryValues="@array/startup_tab_value" android:key="startup_tab" android:summary="%s" - android:title="@string/pref_tab_list" /> + android:title="@string/pref_view_list" /> + android:summary="@string/pref_restart" + android:title="@string/pref_view_summary" /> + android:summary="@string/pref_restart" + android:title="@string/pref_view_present" /> + android:title="@string/pref_services_wifi" /> - + diff --git a/app/src/test/java/io/github/wulkanowy/data/repositories/remote/StudentRemoteTest.kt b/app/src/test/java/io/github/wulkanowy/data/repositories/remote/StudentRemoteTest.kt index b06113ab0..ed2a06fad 100644 --- a/app/src/test/java/io/github/wulkanowy/data/repositories/remote/StudentRemoteTest.kt +++ b/app/src/test/java/io/github/wulkanowy/data/repositories/remote/StudentRemoteTest.kt @@ -1,64 +1,32 @@ package io.github.wulkanowy.data.repositories.remote -import io.github.wulkanowy.api.StudentAndParent -import io.github.wulkanowy.api.Vulcan -import io.github.wulkanowy.api.generic.School -import io.github.wulkanowy.api.login.AccountPermissionException +import io.github.wulkanowy.api.Api +import io.github.wulkanowy.api.register.Pupil +import io.reactivex.Single +import org.junit.Assert.assertEquals import org.junit.Before import org.junit.Test -import org.mockito.ArgumentMatchers.any import org.mockito.Mock -import org.mockito.Mockito.* +import org.mockito.Mockito.doReturn import org.mockito.MockitoAnnotations -import io.github.wulkanowy.api.generic.Student as StudentApi class StudentRemoteTest { @Mock - private lateinit var mockApi: Vulcan + private lateinit var mockApi: Api @Before fun initApi() { MockitoAnnotations.initMocks(this) - doNothing().`when`(mockApi).setCredentials(any(), any(), any(), any(), any(), any()) } @Test fun testRemoteAll() { - `when`(mockApi.symbols).thenReturn(mutableListOf("przeworsk", "jaroslaw", "zarzecze")) - `when`(mockApi.schools).thenReturn(mutableListOf( - School("ZSTIO", "123", false), - School("ZSZ", "998", true))) - - val mockSnP = mock(StudentAndParent::class.java) - `when`(mockSnP.students).thenReturn(mutableListOf( - StudentApi().apply { - id = "20" - name = "Włodzimierz" - isCurrent = false - })) - `when`(mockApi.studentAndParent).thenReturn(mockSnP) + doReturn(Single.just(listOf(Pupil("", "", "", "test", "", "")))) + .`when`(mockApi).getPupils() val students = StudentRemote(mockApi).getConnectedStudents("", "", "").blockingGet() - assert(students.size == 6) - assert(students[3].studentName == "Włodzimierz") - - } - - @Test - fun testOneEmptySymbol() { - doReturn(mutableListOf("przeworsk")).`when`(mockApi).symbols - doThrow(AccountPermissionException::class.java).`when`(mockApi).schools - - val students = StudentRemote(mockApi).getConnectedStudents("", "", "").blockingGet() - assert(students.isEmpty()) - } - - @Test - fun testDefaultSymbol() { - doReturn(listOf("Default")).`when`(mockApi).symbols - - val students = StudentRemote(mockApi).getConnectedStudents("", "", "").blockingGet() - assert(students.isEmpty()) + assertEquals(1, students.size) + assertEquals("test", students.first().studentName) } } diff --git a/app/src/test/java/io/github/wulkanowy/ui/login/options/LoginOptionsPresenterTest.kt b/app/src/test/java/io/github/wulkanowy/ui/login/options/LoginOptionsPresenterTest.kt index 640457f8c..1b4696f79 100644 --- a/app/src/test/java/io/github/wulkanowy/ui/login/options/LoginOptionsPresenterTest.kt +++ b/app/src/test/java/io/github/wulkanowy/ui/login/options/LoginOptionsPresenterTest.kt @@ -4,6 +4,7 @@ import io.github.wulkanowy.TestSchedulers import io.github.wulkanowy.data.ErrorHandler import io.github.wulkanowy.data.db.entities.Student import io.github.wulkanowy.data.repositories.StudentRepository +import io.reactivex.Completable import io.reactivex.Single import org.junit.Before import org.junit.Test @@ -61,8 +62,8 @@ class LoginOptionsPresenterTest { @Test fun onSelectedStudentTest() { + doReturn(Completable.complete()).`when`(repository).save(testStudent) presenter.onSelectStudent(testStudent) - verify(repository).save(testStudent) verify(loginOptionsView).showLoginProgress(true) verify(loginOptionsView).openMainView() @@ -70,7 +71,7 @@ class LoginOptionsPresenterTest { @Test fun onSelectedStudentErrorTest() { - doThrow(testException).`when`(repository).save(testStudent) + doReturn(Completable.error(testException)).`when`(repository).save(testStudent) presenter.onSelectStudent(testStudent) verify(loginOptionsView).showLoginProgress(true) verify(errorHandler).proceed(testException) diff --git a/build.gradle b/build.gradle index 4df2c909a..c8ce30150 100644 --- a/build.gradle +++ b/build.gradle @@ -5,25 +5,20 @@ buildscript { google() jcenter() maven { url "https://plugins.gradle.org/m2/" } + maven { url 'https://maven.fabric.io/public' } } dependencies { - classpath 'com.android.tools.build:gradle:3.1.4' - classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6.2" - classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4' - classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath 'com.android.tools.build:gradle:3.1.4' + classpath "io.fabric.tools:gradle:1.25.4" + classpath "com.google.gms:oss-licenses:0.9.2" + classpath "com.github.triplet.gradle:play-publisher:1.2.2" + classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6.2" } } -plugins { - // gradle dependencyUpdates -Drevision=release - id "com.github.ben-manes.versions" version "0.20.0" -} - project.ext.preDexLibs = !project.hasProperty("disablePreDex") subprojects { - apply plugin: 'build-dashboard' // build/reports/buildDashboard/index.html - project.plugins.whenPluginAdded { plugin -> if ("com.android.build.gradle.AppPlugin" == plugin.class.name) { project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs @@ -33,60 +28,16 @@ subprojects { } } -ext { - GROUP_ID = "io.github.wulkanowy" - - supportVersion = "27.1.1" - flexibleAdapter = "5.0.5" - flexibleUi = "1.0.0-b5" - firebaseJob = "0.8.5" - apacheLang = "3.7" - apacheCollections = "4.2" - butterknife = "8.8.1" - threeTenABP = "1.1.0" - dagger2 = "2.17" - ahbottom = "2.2.0" - jsoup = "1.11.3" - gson = "2.8.5" - ossLicenses = "16.0.0" - slf4jApi = "1.7.25" - slf4jTimber = "1.0.1" - timber = "4.7.1" - - debugDb = "1.0.4" - - junit = "4.12" - mockito = "2.19.1" - testRunner = "1.0.2" - - fabricGradle = "1.25.4" - crashlyticsSdk = "2.9.4" - crashlyticsAnswers = "1.4.2" - - playPublisher = "1.2.2" -} - allprojects { repositories { mavenCentral() google() jcenter() + maven { url 'https://maven.fabric.io/public'} + maven { url 'https://jitpack.io' } } } task clean(type: Delete) { delete rootProject.buildDir } - -dependencyUpdates.resolutionStrategy { - componentSelection { rules -> - rules.all { ComponentSelection selection -> - boolean rejected = ['alpha', 'beta', 'rc', 'cr', 'm'].any { qualifier -> - selection.candidate.version ==~ /(?i).*[.-]${qualifier}[.\d-]*/ - } - if (rejected) { - selection.reject('Release candidate') - } - } - } -} diff --git a/settings.gradle b/settings.gradle index d55cd7786..e7b4def49 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':app', ':api' +include ':app'