Compare commits

..
233 Commits
Author SHA1 Message Date
Julian c698008b0c Cleanup code and prepare for AI usage 2026-07-27 21:24:35 +02:00
Julian feaaa3fc83 Remove unnecessary log 2026-06-28 21:44:38 +02:00
Julian 988c7418c4 Improve logging for WhatsApp Reminders 2026-06-28 19:45:29 +02:00
Julian c07a155ecb Improve logic for adding missing matches with placeholder and formula 2026-06-28 11:32:31 +02:00
Julian 062160e09e Prepare WM Tippspiel 2026-05-27 23:36:18 +02:00
Julian 26ba216a32 Add AEK Athens 2026-03-24 22:42:29 +01:00
Julian 84873c4296 Add AZ Alkmaar 2026-03-24 22:40:28 +01:00
Julian 054588e40c Add Sigma Olomouc 2026-03-08 15:32:36 +01:00
Julian 7c46d81092 Merge branch 'main' of https://git.codeam.io/Julian/tlw-database-tool 2026-03-08 15:08:18 +01:00
Julian 37ddbef81c Add Genk 2026-03-08 15:07:30 +01:00
Julian Arndt 56da309644 Add Como 2026-01-09 10:34:08 +01:00
Julian Arndt 3d472f4eaa add espanyol 2025-12-02 19:01:44 +01:00
Julian 99fa13d04c Add Portugal Primeira Liga 2025-11-25 21:47:05 +01:00
Julian 8b946bdd39 Go Ahead Eagles 2025-11-17 00:24:37 +01:00
Julian Arndt 01413eb407 Add support for Austria Bundesliga 2025-10-27 17:24:54 +01:00
Julian 05bbd43236 Disable RelegationUpdater 2025-08-23 21:20:12 +02:00
Julian 9dcd7f94c7 Fix updating of showTable value 2025-08-23 21:13:15 +02:00
Julian 559d786c7e Disable RelegationUpdater Pipeline 2025-07-21 23:26:51 +02:00
Julian f7110563cf Add wtl config for season 2026 2025-07-21 23:24:35 +02:00
Julian f6d014b776 Fix bug in matching formula 2025-07-19 22:27:38 +02:00
Julian 786c58166e Prepare season 2026 2025-07-19 14:28:39 +02:00
Julian 163b211b02 Trigger Relegation Updater 2025-05-19 22:21:54 +02:00
Julian f0f5d67b8b Add Jenkinsfile for Relegation 2025-05-19 22:17:12 +02:00
Julian 64ff8ddff8 Improve handling for leagues without matches this season (ex. world cup) 2025-04-19 18:33:49 +02:00
Julian 6866d45400 Small improvement 2025-04-19 17:55:39 +02:00
Julian 03527d0d71 Fix small bug 2025-04-19 17:12:05 +02:00
Julian 9261d4106a Fix jenkinsfiles so that errors are sent to telegram 2025-04-13 18:30:11 +02:00
Julian Arndt 62cad30c48 Add more teams 2025-03-27 22:54:12 +01:00
Julian Arndt ba2dae8906 Add Jagiellonia 2025-03-27 22:43:47 +01:00
Julian Arndt 51937b027f Merge remote-tracking branch 'origin/main' 2025-03-27 22:41:24 +01:00
Julian Arndt 42b9c6efc4 Add FK Bodø/Glimt 2025-03-27 22:41:14 +01:00
Julian 3b90ca0d42 Merge remote-tracking branch 'origin/main' 2025-02-03 20:57:55 +01:00
Julian 142b2f4ed7 Fix false notifications for betters which already dropped out of the WTL Pokal 2025-02-03 20:57:23 +01:00
Julian Arndt 0405a3d928 Disable triggering LigaCup 2025-01-31 12:28:44 +01:00
Julian 09e15afe62 Small fixes and workarounds 2025-01-28 19:56:18 +01:00
Julian d7d517eab8 Fix MatchesListForumUpdater 2025-01-27 22:14:06 +01:00
Julian edf7d60944 Replace log4j with slf4j 2025-01-26 23:01:35 +01:00
Julian 843056a8f9 Fix correct AWS credentials variable name 2025-01-26 22:36:45 +01:00
Julian 71313fc27d Revert log4j version to major version 2 2025-01-26 22:34:00 +01:00
Julian ecab78527a Explicitely use java from configured jdk 2025-01-26 22:29:54 +01:00
Julian d4e924cbc2 Update Jenkinsfiles to JDK22 2025-01-26 22:11:23 +01:00
Julian ffa6821549 Refactor API Football to v3 2025-01-26 22:03:10 +01:00
Julian Arndt b27648885d Add Auxerre 2024-12-24 13:19:48 +01:00
Julian Arndt 9ac3a9455f Fix adding missing match 2024-07-29 21:43:54 +02:00
Julian Arndt c74527d857 Fix ID for Eredivisie 2024-07-29 09:36:52 +02:00
Julian e368496a82 Fix bug 2024-07-28 22:16:22 +02:00
Julian f81299ed8d Update config for season 2025 2024-07-28 22:00:24 +02:00
Julian c70bfe4b11 Add config for season 2025 2024-07-28 21:10:18 +02:00
Julian 017a33f178 Fix placeholder same match detection 2024-06-25 22:14:05 +02:00
Julian 457393d033 Change hours for second WhatsApp Reminder from one hour to two 2024-06-22 22:29:25 +02:00
Julian 7fa1015fdc Manually enable users for WhatsApp Reminders 2024-06-22 22:21:01 +02:00
Julian 2bf8ed712d Fix small bugs in google calendar event generator 2024-06-20 19:03:44 +02:00
Julian 43e04bd177 Add better handling for different phone number formats 2024-06-20 18:28:30 +02:00
Julian 6dd6c231a2 Catch non 200 response codes of WhatsApp tool 2024-06-18 21:58:03 +02:00
Julian 93b081b840 Add logging to WhatsAppReminder 2024-06-18 21:52:26 +02:00
Julian b9b6e04ff8 Fix WhatsAppReminder Jenkinsfile 2024-06-18 21:48:12 +02:00
Julian 75c5eb08ca Fix WhatsAppReminder Jenkinsfile 2024-06-18 21:43:20 +02:00
Julian 393ce0fb78 Fix WhatsAppReminder Jenkinsfile 2024-06-18 21:37:03 +02:00
Julian 00444221f4 Fix WhatsAppReminder Jenkinsfile 2024-06-18 21:32:22 +02:00
Julian 3628d2eb51 Add WhatsApp reminder 2024-06-18 21:21:27 +02:00
Julian ce014dfc57 Use league name from database for calendar 2024-06-12 20:35:36 +02:00
Julian 5c0e86fca6 Add several improvements for EM 2024-06-08 00:12:59 +02:00
Julian 7af8142c62 Update Jenkinsfiles 2024-05-23 23:13:35 +02:00
Julian ba00730bc5 Add missing teams 2024-05-23 22:12:26 +02:00
Julian 87fcd64337 Add Jenkinsfile for EM-Tippspiel 2024-05-23 21:54:39 +02:00
Julian f4905606df Add FC Toulouse and Stade Brestois 29 2024-05-12 10:20:16 +02:00
Julian 056418c0f2 Add Plzen, PAOK Saloniki and Brügge 2024-03-24 11:21:56 +01:00
Julian Arndt a6c0c7771d Fix ID of PSV Eindhoven 2024-01-09 22:10:15 +01:00
Julian Arndt 05943214d8 Add PSV Eindhoven 2024-01-09 22:05:20 +01:00
Julian Arndt 2dba172eec Merge remote-tracking branch 'origin/main' 2024-01-05 10:04:54 +01:00
Julian Arndt c0c5790311 Fix Supercup Jenkinsfile 2024-01-05 10:03:50 +01:00
Julian ee28cac822 Add FC Girona 2023-12-17 20:41:01 +01:00
Julian Arndt 8675ac44b1 Add Sporting Braga 2023-09-27 16:51:01 +02:00
Julian Arndt 3876aae4a6 Only print errors if errors available 2023-09-27 16:48:26 +02:00
Julian Arndt c6bd71d4a1 Add Kopenhagen 2023-09-18 09:51:48 +02:00
Julian Arndt ffc50957c1 Rework rounds parser to support wrongly sorted league rounds 2023-09-10 17:40:12 +02:00
Julian Arndt 7106fdd7ab Only update result if api football match is finished 2023-08-20 11:55:53 +02:00
Julian Arndt 8f62a99ed8 Setup rest of season 2024 2023-08-14 14:35:30 +02:00
Julian Arndt 4c33ba9383 Fix matches results updater 2023-08-14 10:03:44 +02:00
Julian 9fbe79831c Add template config for Tippliga 2023-08-06 18:51:29 +02:00
Julian b4e07359c0 Add teams for wtl pokal 2023-08-06 18:51:12 +02:00
Julian 4cd5a6b014 Add Europa League and fix pipeline 2023-08-05 21:21:56 +02:00
Julian c7d4891cfc Add teams for wtl pokal 2023-07-30 18:49:02 +02:00
Julian e9e994de87 Fix api rate limit 2023-07-30 16:41:13 +02:00
Julian 408559e494 Fix pipeline 2023-07-30 16:28:33 +02:00
Julian b1d520b3d7 Add league config for 2024 2023-07-30 16:18:59 +02:00
Julian f6c34e0fd6 Fix bugs 2023-06-06 16:01:02 +02:00
Julian cc87104a0d Merge remote-tracking branch 'origin/main'
# Conflicts:
#	src/main/java/de/jeyp91/tippliga/TLWMatchesResultsUpdater.java
#	src/test/java/de/jeyp91/tippliga/TLWMatchesResultsUpdaterTest.java
2023-06-06 15:49:54 +02:00
Julian 0f67a1de05 Add auto update of results 2023-06-06 15:48:06 +02:00
Julian 2a5c652946 Add auto update of results 2023-06-06 15:45:25 +02:00
Julian 8cc7602709 Merge remote-tracking branch 'origin/main' 2023-06-05 23:20:15 +02:00
Julian a06a864dbc Add admin login 2023-06-05 23:19:27 +02:00
Julian Arndt 468a2a59e1 Add VfB Oldenburg 2023-05-22 16:38:06 +02:00
Julian Arndt 78446ea1d8 Clean up pipelines 2023-04-13 10:40:35 +02:00
Julian Arndt 13f87087fa Fix wrong trigger 2023-04-13 10:30:02 +02:00
Julian df19f8c255 first part of auto results 2023-04-10 22:11:10 +02:00
Julian 8eef7d8c0a Add support for third delivery date 2023-04-10 19:19:15 +02:00
Julian 691b995500 Improve logging to telegram 2023-04-10 19:18:43 +02:00
Julian 21e1b783a7 Fix error 2023-04-10 13:48:04 +02:00
Julian c0d6e64aaa Parse overtime goals 2023-04-10 13:39:45 +02:00
Julian 94cfb97a56 Fix gradle build 2023-04-10 13:10:13 +02:00
Julian 356b40c49d Fix typo in Jenkinsfile 2023-04-10 13:01:33 +02:00
Julian c93ee08cae Update Java version 2023-04-10 12:57:00 +02:00
Julian 2a494a4caf Add all missing Jenkinsfiles 2023-04-10 12:49:47 +02:00
Julian 25f112d86a Add build Jenkinsfile to git 2023-04-10 12:31:44 +02:00
Julian acc4664b2a Update dependencies 2023-04-10 11:59:56 +02:00
Julian Arndt f59bcd8ea9 Fix duplicate id 2023-01-09 17:24:16 +01:00
Julian Arndt b1a9195181 Add Feyenoord 2023-01-09 10:30:48 +01:00
Julian Arndt 08d2b897ba Add Netherlands Eredivisie 2023-01-09 10:18:53 +01:00
Julian c9e6ec42cb Test 2023-01-08 22:06:07 +01:00
Julian 1cdc31c972 Add two teams 2023-01-08 21:22:45 +01:00
Julian e5d0e65f2f Merge remote-tracking branch 'origin/main' 2022-12-22 12:58:54 +01:00
Julian b8d556d7d2 Add Fenerbahce 2022-12-22 12:58:16 +01:00
Julian Arndt 4bb0d423f0 Fix typo 2022-12-20 09:56:29 +01:00
Julian bfa2be5c9d Add six new teams 2022-12-19 22:37:09 +01:00
Julian 7f84747dd5 Merge remote-tracking branch 'origin/main' 2022-12-18 15:50:21 +01:00
Julian c118722fe9 Add turkey 2022-12-18 15:49:05 +01:00
Julian Arndt e62badbc08 Fix duplicate google calendar events 2022-11-15 10:14:09 +01:00
Julian 428fd0b5e3 Fix tests 2022-11-07 18:18:17 +01:00
Julian d6edce1625 Reset target version 2022-11-07 18:12:25 +01:00
Julian e8810202fa Update dependencies and add support for google calendar html event description 2022-11-07 18:00:29 +01:00
Julian 3371962300 Add Sporting Lissabon, Maccabi Haifa and Celtic Glasgow 2022-10-23 22:18:20 +02:00
Julian 76931cd7c1 Fix config for Partizan Belgrad 2022-10-05 21:55:12 +02:00
Julian 27ce999c4b Add FK Partizan Belgrad 2022-10-05 21:51:52 +02:00
Julian f152cce388 Remove warnings 2022-08-05 16:41:44 +02:00
Julian cb85968be4 Change back line seperators 2022-08-05 15:21:00 +02:00
Julian f5b2bbb452 Fix find event bug 2022-08-05 15:17:50 +02:00
Julian 13d54a4752 Improve matcher to find event 2022-08-05 14:53:28 +02:00
Julian 71b39a2df3 Replace line seperator for google event descriptions 2022-08-05 14:51:11 +02:00
Julian 88f10ebd41 Improve google event update logic and add logging 2022-08-05 14:00:43 +02:00
Julian bdb08f5b71 Rework Google Auth and add Supercup 2022-08-05 13:25:26 +02:00
Julian f5ef53aefd Add Supercups and Europa League 2022-08-05 10:52:09 +02:00
Julian 6ca8693258 Reset token 2022-08-04 21:10:42 +02:00
Julian b5fb2d6842 Update google credentials 2022-08-04 19:07:28 +02:00
Julian 0c63d45dd6 Improve Google Calendar Logic 2022-08-04 13:36:24 +02:00
Julian 61d6597578 Retrieve forum id for checksum provider dynamically 2022-07-31 18:05:48 +02:00
Julian c76a972286 Season 2023 2022-07-31 17:50:01 +02:00
Julian 34f906f622 Add leagues for 2023 2022-07-22 12:19:39 +02:00
Julian Arndt e7a74694ba Add Rangers, Nizza and Brentford 2022-04-29 11:23:11 +02:00
Julian 13effb5d59 Fix duplicate events 2022-04-10 20:20:43 +02:00
Julian ea2697e114 Add support for google calendar 2022-03-16 14:03:09 +01:00
Julian 8ba07bab8e Add Galatasaray 2022-03-13 00:33:03 +01:00
Julian 6099b55f6c Add Benfica Lissabon and OSC Lille 2022-02-05 11:28:43 +01:00
Julian Arndt 363dd073e8 Add Stade Rennes 2021-12-17 15:08:03 +01:00
Julian Arndt d9616956ee Add Viktoria Berlin 2021-10-07 15:22:04 +02:00
Julian 71546bd499 Update library versions to get rid of warning 2021-08-29 16:42:38 +02:00
Julian 67ea5c7d97 Add Borussia Dortmund II to team id matchter config 2021-08-04 22:08:35 +02:00
Julian f349b92973 Add BFC Dynamo 2021-07-31 08:45:29 +02:00
Julian Arndt f9c06971f0 Add UEFA Europa League to 2022 league config 2021-07-29 13:42:53 +02:00
Julian Arndt c833f373bd Remove debug logging 2021-07-29 12:08:21 +02:00
Julian Arndt 54f1129021 update prod sql url 2021-07-29 12:07:01 +02:00
Julian Arndt 0d640bd61d Update PostChecksum with season 2022 2021-07-19 15:10:08 +02:00
Julian Arndt b76e125d31 Merge commit '1c99d0a4681b983cd51233e050311ca99691740e'
# Conflicts:
#	src/main/java/de/jeyp91/tippligaforum/MatchesListForumUpdater.java
2021-07-19 15:07:16 +02:00
Julian Arndt 2f0385f1f5 Updates for season 2022 2021-07-19 15:05:48 +02:00
Julian 1c99d0a468 Only update forum posts if post id was found 2021-06-22 16:13:37 +02:00
Julian 952f869f59 Improve logging for MatchesListForumUpdater 2021-06-21 14:19:42 +02:00
Julian c959d62116 Reset sql connection to prod 2021-06-05 21:42:59 +02:00
Julian 089b8eba08 Add support for EM Tippspiel 2021-06-05 21:38:11 +02:00
Julian af28e5cb6f disable ssl for sql 2021-05-09 21:59:27 +02:00
Julian 287b96f03b Fix sql 2021-05-09 21:19:45 +02:00
Julian 76db3ba9d3 Try to fix sql error 2021-05-09 21:19:21 +02:00
Julian Arndt 5ef306c853 Add RC Lens to team id matcher 2021-05-04 09:32:32 +02:00
Julian 3945b471b2 Fix tipper pair config matchday 34 2021-04-21 21:22:30 +02:00
Julian Arndt f8b53cfe52 Add more teams 2021-03-29 09:46:59 +02:00
Julian 824e0f35be Add support for mulitple identical matches like WTL Pokal final 2021-03-20 15:27:29 +01:00
Julian d54a7089c8 Add ability for additional delivery dates 2021-03-20 15:07:45 +01:00
Julian 14b45f638d Add new teams 2021-03-08 10:31:19 +01:00
Julian 70db634f10 Add Hellas Verona to Team ID Matcher Config 2021-02-25 17:12:09 +01:00
Julian cbcaeda25f Fix Tipper Match Par config 2021-02-03 20:56:35 +01:00
Julian 23ad175f98 Fix error handling 2021-01-14 10:37:34 +01:00
Julian 6fe026ee74 Retry with pause for rounds 2021-01-13 12:56:12 +01:00
Julian 4f638c3111 Fix small error 2021-01-11 10:37:51 +01:00
Julian 0578c6ecbc Add wait and retry for API Football minute rate limit 2021-01-11 10:28:33 +01:00
Julian 221a2157cf Add Atalanta Bergamo and Lazio Rom 2021-01-10 22:29:48 +01:00
Julian 50ba1198c7 Improve error handling 2021-01-10 22:22:49 +01:00
Julian 4bd7af39a8 Catch zero results for API Football 2021-01-10 22:03:48 +01:00
Julian 37030a67ec Improve error handling for getting matches 2021-01-10 21:59:17 +01:00
Julian b100e4e2e8 Add error handling everywhere 2021-01-10 21:34:27 +01:00
Julian a6145eed64 Remove exit code 1 2021-01-10 21:17:43 +01:00
Julian dbd2eb1737 Improve logging 2021-01-10 21:02:35 +01:00
Julian 27193999fc Add error handling for missing match ids 2021-01-10 20:38:26 +01:00
Julian 87c0383db8 Add generic error handling for API Football 2021-01-10 20:38:11 +01:00
Julian dd9c8cc0af Add additional check for error 2021-01-10 19:44:16 +01:00
Julian c1e8c901cd Add new teams to team id matcher 2021-01-06 10:38:35 +01:00
Julian 780bcf0c98 Add Test for updating single rounds 2021-01-06 10:22:31 +01:00
Julian 341f914b35 Add error handling for minute limit 2021-01-06 10:12:47 +01:00
Julian Arndt 10e6348dcf Improve match list in forum to match tlw league config 2020-11-10 11:26:39 +01:00
Julian Arndt f1ce35dcdf Change format of matches list to match tlw league configuration 2020-11-10 11:02:30 +01:00
Julian c53511939d Add check for wrong endpoint for APIFootball 2020-11-09 22:03:20 +01:00
Julian 5474e2a4d1 Merge remote-tracking branch 'origin/master' 2020-11-09 20:39:05 +01:00
Julian 7367c5c86f Add post checksum mode 2020-11-09 20:38:31 +01:00
Julian Arndt 2fcee30597 Disable all calls to API-Football in tests 2020-11-09 09:28:00 +01:00
Julian 8cfb2a325a Remove Gist 2020-11-08 23:04:32 +01:00
Julian 5862a99d73 Remove system.out.println in testcases 2020-11-05 10:18:53 +01:00
Julian fbbac7fdb0 Fix small comparison issue and improve error messages 2020-11-04 21:51:14 +01:00
Julian 7e09e96cb1 Remove gist request comment 2020-11-04 21:26:30 +01:00
Julian d42edcf01c Improve error output and add team id matcher template creator 2020-11-04 21:22:27 +01:00
Julian 2f411aae67 Remove actual update 2020-10-31 22:58:48 +01:00
Julian d54e8991d7 Improve match list creator 2020-10-31 22:58:06 +01:00
Julian 7f98b928bd Add support for API Football config without result and placeholder as fallback 2020-10-31 21:46:30 +01:00
Julian 7d9fc5aac1 Update database only if matchday is in future 2020-10-31 20:51:56 +01:00
Julian 53af82a429 Add wtl pokal test 2020-10-31 20:34:57 +01:00
Julian 3a5df3cae6 Add show table update, add matches list creator 2020-10-31 20:26:47 +01:00
Julian 57baee27bd Fix multiple execute queries 2020-10-28 21:09:48 +01:00
Julian 1e9ee8127c Add check for limit excetion for api football and fix bug in switch in app 2020-10-25 21:50:46 +01:00
Julian 306bf69107 Disable gist updater test 2020-10-25 21:20:54 +01:00
Julian d8e70fb1b0 Add beautiful output 2020-10-25 14:33:49 +01:00
Julian 6579d3c003 Add log level config 2020-10-18 22:30:57 +02:00
Julian 72a6140925 Add testcode 2020-10-18 22:22:06 +02:00
Julian 81b68b27f7 Improve error handling 2020-10-18 22:20:56 +02:00
Julian 2f66771b0d Add update api 2020-10-18 22:18:01 +02:00
Julian c7e9cd092f Disable execution of queries 2020-10-18 21:59:34 +02:00
Julian b09d7ed474 Add logging 2020-10-18 21:59:19 +02:00
Julian cdb1f92893 Fix gradle for Jenkins 2020-10-18 20:51:10 +02:00
Julian 1b7bcbf9b0 Prepare Jenkins stuff 2020-10-18 20:50:00 +02:00
Julian 93cbcb75a4 Fix gist 2020-10-18 20:48:23 +02:00
Julian 16d5baabef Move gist username password to config file 2020-10-18 19:04:44 +02:00
Julian 91e5ed50b7 Fix from delivery dates 2020-10-18 19:04:26 +02:00
Julian 126b9778c0 Remove Timezone bullshit 2020-10-17 09:55:04 +02:00
Julian cb01b7bcb7 Finish gist 2020-10-17 01:20:51 +02:00
Julian e4186457e2 Move fixtures to gist 2020-10-14 23:10:22 +02:00
Julian ae2be9c425 Add support for gist 2020-10-12 23:03:36 +02:00
Julian d8af0b3d6c Add support for parameters to start and update gradle to compile full jar 2020-10-12 23:03:26 +02:00
Julian f22f9a929b Add api football files updater 2020-10-07 22:14:13 +02:00
Julian bce0f3800c Improve matchdays updater 2020-10-04 14:50:10 +02:00
Julian 8828f4477a Add matchdays updater 2020-10-04 14:49:42 +02:00
Julian 5b4667e8ae Update matchdata 2020-10-04 12:31:08 +02:00
Julian 557cd59c8f Clean up shit 2020-10-04 12:23:43 +02:00
Julian e57f79c18b Improve updater 2020-10-04 11:53:30 +02:00
Julian babfe66872 Add updater for matches and teams 2020-10-04 00:42:35 +02:00
Julian Arndt 9c88c28151 Refactor Line separator for Mac and add APIFootballProvider 2020-09-29 17:43:05 +02:00
Julian a484010285 Refactor and clean up code 2020-09-27 23:27:07 +02:00
Julian 283efc775b First version with ability to create database for new season 2020-09-27 19:05:20 +02:00
39 changed files with 130 additions and 1146 deletions
+7 -15
View File
@@ -10,7 +10,7 @@
"request": "launch", "request": "launch",
"mainClass": "de.jeyp91.App", "mainClass": "de.jeyp91.App",
"envFile": "${workspaceFolder}/.env", "envFile": "${workspaceFolder}/.env",
"args": ["--mode", "APIFootballUpdater", "--season", "2027", "--league", "1", "--configFile", "Tippliga"] "args": " --mode APIFootballUpdater --season 2026 --league 49 --configFile WM-Tippspiel"
}, },
{ {
"type": "java", "type": "java",
@@ -18,7 +18,7 @@
"request": "launch", "request": "launch",
"mainClass": "de.jeyp91.App", "mainClass": "de.jeyp91.App",
"envFile": "${workspaceFolder}/.env", "envFile": "${workspaceFolder}/.env",
"args": ["--mode", "MatchesCreatorFootball", "--season", "2027", "--league", "1", "--configFile", "Tippliga"] "args": " --mode MatchesCreatorFootball --season 2026 --league 49 --configFile WM-Tippspiel"
}, },
{ {
"type": "java", "type": "java",
@@ -26,7 +26,7 @@
"request": "launch", "request": "launch",
"mainClass": "de.jeyp91.App", "mainClass": "de.jeyp91.App",
"envFile": "${workspaceFolder}/.env", "envFile": "${workspaceFolder}/.env",
"args": ["--mode", "MatchesUpdaterFootball", "--season", "2027", "--league", "1", "--configFile", "Tippliga"] "args": " --mode MatchesUpdaterFootball --season 2026 --league 49 --configFile WM-Tippspiel"
}, },
{ {
"type": "java", "type": "java",
@@ -34,7 +34,7 @@
"request": "launch", "request": "launch",
"mainClass": "de.jeyp91.App", "mainClass": "de.jeyp91.App",
"envFile": "${workspaceFolder}/.env", "envFile": "${workspaceFolder}/.env",
"args": ["--mode", "MatchdaysUpdater", "--season", "2027", "--league", "1", "--configFile", "Tippliga"] "args": " --mode MatchdaysUpdater --season 2026 --league 49 --configFile WM-Tippspiel"
}, },
{ {
"type": "java", "type": "java",
@@ -42,7 +42,7 @@
"request": "launch", "request": "launch",
"mainClass": "de.jeyp91.App", "mainClass": "de.jeyp91.App",
"envFile": "${workspaceFolder}/.env", "envFile": "${workspaceFolder}/.env",
"args": ["--mode", "MatchesResultsUpdater", "--season", "2027", "--league", "1", "--configFile", "Tippliga"] "args": " --mode MatchesResultsUpdater --season 2026 --league 49 --configFile WM-Tippspiel"
}, },
{ {
"type": "java", "type": "java",
@@ -50,7 +50,7 @@
"request": "launch", "request": "launch",
"mainClass": "de.jeyp91.App", "mainClass": "de.jeyp91.App",
"envFile": "${workspaceFolder}/.env", "envFile": "${workspaceFolder}/.env",
"args": ["--mode", "MatchesListGistUpdater", "--season", "2027", "--league", "1", "--configFile", "Tippliga"] "args": " --mode MatchesListGistUpdater --season 2026 --league 49 --configFile WM-Tippspiel"
}, },
{ {
"type": "java", "type": "java",
@@ -58,15 +58,7 @@
"request": "launch", "request": "launch",
"mainClass": "de.jeyp91.App", "mainClass": "de.jeyp91.App",
"envFile": "${workspaceFolder}/.env", "envFile": "${workspaceFolder}/.env",
"args": ["--mode", "TeamsUpdater", "--season", "2027", "--league", "1", "--configFile", "Tippliga"] "args": " --mode TeamsUpdater --season 2026 --league 49 --configFile WM-Tippspiel"
},
{
"type": "java",
"name": "SeasonPreparation",
"request": "launch",
"mainClass": "de.jeyp91.App",
"envFile": "${workspaceFolder}/.env",
"args": ["--mode", "SeasonPreparation", "--season", "2027", "--league", "0", "--configFile", "Dummy"]
} }
] ]
} }
+1 -3
View File
@@ -5,6 +5,4 @@
"envFile": "${workspaceFolder}/.env" "envFile": "${workspaceFolder}/.env"
}, },
"java.debug.settings.onBuildFailureProceed": true, "java.debug.settings.onBuildFailureProceed": true,
"jdk.jdkhome": "/Users/julian/.local/share/mise/installs/java/22.0.2", }
"java.debug.settings.console": "internalConsole"
}
-20
View File
@@ -37,26 +37,6 @@ dependencies {
testImplementation 'org.testng:testng:7.10.2' testImplementation 'org.testng:testng:7.10.2'
} }
def envFile = file('.env')
if (envFile.exists()) {
def envVars = [:]
envFile.readLines().each { line ->
def trimmed = line.trim()
if (trimmed && !trimmed.startsWith('#')) {
def parts = trimmed.split('=', 2)
if (parts.size() == 2) {
def key = parts[0].trim()
def value = parts[1].trim()
if (value.startsWith('"') && value.endsWith('"')) {
value = value.substring(1, value.length() - 1)
}
envVars[key] = value
}
}
}
test { environment envVars }
}
jar { jar {
manifest { manifest {
attributes( attributes(
+1 -1
View File
@@ -24,7 +24,7 @@ pipeline {
sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode APIFootballUpdater --season ${season} --league 1 --configFile Tippliga >> log.txt 2>&1" sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode APIFootballUpdater --season ${season} --league 1 --configFile Tippliga >> log.txt 2>&1"
sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode MatchesListGistUpdater --season ${season} --league 1 --configFile Tippliga >> log.txt 2>&1" sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode MatchesListGistUpdater --season ${season} --league 1 --configFile Tippliga >> log.txt 2>&1"
} catch (Exception e) { } catch (Exception e) {
telegramSendManual("TLW-Database-Tool crashed in APIFootballUpdater!") telegramSendManual("TLW-Database-Tool crashed!")
} }
String outputString = readFile 'log.txt' String outputString = readFile 'log.txt'
if(outputString != "") { if(outputString != "") {
+1 -1
View File
@@ -27,7 +27,7 @@ pipeline {
sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode MatchdaysUpdater --season ${season} --league 49 --configFile WM-Tippspiel >> log.txt 2>&1" sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode MatchdaysUpdater --season ${season} --league 49 --configFile WM-Tippspiel >> log.txt 2>&1"
sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode TeamsUpdater --season ${season} --league 49 --configFile WM-Tippspiel >> log.txt 2>&1" sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode TeamsUpdater --season ${season} --league 49 --configFile WM-Tippspiel >> log.txt 2>&1"
} catch (Exception e) { } catch (Exception e) {
telegramSendManual("TLW-Database-Tool crashed in LigaCupUpdater!") telegramSendManual("TLW-Database-Tool crashed!")
} }
String outputString = readFile 'log.txt' String outputString = readFile 'log.txt'
if(outputString != "") { if(outputString != "") {
+1 -1
View File
@@ -27,7 +27,7 @@ pipeline {
sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode MatchdaysUpdater --season ${season} --league 47 --configFile Relegation >> log.txt 2>&1" sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode MatchdaysUpdater --season ${season} --league 47 --configFile Relegation >> log.txt 2>&1"
sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode TeamsUpdater --season ${season} --league 47 --configFile Relegation >> log.txt 2>&1" sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode TeamsUpdater --season ${season} --league 47 --configFile Relegation >> log.txt 2>&1"
} catch (Exception e) { } catch (Exception e) {
telegramSendManual("TLW-Database-Tool crashed in RelegationUpdater!") telegramSendManual("TLW-Database-Tool crashed!")
} }
String outputString = readFile 'log.txt' String outputString = readFile 'log.txt'
if(outputString != "") { if(outputString != "") {
+1 -1
View File
@@ -27,7 +27,7 @@ pipeline {
sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode MatchdaysUpdater --season ${season} --league 45 --configFile Supercup >> log.txt 2>&1" sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode MatchdaysUpdater --season ${season} --league 45 --configFile Supercup >> log.txt 2>&1"
sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode TeamsUpdater --season ${season} --league 45 --configFile Supercup >> log.txt 2>&1" sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode TeamsUpdater --season ${season} --league 45 --configFile Supercup >> log.txt 2>&1"
} catch (Exception e) { } catch (Exception e) {
telegramSendManual("TLW-Database-Tool crashed in SupercupUpdater!") telegramSendManual("TLW-Database-Tool crashed!")
} }
String outputString = readFile 'log.txt' String outputString = readFile 'log.txt'
if(outputString != "") { if(outputString != "") {
+1 -1
View File
@@ -31,7 +31,7 @@ pipeline {
sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode MatchdaysUpdater --season ${season} --league 2 --configFile Tippliga >> log.txt 2>&1" sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode MatchdaysUpdater --season ${season} --league 2 --configFile Tippliga >> log.txt 2>&1"
sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode TeamsUpdater --season ${season} --league 2 --configFile Tippliga >> log.txt 2>&1" sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode TeamsUpdater --season ${season} --league 2 --configFile Tippliga >> log.txt 2>&1"
} catch (Exception e) { } catch (Exception e) {
telegramSendManual("TLW-Database-Tool crashed in TippligaUpdater!") telegramSendManual("TLW-Database-Tool crashed!")
} }
String outputString = readFile 'log.txt' String outputString = readFile 'log.txt'
echo "Output: ${outputString}" echo "Output: ${outputString}"
+1 -1
View File
@@ -27,7 +27,7 @@ pipeline {
sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode MatchdaysUpdater --season ${season} --league 48 --configFile WTL-Pokal >> log.txt 2>&1" sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode MatchdaysUpdater --season ${season} --league 48 --configFile WTL-Pokal >> log.txt 2>&1"
sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode TeamsUpdater --season ${season} --league 48 --configFile WTL-Pokal >> log.txt 2>&1" sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode TeamsUpdater --season ${season} --league 48 --configFile WTL-Pokal >> log.txt 2>&1"
} catch (Exception e) { } catch (Exception e) {
telegramSendManual("TLW-Database-Tool crashed in WTLPokalUpdater!") telegramSendManual("TLW-Database-Tool crashed!")
} }
String outputString = readFile 'log.txt' String outputString = readFile 'log.txt'
if(outputString != "") { if(outputString != "") {
+1 -1
View File
@@ -25,7 +25,7 @@ pipeline {
try { try {
sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode WhatsAppNotifier --season ${season} --league 1 --configFile Tippliga >> log.txt 2>&1" sh "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode WhatsAppNotifier --season ${season} --league 1 --configFile Tippliga >> log.txt 2>&1"
} catch (Exception e) { } catch (Exception e) {
telegramSendManual("TLW-Database-Tool crashed in WhatsAppReminder!") telegramSendManual("TLW-Database-Tool crashed!")
} }
String outputString = readFile 'log.txt' String outputString = readFile 'log.txt'
if(outputString != "") { if(outputString != "") {
+1 -6
View File
@@ -10,7 +10,6 @@ import de.jeyp91.tippliga.TLWMatchesResultsUpdater;
import de.jeyp91.tippliga.TLWMatchesUpdaterFootball; import de.jeyp91.tippliga.TLWMatchesUpdaterFootball;
import de.jeyp91.tippliga.TLWTeamsUpdater; import de.jeyp91.tippliga.TLWTeamsUpdater;
import de.jeyp91.tippligaforum.MatchesListForumUpdater; import de.jeyp91.tippligaforum.MatchesListForumUpdater;
import de.jeyp91.tippligaforum.SeasonForumPostsCreator;
import de.jeyp91.tippligaforum.TippligaConfigProvider; import de.jeyp91.tippligaforum.TippligaConfigProvider;
import de.jeyp91.tippligaforum.TippligaSQLConnector; import de.jeyp91.tippligaforum.TippligaSQLConnector;
import de.jeyp91.whatsapp.WhatsAppNotifier; import de.jeyp91.whatsapp.WhatsAppNotifier;
@@ -70,10 +69,6 @@ public class App {
MatchesListForumUpdater matchesListForumUpdater = new MatchesListForumUpdater(); MatchesListForumUpdater matchesListForumUpdater = new MatchesListForumUpdater();
matchesListForumUpdater.updateAllLeagues(season); matchesListForumUpdater.updateAllLeagues(season);
} }
case "SeasonPreparation" -> {
SeasonForumPostsCreator creator = new SeasonForumPostsCreator(season);
creator.createAllPosts();
}
case "PostChecksum" -> { case "PostChecksum" -> {
TippligaConfigProvider configProvider = new TippligaConfigProvider(season); TippligaConfigProvider configProvider = new TippligaConfigProvider(season);
String checksum = configProvider.getChecksumOfConfigPost(configFile); String checksum = configProvider.getChecksumOfConfigPost(configFile);
@@ -101,7 +96,7 @@ public class App {
parser.addArgument("-m", "--mode") parser.addArgument("-m", "--mode")
.dest("mode") .dest("mode")
.choices("MatchdaysUpdater", "MatchesCreatorFootball", "MatchesUpdaterFootball", "MatchesResultsUpdater", "TeamsUpdater", "APIFootballUpdater", "MatchesListGistUpdater", "PostChecksum", "WhatsAppNotifier", "SeasonPreparation") .choices("MatchdaysUpdater", "MatchesCreatorFootball", "MatchesUpdaterFootball", "MatchesResultsUpdater", "TeamsUpdater", "APIFootballUpdater", "MatchesListGistUpdater", "PostChecksum", "WhatsAppNotifier")
.help("") .help("")
.required(true) .required(true)
.type(String.class); .type(String.class);
+12 -16
View File
@@ -117,18 +117,6 @@ public class TLWMatch extends BaseMatch{
this.matchDatetime = matchDatetime; this.matchDatetime = matchDatetime;
} }
public TLWMatch(int season, int league, int matchday, int matchNo, int status, int koMatch, String formulaHome, String formulaGuest, String matchDatetime) {
this.season = season;
this.matchday = matchday;
this.league = league;
this.matchNo = matchNo;
this.status = status;
this.koMatch = koMatch;
this.formulaHome = formulaHome;
this.formulaGuest = formulaGuest;
this.matchDatetime = matchDatetime;
}
public TLWMatch(int season, int league, int matchday, int matchNo, int teamIdHome, int teamIdGuest, String matchDatetime, int koMatch) { public TLWMatch(int season, int league, int matchday, int matchNo, int teamIdHome, int teamIdGuest, String matchDatetime, int koMatch) {
this.season = season; this.season = season;
this.matchday = matchday; this.matchday = matchday;
@@ -191,11 +179,19 @@ public class TLWMatch extends BaseMatch{
} }
public String getFormulaHome() { public String getFormulaHome() {
return this.formulaHome != null ? this.formulaHome : "D"; String formula = "D";
if (this.formulaHome != null) {
formula = this.formulaHome;
}
return "'" + formula + "'";
} }
public String getFormulaGuest() { public String getFormulaGuest() {
return this.formulaGuest != null ? this.formulaGuest : "D"; String formula = "D";
if (this.formulaGuest != null) {
formula = this.formulaGuest;
}
return "'" + formula + "'";
} }
public String getSQLQueryInsert() { public String getSQLQueryInsert() {
@@ -222,8 +218,8 @@ public class TLWMatch extends BaseMatch{
this.status + ", " + this.status + ", " +
nullToSqlEmptyString(this.matchDatetime) + ", " + nullToSqlEmptyString(this.matchDatetime) + ", " +
nullToSqlEmptyString(this.groupId) + ", " + nullToSqlEmptyString(this.groupId) + ", " +
"'" + getFormulaHome() + "'" + ", " + getFormulaHome() + ", " +
"'" + getFormulaGuest() + "'" + ", " + getFormulaGuest() + ", " +
nullToSqlEmptyString(this.koMatch) + ", " + nullToSqlEmptyString(this.koMatch) + ", " +
nullToSqlEmptyString(this.goalsOvertimeHome) + ", " + nullToSqlEmptyString(this.goalsOvertimeHome) + ", " +
nullToSqlEmptyString(this.goalsOvertimeGuest) + ", " + nullToSqlEmptyString(this.goalsOvertimeGuest) + ", " +
@@ -22,7 +22,7 @@ public class TLWMatchdaysCreator {
this.season = season; this.season = season;
this.league = league; this.league = league;
TLWMatchesCreatorFootball matchesCreator = new TLWMatchesCreatorFootball(season, league, configPath); TLWMatchesCreatorFootball matchesCreator = new TLWMatchesCreatorFootball(season, 1, configPath);
this.matches = matchesCreator.getMatches(); this.matches = matchesCreator.getMatches();
TippligaConfigProvider prov = new TippligaConfigProvider(season); TippligaConfigProvider prov = new TippligaConfigProvider(season);
@@ -69,20 +69,6 @@ public class TLWMatchesCreatorFootball extends TLWMatchesCreatorBase {
} }
} }
// Add PlaceholderSingleMatch matches
for (Object matchesConfigObject : matchesConfig) {
JSONObject singleMatchConfig = (JSONObject) matchesConfigObject;
if(singleMatchConfig.get("type").equals("PlaceholderSingleMatch")) {
String formulaHome = (String) singleMatchConfig.get("formulaHome");
String formulaGuest = (String) singleMatchConfig.get("formulaGuest");
String matchDatetime = (String) singleMatchConfig.get("placeholderDatetime");
int matchNo = this.nextMatchNo;
this.nextMatchNo++;
this.TLWMatches.add(new TLWMatch(this.season, this.league, TLWMatchday, matchNo, 0, this.ko, formulaHome, formulaGuest, matchDatetime));
matchdayMatchCounter++;
}
}
// Add empty missing matches // Add empty missing matches
int matchesPerMatchdayTemp = 0; int matchesPerMatchdayTemp = 0;
if(this.matchesPerMatchday != 0) { if(this.matchesPerMatchday != 0) {
@@ -44,10 +44,6 @@ public class TLWMatchesUpdaterFootball extends TLWMatchesManagerBase {
ArrayList<APIFootballMatch> apiFootballMatches = apiFootballMatchesProvider.getAPIFootballMatchesFromConfig((JSONObject) singleMatchdayConfig); ArrayList<APIFootballMatch> apiFootballMatches = apiFootballMatchesProvider.getAPIFootballMatchesFromConfig((JSONObject) singleMatchdayConfig);
if(apiFootballMatches.isEmpty()) {
continue;
}
ArrayList<TLWMatch> tlwMatchesOriginalMatchday = tippligaSQLConnector.getMatches(String.valueOf(this.season), String.valueOf(this.league), String.valueOf(tlwMatchday)); ArrayList<TLWMatch> tlwMatchesOriginalMatchday = tippligaSQLConnector.getMatches(String.valueOf(this.season), String.valueOf(this.league), String.valueOf(tlwMatchday));
ArrayList<TLWMatch> tlwMatchesUpdatedMatchday = new ArrayList<>(); ArrayList<TLWMatch> tlwMatchesUpdatedMatchday = new ArrayList<>();
for (TLWMatch match : tlwMatchesOriginalMatchday) { for (TLWMatch match : tlwMatchesOriginalMatchday) {
@@ -62,7 +58,9 @@ public class TLWMatchesUpdaterFootball extends TLWMatchesManagerBase {
LocalDateTime firstMatchOriginal = TLWMatchesManagerBase.getFirstMatchtimeTLW(tlwMatchesOriginalMatchday); LocalDateTime firstMatchOriginal = TLWMatchesManagerBase.getFirstMatchtimeTLW(tlwMatchesOriginalMatchday);
LocalDateTime firstMatchUpdated = TLWMatchesManagerBase.getFirstMatchtimeAPIFootball(apiFootballMatches); LocalDateTime firstMatchUpdated = TLWMatchesManagerBase.getFirstMatchtimeAPIFootball(apiFootballMatches);
if(now.isBefore(firstMatchOriginal) && now.isBefore(firstMatchUpdated)) { if(apiFootballMatches.size() > 0
&& now.isBefore(firstMatchOriginal)
&& now.isBefore(firstMatchUpdated)) {
addMissingMatches(tlwMatchesUpdatedMatchday, apiFootballMatches); addMissingMatches(tlwMatchesUpdatedMatchday, apiFootballMatches);
updateMatchDateTimes(tlwMatchesUpdatedMatchday, apiFootballMatches); updateMatchDateTimes(tlwMatchesUpdatedMatchday, apiFootballMatches);
updateShowTable(tlwMatchesUpdatedMatchday, apiFootballMatches); updateShowTable(tlwMatchesUpdatedMatchday, apiFootballMatches);
@@ -195,15 +193,9 @@ public class TLWMatchesUpdaterFootball extends TLWMatchesManagerBase {
// update empty match // update empty match
if(!done) { if(!done) {
for (TLWMatch tlwMatch : tlwMatches) { for (TLWMatch tlwMatch : tlwMatches) {
Integer teamIdHome = tlwMatch.getTeamIdHome(); if (tlwMatch.getTeamIdHome() == 0 && tlwMatch.getTeamIdGuest() == 0
Integer teamIdGuest = tlwMatch.getTeamIdGuest(); && (Objects.equals(tlwMatch.getFormulaHome(), "") || Objects.equals(tlwMatch.getFormulaHome(), "D"))
String formulaHome = tlwMatch.getFormulaHome(); && (Objects.equals(tlwMatch.getFormulaGuest(), "") || Objects.equals(tlwMatch.getFormulaGuest(), "D"))
String formulaGuest = tlwMatch.getFormulaGuest();
if (
(Objects.equals(teamIdHome, 0) || Objects.equals(teamIdHome, null))
&& (Objects.equals(teamIdGuest, 0) || Objects.equals(teamIdGuest, null))
&& (Objects.equals(formulaHome, "") || Objects.equals(formulaHome, "D"))
&& (Objects.equals(formulaGuest, "") || Objects.equals(formulaGuest, "D"))
) { ) {
tlwMatch.updateMatch(missingMatch); tlwMatch.updateMatch(missingMatch);
done = true; done = true;
@@ -1,137 +0,0 @@
package de.jeyp91.tippligaforum;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
public class SeasonForumPostsCreator {
private static final Logger logger = LoggerFactory.getLogger(SeasonForumPostsCreator.class);
private static final String EMPTY_POST_CONTENT = "[code][/code]";
private static final String[] CONFIG_POSTS = {
"Supercup Tipper",
"WTL-Pokal Tipper",
"2. Tippliga Tipper",
"1. Tippliga Tipper",
"Relegation",
"Supercup",
"WTL-Pokal",
"Tippliga"
};
private static final String[] MATCH_LIST_POSTS = {
"World UEFA Super Cup",
"World UEFA Europa Conference League",
"World UEFA Europa League",
"World UEFA Champions League",
"Austria Bundesliga",
"Portugal Primeira Liga",
"Netherlands Eredivisie",
"Turkey Süper Lig",
"France Ligue 1",
"Italy Serie A",
"Spain La Liga",
"England Premier League",
"Germany Super Cup",
"Germany Frauen Bundesliga",
"Germany U19 Bundesliga",
"Germany Regionalliga - SudWest",
"Germany Regionalliga - Bayern",
"Germany 3. Liga",
"Germany 2. Bundesliga",
"Germany Bundesliga",
"Germany DFB Pokal"
};
private final int season;
private final TippligaWebsiteConnector connector;
private final TippligaSQLConnector sqlConnector;
public SeasonForumPostsCreator(int season) {
this.season = season;
try {
this.connector = new TippligaWebsiteConnector();
} catch (IOException e) {
throw new RuntimeException(e);
}
this.sqlConnector = TippligaSQLConnector.getInstance();
}
public void createAllPosts() {
Integer adminForumId = sqlConnector.getForumId("Admin");
if (adminForumId == null) {
logger.error("Forum 'Admin' not found. Aborting.");
return;
}
Integer tippligaConfigForumId = sqlConnector.getForumId("Tippliga-Config", adminForumId);
if (tippligaConfigForumId == null) {
logger.error("Forum 'Tippliga-Config' not found. Aborting.");
return;
}
Integer seasonForumId = sqlConnector.getForumId(String.valueOf(season), tippligaConfigForumId);
if (seasonForumId == null) {
logger.error("Forum '" + season + "' not found under Tippliga-Config. Aborting.");
return;
}
Integer ligenForumId = sqlConnector.getForumId("Ligen", seasonForumId);
if (ligenForumId == null) {
logger.error("Forum 'Ligen' not found under " + season + ". Aborting.");
return;
}
createConfigPosts(seasonForumId);
createMatchListPosts(ligenForumId);
}
private void createConfigPosts(int seasonForumId) {
logger.info("Creating config posts in forum " + season + "...");
for (String subject : CONFIG_POSTS) {
if (postExists(seasonForumId, subject)) {
logger.info("Config post '" + subject + "' already exists. Skipping.");
continue;
}
boolean success = connector.createPost(seasonForumId, subject, EMPTY_POST_CONTENT);
if (success) {
logger.info("Created config post: " + subject);
} else {
logger.error("Failed to create config post: " + subject);
}
}
}
private void createMatchListPosts(int ligenForumId) {
logger.info("Creating match list posts in " + season + " > Ligen...");
for (String subject : MATCH_LIST_POSTS) {
if (postExists(ligenForumId, subject)) {
logger.info("Match list post '" + subject + "' already exists. Skipping.");
continue;
}
boolean success = connector.createPost(ligenForumId, subject, EMPTY_POST_CONTENT);
if (success) {
logger.info("Created match list post: " + subject);
} else {
logger.error("Failed to create match list post: " + subject);
}
}
}
private boolean postExists(int forumId, String subject) {
String query = "SELECT COUNT(*) FROM phpbb_posts WHERE forum_id = " + forumId + " AND post_subject = '" + subject + "'";
ResultSet rset = sqlConnector.executeQuery(query);
try {
if (rset != null && rset.next()) {
return rset.getInt(1) > 0;
}
} catch (SQLException e) {
logger.error("Error checking if post exists", e);
}
return false;
}
}
@@ -218,69 +218,6 @@ public class TippligaWebsiteConnector {
this.lastFormToken = matcher.group(2); this.lastFormToken = matcher.group(2);
} }
public boolean createPost(int forumId, String subject, String message) {
String url = "https://tippliga-wuerzburg.de/posting.php?mode=post&f=" + forumId;
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create(url))
.GET().build();
String reqBody = "";
try {
TimeUnit.SECONDS.sleep(1);
reqBody = client.send(req, HttpResponse.BodyHandlers.ofString()).body();
} catch (IOException | InterruptedException e) {
logger.error("Failed to fetch posting form", e);
return false;
}
Pattern pattern = Pattern.compile("^[\\s\\S]*<input type=\"hidden\" name=\"creation_time\" value=\"([\\d]{10})\" \\/>[\\s\\S]*<input type=\"hidden\" name=\"form_token\" value=\"([\\d\\w]{40})\" \\/>[\\s\\S]*$");
Matcher matcher = pattern.matcher(reqBody);
if (!matcher.find()) {
logger.error("Could not find CSRF tokens in posting form for forum " + forumId);
return false;
}
String creationTime = matcher.group(1);
String formToken = matcher.group(2);
Map<String, String> postParameters = new HashMap<>();
postParameters.put("subject", subject);
postParameters.put("message", message);
postParameters.put("creation_time", creationTime);
postParameters.put("form_token", formToken);
postParameters.put("post", "Absenden");
postParameters.put("attach_sig", "1");
postParameters.put("enable_bbcode", "1");
postParameters.put("enable_smilies", "1");
postParameters.put("enable_magic_url", "1");
String postForm = postParameters.entrySet()
.stream()
.map(e -> e.getKey() + "=" + URLEncoder.encode(e.getValue(), StandardCharsets.UTF_8))
.collect(Collectors.joining("&"));
HttpRequest postReq = HttpRequest.newBuilder()
.uri(URI.create(url))
.headers("Content-Type", "application/x-www-form-urlencoded")
.POST(HttpRequest.BodyPublishers.ofString(postForm))
.build();
try {
TimeUnit.SECONDS.sleep(1);
HttpResponse<String> response = client.send(postReq, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 302) {
logger.info("Created post '" + subject + "' in forum " + forumId);
return true;
}
logger.error("Failed to create post '" + subject + "' in forum " + forumId + ". Status: " + response.statusCode());
return false;
} catch (IOException | InterruptedException e) {
logger.error("Failed to create post", e);
return false;
}
}
private String getSidFromCookie() { private String getSidFromCookie() {
HttpCookie sidCookie = cookieStore.getCookies().get(2); HttpCookie sidCookie = cookieStore.getCookies().get(2);
String sid = sidCookie.getValue(); String sid = sidCookie.getValue();
@@ -1528,50 +1528,5 @@
"teamname": "Tunisia", "teamname": "Tunisia",
"tippligaID": 710, "tippligaID": 710,
"apiFootballID": 28 "apiFootballID": 28
},
{
"teamname": "SC St. Tönis",
"tippligaID": 673,
"apiFootballID": 19466
},
{
"teamname": "Lüneburger SK Hansa",
"tippligaID": 76,
"apiFootballID": 1645
},
{
"teamname": "Eintracht Trier",
"tippligaID": 46,
"apiFootballID": 1627
},
{
"teamname": "SSV Jeddeloh",
"tippligaID": 124,
"apiFootballID": 1655
},
{
"teamname": "Krieschow",
"tippligaID": 675,
"apiFootballID": 14713
},
{
"teamname": "Westfalia Rhynern",
"tippligaID": 676,
"apiFootballID": 14826
},
{
"teamname": "HEBC",
"tippligaID": 677,
"apiFootballID": 16078
},
{
"teamname": "Fortuna Köln",
"tippligaID": 583,
"apiFootballID": 1326
},
{
"teamname": "NEXT TEAM",
"tippligaID": 674,
"apiFootballID": 9999999
} }
] ]
@@ -288,10 +288,5 @@
"team_id": 2139, "team_id": 2139,
"team_name": "Dustin", "team_name": "Dustin",
"team_name_short": "Dustin" "team_name_short": "Dustin"
},
{
"team_id": 2140,
"team_name": "Marcel W.",
"team_name_short": "Marcel W."
} }
] ]
@@ -1,58 +0,0 @@
{
"numberOfMatchdays": 1,
"matchesPerMatchday": 4,
"pointMode": 4,
"pointsTendency": 1,
"pointsDifference": 2,
"pointsDirectHit": 3,
"ko": 1,
"matchdayConfig": [
{
"TLWMatchday": 1,
"matchdayName": "Relegation",
"numberOfMatches": 4,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 35,
"showTable": true
},
{
"type": "PlaceholderSingleMatch",
"koMatch": true,
"placeholderDatetime": "2027-05-27 20:30:00",
"formulaHome": "D",
"formulaGuest": "D"
},
{
"type": "PlaceholderSingleMatch",
"koMatch": true,
"placeholderDatetime": "2027-05-31 20:30:00",
"formulaHome": "D",
"formulaGuest": "D"
},
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 79,
"leagueMatchday": 35,
"showTable": true
},
{
"type": "PlaceholderSingleMatch",
"koMatch": true,
"placeholderDatetime": "2027-05-28 20:30:00",
"formulaHome": "D",
"formulaGuest": "D"
},
{
"type": "PlaceholderSingleMatch",
"koMatch": true,
"placeholderDatetime": "2027-06-01 20:30:00",
"formulaHome": "D",
"formulaGuest": "D"
}
]
}
]
}
@@ -1,54 +0,0 @@
{
"numberOfMatchdays": 2,
"matchesPerMatchday": 4,
"pointMode": 4,
"pointsTendency": 1,
"pointsDifference": 2,
"pointsDirectHit": 3,
"ko": 1,
"matchdayConfig": [
{
"TLWMatchday": 1,
"matchdayName": "Supercup",
"numberOfMatches": 4,
"matchesConfig": [
{
"matchday": 1,
"matchtime": "2026-08-22 20:30",
"match": "Borussia Dortmund - Bayern München",
"showTable": false,
"matchLeague": 529,
"type": "SingleMatch",
"matchId": 1582362
},
{
"matchday": 1,
"matchtime": "2026-08-22 20:30",
"match": "Borussia Dortmund - Bayern München",
"showTable": false,
"matchLeague": 529,
"type": "SingleMatch",
"matchId": 1582362
},
{
"matchday": 1,
"matchtime": "2026-08-12 21:00",
"match": "Paris Saint Germain - Aston Villa",
"showTable": false,
"matchLeague": 531,
"type": "SingleMatch",
"matchId": 1583664
},
{
"matchday": 1,
"matchtime": "2026-08-12 21:00",
"match": "Paris Saint Germain - Aston Villa",
"showTable": false,
"matchLeague": 531,
"type": "SingleMatch",
"matchId": 1583664
}
]
}
]
}
@@ -1,4 +0,0 @@
{
"1": "Sascha",
"2": "Stefan"
}
@@ -1,434 +0,0 @@
{
"numberOfMatchdays": 39,
"matchesPerMatchday": 12,
"pointMode": 4,
"pointsTendency": 1,
"pointsDifference": 2,
"pointsDirectHit": 3,
"ko": 0,
"matchdayConfig": [
{
"TLWMatchday": 1,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 79,
"leagueMatchday": 1,
"showTable": false
}
]
},
{
"TLWMatchday": 2,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 79,
"leagueMatchday": 2,
"showTable": false
}
]
},
{
"TLWMatchday": 3,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 1,
"showTable": true
}
]
},
{
"TLWMatchday": 4,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 2,
"showTable": true
}
]
},
{
"TLWMatchday": 5,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 3,
"showTable": true
}
]
},
{
"TLWMatchday": 6,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 4,
"showTable": true
}
]
},
{
"TLWMatchday": 7,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 5,
"showTable": true
}
]
},
{
"TLWMatchday": 8,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 6,
"showTable": true
}
]
},
{
"TLWMatchday": 9,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 7,
"showTable": true
}
]
},
{
"TLWMatchday": 10,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 8,
"showTable": true
}
]
},
{
"TLWMatchday": 11,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 9,
"showTable": true
}
]
},
{
"TLWMatchday": 12,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 10,
"showTable": true
}
]
},
{
"TLWMatchday": 13,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 11,
"showTable": true
}
]
},
{
"TLWMatchday": 14,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 12,
"showTable": true
}
]
},
{
"TLWMatchday": 15,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 13,
"showTable": true
}
]
},
{
"TLWMatchday": 16,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 14,
"showTable": true
}
]
},
{
"TLWMatchday": 17,
"matchesConfig": [
{
"type": "Placeholder",
"placeholderDatetime": "2026-12-26 18:00:00"
}
]
},
{
"TLWMatchday": 18,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 15,
"showTable": true
}
]
},
{
"TLWMatchday": 19,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 16,
"showTable": true
}
]
},
{
"TLWMatchday": 20,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 17,
"showTable": true
}
]
},
{
"TLWMatchday": 21,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 18,
"showTable": true
}
]
},
{
"TLWMatchday": 22,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 19,
"showTable": true
}
]
},
{
"TLWMatchday": 23,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 20,
"showTable": true
}
]
},
{
"TLWMatchday": 24,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 21,
"showTable": true
}
]
},
{
"TLWMatchday": 25,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 22,
"showTable": true
}
]
},
{
"TLWMatchday": 26,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 23,
"showTable": true
}
]
},
{
"TLWMatchday": 27,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 24,
"showTable": true
}
]
},
{
"TLWMatchday": 28,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 25,
"showTable": true
}
]
},
{
"TLWMatchday": 29,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 26,
"showTable": true
}
]
},
{
"TLWMatchday": 30,
"matchesConfig": [
{
"type": "Placeholder",
"placeholderDatetime": "2027-03-17 18:00:00"
}
]
},
{
"TLWMatchday": 31,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 27,
"showTable": true
}
]
},
{
"TLWMatchday": 32,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 28,
"showTable": true
}
]
},
{
"TLWMatchday": 33,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 29,
"showTable": true
}
]
},
{
"TLWMatchday": 34,
"matchesConfig": [
{
"type": "Placeholder",
"placeholderDatetime": "2027-04-14 18:00:00"
}
]
},
{
"TLWMatchday": 35,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 30,
"showTable": true
}
]
},
{
"TLWMatchday": 36,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 31,
"showTable": true
}
]
},
{
"TLWMatchday": 37,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 32,
"showTable": true
}
]
},
{
"TLWMatchday": 38,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 33,
"showTable": true
}
]
},
{
"TLWMatchday": 39,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 78,
"leagueMatchday": 34,
"showTable": true
}
]
}
]
}
@@ -1,16 +0,0 @@
{
"1": "Flo",
"2": "Michael",
"3": "Demian",
"4": "Sascha",
"5": "Maxi Z.",
"6": "Julian",
"7": "Dustin",
"8": "Kay",
"9": "Lukas",
"10": "Marcel U.",
"11": "TG Nürnberg",
"12": "Nicole",
"13": "Franz",
"14": "Tristan"
}
@@ -1,16 +0,0 @@
{
"1": "Philipp",
"2": "Marcel",
"3": "Matthias",
"4": "Max",
"5": "Marcel W.",
"6": "Friedrich",
"7": "Stefan",
"8": "Armin",
"9": "Barb",
"10": "Hilde",
"11": "Olli L.",
"12": "Jimmy",
"13": "Johannes",
"14": "Patrick"
}
@@ -1,10 +0,0 @@
INSERT INTO `phpbb_footb_leagues` (`season`, `league`, `league_name`, `league_name_short`, `league_type`, `matchdays`, `matches_on_matchday`, `win_result`, `win_result_02`, `win_matchday`, `win_season`, `points_mode`, `points_result`, `points_tendency`, `points_diff`, `points_last`, `join_by_user`, `join_in_season`, `bet_in_time`, `rules_post_id`, `sort`, `bet_ko_type`, `bet_points`, `bet_type`) VALUES (2027, 1, '1. Tippliga Würzburg', '1TL', 1, 39, 12, '0', '0', '0', '0', 4, 3, 1, 2, 0, 0, 0, 0, 561, 0, 1, 0.00, 0);
INSERT INTO `phpbb_footb_leagues` (`season`, `league`, `league_name`, `league_name_short`, `league_type`, `matchdays`, `matches_on_matchday`, `win_result`, `win_result_02`, `win_matchday`, `win_season`, `points_mode`, `points_result`, `points_tendency`, `points_diff`, `points_last`, `join_by_user`, `join_in_season`, `bet_in_time`, `rules_post_id`, `sort`, `bet_ko_type`, `bet_points`, `bet_type`) VALUES (2027, 2, '2. Tippliga Würzburg', '2TL', 1, 39, 12, '0', '0', '0', '0', 4, 3, 1, 2, 0, 0, 0, 0, 561, 0, 1, 0.00, 0);
INSERT INTO `phpbb_footb_leagues` (`season`, `league`, `league_name`, `league_name_short`, `league_type`, `matchdays`, `matches_on_matchday`, `win_result`, `win_result_02`, `win_matchday`, `win_season`, `points_mode`, `points_result`, `points_tendency`, `points_diff`, `points_last`, `join_by_user`, `join_in_season`, `bet_in_time`, `rules_post_id`, `sort`, `bet_ko_type`, `bet_points`, `bet_type`) VALUES (2027, 45, 'Supercup', 'SC', 2, 1, 0, '0', '0', '0', '0', 4, 3, 1, 2, 0, 0, 0, 1, 561, 0, 1, 0.00, 0);
INSERT INTO `phpbb_footb_leagues` (`season`, `league`, `league_name`, `league_name_short`, `league_type`, `matchdays`, `matches_on_matchday`, `win_result`, `win_result_02`, `win_matchday`, `win_season`, `points_mode`, `points_result`, `points_tendency`, `points_diff`, `points_last`, `join_by_user`, `join_in_season`, `bet_in_time`, `rules_post_id`, `sort`, `bet_ko_type`, `bet_points`, `bet_type`) VALUES (2027, 47, 'Relegation', 'REL', 2, 1, 0, '0', '0', '0', '0', 4, 3, 1, 2, 0, 0, 0, 1, 561, 0, 1, 0.00, 1);
INSERT INTO `phpbb_footb_leagues` (`season`, `league`, `league_name`, `league_name_short`, `league_type`, `matchdays`, `matches_on_matchday`, `win_result`, `win_result_02`, `win_matchday`, `win_season`, `points_mode`, `points_result`, `points_tendency`, `points_diff`, `points_last`, `join_by_user`, `join_in_season`, `bet_in_time`, `rules_post_id`, `sort`, `bet_ko_type`, `bet_points`, `bet_type`) VALUES (2027, 48, 'WTL-Pokal', 'WTL', 2, 5, 0, '0', '0', '0', '0', 4, 3, 1, 2, 0, 0, 0, 0, 561, 0, 1, 0.00, 0);
INSERT INTO `phpbb_footb_leagues` (`season`, `league`, `league_name`, `league_name_short`, `league_type`, `matchdays`, `matches_on_matchday`, `win_result`, `win_result_02`, `win_matchday`, `win_season`, `points_mode`, `points_result`, `points_tendency`, `points_diff`, `points_last`, `join_by_user`, `join_in_season`, `bet_in_time`, `rules_post_id`, `sort`, `bet_ko_type`, `bet_points`, `bet_type`) VALUES (2027, 51, '1. Tippliga Würzburg', '1TL', 1, 39, 7, '0', '0', '0', '0', 1, 0, 0, 0, 1, 0, 0, 0, 561, 0, 1, 0.00, 0);
INSERT INTO `phpbb_footb_leagues` (`season`, `league`, `league_name`, `league_name_short`, `league_type`, `matchdays`, `matches_on_matchday`, `win_result`, `win_result_02`, `win_matchday`, `win_season`, `points_mode`, `points_result`, `points_tendency`, `points_diff`, `points_last`, `join_by_user`, `join_in_season`, `bet_in_time`, `rules_post_id`, `sort`, `bet_ko_type`, `bet_points`, `bet_type`) VALUES (2027, 52, '2. Tippliga Würzburg', '2TL', 1, 39, 7, '0', '0', '0', '0', 1, 0, 0, 0, 1, 0, 0, 0, 561, 0, 1, 0.00, 0);
INSERT INTO `phpbb_footb_leagues` (`season`, `league`, `league_name`, `league_name_short`, `league_type`, `matchdays`, `matches_on_matchday`, `win_result`, `win_result_02`, `win_matchday`, `win_season`, `points_mode`, `points_result`, `points_tendency`, `points_diff`, `points_last`, `join_by_user`, `join_in_season`, `bet_in_time`, `rules_post_id`, `sort`, `bet_ko_type`, `bet_points`, `bet_type`) VALUES (2027, 95, 'Supercup', 'SC', 2, 2, 0, '0', '0', '0', '0', 1, 0, 0, 0, 1, 0, 0, 0, 561, 0, 1, 0.00, 0);
INSERT INTO `phpbb_footb_leagues` (`season`, `league`, `league_name`, `league_name_short`, `league_type`, `matchdays`, `matches_on_matchday`, `win_result`, `win_result_02`, `win_matchday`, `win_season`, `points_mode`, `points_result`, `points_tendency`, `points_diff`, `points_last`, `join_by_user`, `join_in_season`, `bet_in_time`, `rules_post_id`, `sort`, `bet_ko_type`, `bet_points`, `bet_type`) VALUES (2027, 97, 'Relegation', 'REL', 2, 1, 0, '0', '0', '0', '0', 1, 0, 0, 0, 1, 0, 0, 0, 561, 0, 1, 0.00, 0);
INSERT INTO `phpbb_footb_leagues` (`season`, `league`, `league_name`, `league_name_short`, `league_type`, `matchdays`, `matches_on_matchday`, `win_result`, `win_result_02`, `win_matchday`, `win_season`, `points_mode`, `points_result`, `points_tendency`, `points_diff`, `points_last`, `join_by_user`, `join_in_season`, `bet_in_time`, `rules_post_id`, `sort`, `bet_ko_type`, `bet_points`, `bet_type`) VALUES (2027, 98, 'WTL-Pokal', 'WTL', 2, 6, 0, '0', '0', '0', '0', 1, 0, 0, 0, 1, 0, 0, 0, 561, 0, 1, 0.00, 0);
@@ -1,152 +0,0 @@
{
"numberOfMatchdays": 5,
"matchesPerMatchday": 0,
"pointMode": 4,
"pointsTendency": 1,
"pointsDifference": 2,
"pointsDirectHit": 3,
"ko": 1,
"matchdayConfig": [
{
"TLWMatchday": 1,
"matchdayName": "1. Runde",
"numberOfMatches": 32,
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 81,
"leagueMatchday": 1,
"showTable": true
},
{
"type": "Placeholder",
"placeholderDatetime": "2026-08-21 18:00:00"
}
]
},
{
"TLWMatchday": 2,
"numberOfMatches": 16,
"matchdayName": "Achtelfinale",
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 81,
"leagueMatchday": 2,
"showTable": true
},
{
"type": "Placeholder",
"placeholderDatetime": "2026-10-27 18:00:00"
}
]
},
{
"TLWMatchday": 3,
"numberOfMatches": 8,
"matchdayName": "Viertelfinale",
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 81,
"leagueMatchday": 3,
"showTable": true
},
{
"type": "Placeholder",
"placeholderDatetime": "2026-12-01 18:30:00"
}
]
},
{
"TLWMatchday": 4,
"numberOfMatches": 4,
"matchdayName": "Halbfinale",
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 81,
"leagueMatchday": 4,
"showTable": true
},
{
"type": "Placeholder",
"placeholderDatetime": "2027-02-02 18:30:00"
}
]
},
{
"TLWMatchday": 5,
"numberOfMatches": 6,
"matchdayName": "Finale",
"matchesConfig": [
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 81,
"leagueMatchday": 5,
"showTable": true
},
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 81,
"leagueMatchday": 5,
"showTable": true
},
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 81,
"leagueMatchday": 6,
"showTable": true
},
{
"type": "AllMatchesOfMatchday",
"matchesLeague": 81,
"leagueMatchday": 6,
"showTable": true
},
{
"type": "PlaceholderSingleMatch",
"koMatch": true,
"placeholderDatetime": "2027-04-20 20:45:00",
"formulaHome": "D",
"formulaGuest": "D"
},
{
"type": "PlaceholderSingleMatch",
"koMatch": true,
"placeholderDatetime": "2027-04-20 20:45:00",
"formulaHome": "D",
"formulaGuest": "D"
},
{
"type": "PlaceholderSingleMatch",
"koMatch": true,
"placeholderDatetime": "2027-04-21 20:45:00",
"formulaHome": "D",
"formulaGuest": "D"
},
{
"type": "PlaceholderSingleMatch",
"koMatch": true,
"placeholderDatetime": "2027-04-21 20:45:00",
"formulaHome": "D",
"formulaGuest": "D"
},
{
"type": "PlaceholderSingleMatch",
"koMatch": true,
"placeholderDatetime": "2027-05-29 20:00:00",
"formulaHome": "W 61",
"formulaGuest": "W 63"
},
{
"type": "PlaceholderSingleMatch",
"koMatch": true,
"placeholderDatetime": "2027-05-29 20:00:00",
"formulaHome": "W 62",
"formulaGuest": "W 64"
}
]
}
]
}
@@ -1,26 +0,0 @@
{
"1": "Matthias",
"2": "Marcel U.",
"3": "Marcel",
"4": "Dustin",
"5": "Johannes",
"6": "Tristan",
"7": "Philipp",
"8": "Nicole",
"9": "Barb",
"10": "TG Nürnberg",
"11": "Marcel W.",
"12": "Maxi Z.",
"13": "Olli L.",
"14": "Lukas",
"15": "Jimmy",
"16": "Franz",
"17": "Armin",
"18": "Demian",
"19": "Hilde",
"20": "Kay",
"21": "Patrick",
"22": "Flo",
"23": "Stefan",
"24": "Max"
}
@@ -1,2 +0,0 @@
UPDATE phpbb_footb_matchdays SET status = 0 WHERE season = 2027 AND status > 0;
UPDATE phpbb_footb_matches SET status = 0 WHERE season = 2027 AND status > 0;
@@ -1,11 +1,11 @@
package de.jeyp91.apifootball; package de.jeyp91.apifootball;
import java.util.ArrayList;
import org.junit.Test; import org.junit.Test;
import java.util.ArrayList;
public class APIFootballConnectorTest { public class APIFootballConnectorTest {
/*
@Test @Test
public void APITestGetMatchDataOfMatchdayBundesliga() { public void APITestGetMatchDataOfMatchdayBundesliga() {
APIFootballConnector apiFootballConnector = APIFootballConnector.getAPIFootballConnectorInstance(2020); APIFootballConnector apiFootballConnector = APIFootballConnector.getAPIFootballConnectorInstance(2020);
@@ -13,5 +13,4 @@ public class APIFootballConnectorTest {
assert matchesOfMatchday.get(0).getTeamIdHome() == 744; assert matchesOfMatchday.get(0).getTeamIdHome() == 744;
assert matchesOfMatchday.get(0).getTeamIdGuest() == 159; assert matchesOfMatchday.get(0).getTeamIdGuest() == 159;
} }
*/
} }
@@ -6,7 +6,7 @@ import org.junit.Test;
import static de.jeyp91.apifootball.APIFootballConnector.stringToJSONObject; import static de.jeyp91.apifootball.APIFootballConnector.stringToJSONObject;
public class APIFootballMatchTest { public class APIFootballMatchTest {
/*
@Test @Test
public void withExtratime() throws Exception { public void withExtratime() throws Exception {
String matchString = "{\"fixture_id\":958530,\"league_id\":4303,\"league\":{\"name\":\"DFB Pokal\",\"country\":\"Germany\",\"logo\":\"https:\\/\\/media-3.api-sports.io\\/football\\/leagues\\/81.png\",\"flag\":\"https:\\/\\/media-1.api-sports.io\\/flags\\/de.svg\"},\"event_date\":\"2022-10-19T18:00:00+02:00\",\"event_timestamp\":1666195200,\"firstHalfStart\":1666195200,\"secondHalfStart\":1666198800,\"round\":\"2nd Round\",\"status\":\"Match Finished\",\"statusShort\":\"PEN\",\"elapsed\":120,\"venue\":\"Home Deluxe Arena\",\"referee\":\"Frank Willenborg, Germany\",\"homeTeam\":{\"team_id\":185,\"team_name\":\"SC Paderborn 07\",\"logo\":\"https:\\/\\/media-2.api-sports.io\\/football\\/teams\\/185.png\"},\"awayTeam\":{\"team_id\":162,\"team_name\":\"Werder Bremen\",\"logo\":\"https:\\/\\/media-3.api-sports.io\\/football\\/teams\\/162.png\"},\"goalsHomeTeam\":2,\"goalsAwayTeam\":2,\"score\":{\"halftime\":\"2-0\",\"fulltime\":\"2-2\",\"extratime\":\"0-0\",\"penalty\":\"5-4\"}}"; String matchString = "{\"fixture_id\":958530,\"league_id\":4303,\"league\":{\"name\":\"DFB Pokal\",\"country\":\"Germany\",\"logo\":\"https:\\/\\/media-3.api-sports.io\\/football\\/leagues\\/81.png\",\"flag\":\"https:\\/\\/media-1.api-sports.io\\/flags\\/de.svg\"},\"event_date\":\"2022-10-19T18:00:00+02:00\",\"event_timestamp\":1666195200,\"firstHalfStart\":1666195200,\"secondHalfStart\":1666198800,\"round\":\"2nd Round\",\"status\":\"Match Finished\",\"statusShort\":\"PEN\",\"elapsed\":120,\"venue\":\"Home Deluxe Arena\",\"referee\":\"Frank Willenborg, Germany\",\"homeTeam\":{\"team_id\":185,\"team_name\":\"SC Paderborn 07\",\"logo\":\"https:\\/\\/media-2.api-sports.io\\/football\\/teams\\/185.png\"},\"awayTeam\":{\"team_id\":162,\"team_name\":\"Werder Bremen\",\"logo\":\"https:\\/\\/media-3.api-sports.io\\/football\\/teams\\/162.png\"},\"goalsHomeTeam\":2,\"goalsAwayTeam\":2,\"score\":{\"halftime\":\"2-0\",\"fulltime\":\"2-2\",\"extratime\":\"0-0\",\"penalty\":\"5-4\"}}";
@@ -20,5 +20,4 @@ public class APIFootballMatchTest {
JSONObject matchJson = stringToJSONObject(matchString); JSONObject matchJson = stringToJSONObject(matchString);
APIFootballMatch match = new APIFootballMatch(matchJson, 2023); APIFootballMatch match = new APIFootballMatch(matchJson, 2023);
} }
*/
} }
@@ -4,8 +4,8 @@ import org.junit.Test;
public class APIFootballUpdaterTest { public class APIFootballUpdaterTest {
int season = 2027; int season = 2026;
/*
@Test @Test
public void checkErrorsTest() { public void checkErrorsTest() {
String rateLimitError = "{\"results\":0,\"errors\":{\"rateLimit\":\"Too many requests. Your rate limit is 10 requests per minute.\"}}"; String rateLimitError = "{\"results\":0,\"errors\":{\"rateLimit\":\"Too many requests. Your rate limit is 10 requests per minute.\"}}";
@@ -41,5 +41,4 @@ public class APIFootballUpdaterTest {
APIFootballUpdater updater = new APIFootballUpdater(); APIFootballUpdater updater = new APIFootballUpdater();
updater.updateAllRounds(season); updater.updateAllRounds(season);
} }
*/
} }
@@ -0,0 +1,77 @@
package de.jeyp91.openligadb;
import org.junit.Test;
import java.util.ArrayList;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class OpenLigaDBConnectorTest {
@Test
public void APITestGetMatchDataOfMatchdayBundesliga() {
OpenLigaDBConnector openLigaDBConnector = new OpenLigaDBConnector();
ArrayList<OpenLigaDBMatch> matches = openLigaDBConnector.getMatchDataOfMatchday(2020, "bl1", 1);
assertEquals(9, matches.size());
OpenLigaDBMatch match;
match = matches.get(0);
assertEquals((Integer) 55277, match.getMatchId());
assertEquals((Integer) 40, match.getTeamIdHome());
assertEquals((Integer) 54, match.getTeamIdGuest());
assertEquals((Integer) 2020, match.getSeason());
assertEquals("2019-08-16T20:30:00", match.getMatchDateTime());
assertEquals((Integer) 1, match.getMatchday());
assertEquals((Integer) 2, match.getGoalsHome());
assertEquals((Integer) 2, match.getGoalsGuest());
assertTrue(match.getMatchIsFinished());
match = matches.get(1);
assertEquals((Integer) 55278, match.getMatchId());
assertEquals((Integer) 7, match.getTeamIdHome());
assertEquals((Integer) 95, match.getTeamIdGuest());
assertEquals((Integer) 2020, match.getSeason());
assertEquals("2019-08-17T15:30:00", match.getMatchDateTime());
assertEquals((Integer) 1, match.getMatchday());
assertEquals((Integer) 5, match.getGoalsHome());
assertEquals((Integer) 1, match.getGoalsGuest());
assertTrue(match.getMatchIsFinished());
}
@Test
public void APITestGetMatchDataOfMatchdayDFBPokal() {
OpenLigaDBConnector openLigaDBConnector = new OpenLigaDBConnector();
ArrayList<OpenLigaDBMatch> matches = openLigaDBConnector.getMatchDataOfMatchday(2020, "dfb2019", 1);
assert matches.size() == 32;
OpenLigaDBMatch match = matches.get(0);
assertEquals((Integer) 54926, match.getMatchId());
assertEquals((Integer) 563, match.getTeamIdHome());
assertEquals((Integer) 7, match.getTeamIdGuest());
assertEquals((Integer) 2020, match.getSeason());
assertEquals("2019-08-09T20:45:00", match.getMatchDateTime());
assertEquals((Integer) 1, match.getMatchday());
assertEquals((Integer) 0, match.getGoalsHome());
assertEquals((Integer) 2, match.getGoalsGuest());
assertTrue(match.getMatchIsFinished());
}
@Test
public void APITestGetMatchDataOfSingleMatch() {
OpenLigaDBConnector openLigaDBConnector = new OpenLigaDBConnector();
OpenLigaDBMatch match = openLigaDBConnector.getMatchDataOfSingleMatch(55583);
assertEquals((Integer) 55583, match.getMatchId());
assertEquals((Integer) 16, match.getTeamIdHome());
assertEquals((Integer) 55, match.getTeamIdGuest());
assertEquals((Integer) 2020, match.getSeason());
assertEquals("2019-07-26T20:30:00", match.getMatchDateTime());
assertEquals((Integer) 1, match.getMatchday());
assertEquals((Integer) 2, match.getGoalsHome());
assertEquals((Integer) 1, match.getGoalsGuest());
assertTrue(match.getMatchIsFinished());
}
}
@@ -7,7 +7,7 @@ import org.junit.Test;
public class TLWMatchdaysCreatorTest { public class TLWMatchdaysCreatorTest {
int season = 2027; int season = 2026;
@Test @Test
public void getMatchdaysTippligaTest() { public void getMatchdaysTippligaTest() {
@@ -90,19 +90,11 @@ public class TLWMatchdaysCreatorTest {
System.out.println(sql); System.out.println(sql);
} }
@Test
public void getMatchdaysRelegationSqlTest() {
TLWMatchdaysCreator matchdaysCreator = new TLWMatchdaysCreator(season, 47, "Relegation");
String sql = matchdaysCreator.getMatchdaysSQL();
System.out.println(sql);
}
@Test @Test
public void getMatchdaysEMTippspielSqlTest() { public void getMatchdaysEMTippspielSqlTest() {
TLWMatchdaysCreator matchdaysCreator = new TLWMatchdaysCreator(2021, 49, "EM-Tippspiel"); TLWMatchdaysCreator matchdaysCreator = new TLWMatchdaysCreator(2021, 49, "EM-Tippspiel");
String sql = matchdaysCreator.getMatchdaysSQL(); String sql = matchdaysCreator.getMatchdaysSQL();
System.out.println(sql); // System.out.println(sql);
} }
} }
@@ -1,13 +1,14 @@
package de.jeyp91.tippliga; package de.jeyp91.tippliga;
import org.junit.Test;
import java.util.ArrayList; import java.util.ArrayList;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class TLWMatchesCreatorFootballTest { public class TLWMatchesCreatorFootballTest {
int season = 2027; int season = 2026;
@Test @Test
public void getMatchesTest() { public void getMatchesTest() {
@@ -48,9 +49,9 @@ public class TLWMatchesCreatorFootballTest {
} }
@Test @Test
public void getMatchesRelegationSqlTest() { public void getMatchesEMTippspielSqlTest() {
TLWMatchesCreatorFootball creator = new TLWMatchesCreatorFootball(season, 47, "Relegation"); TLWMatchesCreatorFootball creator = new TLWMatchesCreatorFootball(2021, 49, "EM-Tippspiel");
String sql = creator.getSQLInsertString(); String sql = creator.getSQLInsertString();
System.out.println(sql); // System.out.println(sql);
} }
} }
@@ -4,7 +4,7 @@ import org.junit.Test;
public class TLWMatchesCreatorTipperPokalTest { public class TLWMatchesCreatorTipperPokalTest {
int season = 2027; int season = 2026;
@Test @Test
public void getMatchesWTLPokalTest() { public void getMatchesWTLPokalTest() {
@@ -4,7 +4,7 @@ import org.junit.Test;
public class TLWMatchesCreatorTipperTest { public class TLWMatchesCreatorTipperTest {
int season = 2027; int season = 2026;
@Test @Test
public void getMatchesTippliga1Test() { public void getMatchesTippliga1Test() {
@@ -4,7 +4,7 @@ import org.junit.Test;
public class TLWMatchesUpdaterFootballTest { public class TLWMatchesUpdaterFootballTest {
int season = 2027; int season = 2026;
@Test @Test
public void getUpdateSqlTest1() { public void getUpdateSqlTest1() {
TLWMatchesUpdaterFootball updater = new TLWMatchesUpdaterFootball(season, 1, "Tippliga"); TLWMatchesUpdaterFootball updater = new TLWMatchesUpdaterFootball(season, 1, "Tippliga");
@@ -6,7 +6,7 @@ import org.junit.Test;
public class TLWTeamsCreatorTest { public class TLWTeamsCreatorTest {
int season = 2027; int season = 2026;
@Test @Test
public void getTeamsTippligaFootball1Test() { public void getTeamsTippligaFootball1Test() {