From 1f2ff67f38f04fe7891fe5fcdb0a5404f7204568 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Z=C3=B6ller?= Date: Tue, 13 Jan 2026 12:53:18 +0100 Subject: [PATCH] Big Feature and Beautifying Package --- FEDERATION_TESTING_GUIDE.md | 4 +- pom.xml | 74 ++--- .../javahippie}/fitpub/FitPubApplication.java | 2 +- .../fitpub/config/AsyncConfiguration.java | 2 +- .../fitpub/config/HostHeaderInterceptor.java | 2 +- .../fitpub/config/SecurityConfig.java | 7 +- .../fitpub/config/ThymeleafConfig.java | 2 +- .../controller/ActivitiesViewController.java | 2 +- .../fitpub/controller/ActivityController.java | 36 +- .../controller/ActivityPubController.java | 24 +- .../controller/AnalyticsController.java | 17 +- .../controller/AnalyticsViewController.java | 2 +- .../fitpub/controller/AuthController.java | 10 +- .../fitpub/controller/AuthViewController.java | 2 +- .../controller/BatchImportController.java | 16 +- .../controller/BatchImportViewController.java | 2 +- .../fitpub/controller/CommentController.java | 22 +- .../fitpub/controller/DebugController.java | 6 +- .../fitpub/controller/HeatmapController.java | 14 +- .../fitpub/controller/HomeController.java | 7 +- .../fitpub/controller/LikeController.java | 21 +- .../controller/NotificationController.java | 12 +- .../NotificationsViewController.java | 2 +- .../controller/PrivacyZoneController.java | 16 +- .../controller/ProfileViewController.java | 2 +- .../fitpub/controller/TimelineController.java | 10 +- .../controller/TimelineViewController.java | 2 +- .../fitpub/controller/UserController.java | 30 +- .../controller/WebFingerController.java | 8 +- .../exception/FitFileProcessingException.java | 2 +- .../exception/GpxFileProcessingException.java | 2 +- .../exception/InvalidFitFileException.java | 2 +- .../exception/InvalidGpxFileException.java | 2 +- .../UnsupportedFileFormatException.java | 2 +- .../fitpub/model/activitypub/Actor.java | 5 +- .../model/activitypub/OrderedCollection.java | 2 +- .../model/activitypub/WebFingerLink.java | 2 +- .../model/activitypub/WebFingerResource.java | 2 +- .../model/activitypub/WebFingerResponse.java | 2 +- .../model/dto/AccountDeletionRequest.java | 2 +- .../fitpub/model/dto/ActivityDTO.java | 22 +- .../fitpub/model/dto/ActivityMetricsDTO.java | 4 +- .../model/dto/ActivityUpdateRequest.java | 6 +- .../model/dto/ActivityUploadRequest.java | 5 +- .../fitpub/model/dto/ActorDTO.java | 6 +- .../fitpub/model/dto/AuthResponse.java | 2 +- .../model/dto/CommentCreateRequest.java | 2 +- .../fitpub/model/dto/CommentDTO.java | 4 +- .../model/dto/CreatePrivacyZoneRequest.java | 2 +- .../fitpub/model/dto/HeatmapDataDTO.java | 4 +- .../javahippie}/fitpub/model/dto/LikeDTO.java | 4 +- .../fitpub/model/dto/LoginRequest.java | 2 +- .../fitpub/model/dto/NotificationDTO.java | 4 +- .../fitpub/model/dto/PrivacyZoneDTO.java | 4 +- .../fitpub/model/dto/RegisterRequest.java | 2 +- .../fitpub/model/dto/TimelineActivityDTO.java | 15 +- .../model/dto/UpdatePrivacyZoneRequest.java | 2 +- .../javahippie}/fitpub/model/dto/UserDTO.java | 4 +- .../fitpub/model/dto/UserUpdateRequest.java | 2 +- .../fitpub/model/entity/Achievement.java | 2 +- .../fitpub/model/entity/Activity.java | 10 +- .../fitpub/model/entity/ActivityMetrics.java | 2 +- .../fitpub/model/entity/ActivitySummary.java | 2 +- .../model/entity/BatchImportFileResult.java | 2 +- .../fitpub/model/entity/BatchImportJob.java | 2 +- .../fitpub/model/entity/Comment.java | 2 +- .../fitpub/model/entity/Follow.java | 2 +- .../javahippie}/fitpub/model/entity/Like.java | 2 +- .../fitpub/model/entity/Notification.java | 2 +- .../fitpub/model/entity/PersonalRecord.java | 2 +- .../fitpub/model/entity/PrivacyZone.java | 2 +- .../fitpub/model/entity/RemoteActivity.java | 2 +- .../fitpub/model/entity/RemoteActor.java | 2 +- .../fitpub/model/entity/TrainingLoad.java | 2 +- .../javahippie}/fitpub/model/entity/User.java | 2 +- .../fitpub/model/entity/UserHeatmapGrid.java | 2 +- .../fitpub/model/entity/WeatherData.java | 2 +- .../repository/AchievementRepository.java | 4 +- .../repository/ActivityMetricsRepository.java | 4 +- .../fitpub/repository/ActivityRepository.java | 4 +- .../repository/ActivitySummaryRepository.java | 4 +- .../BatchImportFileResultRepository.java | 4 +- .../repository/BatchImportJobRepository.java | 4 +- .../fitpub/repository/CommentRepository.java | 4 +- .../fitpub/repository/FollowRepository.java | 4 +- .../fitpub/repository/LikeRepository.java | 6 +- .../repository/NotificationRepository.java | 4 +- .../repository/PersonalRecordRepository.java | 4 +- .../repository/PrivacyZoneRepository.java | 4 +- .../repository/RemoteActivityRepository.java | 4 +- .../repository/RemoteActorRepository.java | 4 +- .../repository/TrainingLoadRepository.java | 4 +- .../repository/UserHeatmapGridRepository.java | 4 +- .../fitpub/repository/UserRepository.java | 5 +- .../repository/WeatherDataRepository.java | 4 +- .../BatchImportCleanupScheduler.java | 4 +- .../CustomAuthenticationEntryPoint.java | 2 +- .../security/HttpSignatureValidator.java | 2 +- .../security/JwtAuthenticationFilter.java | 2 +- .../fitpub/security/JwtTokenProvider.java | 2 +- .../security/UserDetailsServiceImpl.java | 6 +- .../fitpub/service/AchievementService.java | 10 +- .../fitpub/service/ActivityFileService.java | 23 +- .../fitpub/service/ActivityImageService.java | 10 +- .../ActivityPostProcessingService.java | 12 +- .../service/ActivitySummaryService.java | 14 +- .../fitpub/service/BatchImportService.java | 21 +- .../fitpub/service/FederationService.java | 16 +- .../fitpub/service/FitFileService.java | 25 +- .../fitpub/service/HeatmapGridService.java | 13 +- .../fitpub/service/InboxProcessor.java | 43 +-- .../fitpub/service/NotificationService.java | 14 +- .../fitpub/service/OsmTileRenderer.java | 2 +- .../fitpub/service/PersonalRecordService.java | 8 +- .../fitpub/service/PrivacyZoneService.java | 6 +- .../fitpub/service/TimelineResultMapper.java | 6 +- .../fitpub/service/TimelineService.java | 32 +- .../fitpub/service/TrackPrivacyFilter.java | 5 +- .../fitpub/service/TrainingLoadService.java | 10 +- .../fitpub/service/UserService.java | 16 +- .../fitpub/service/WeatherService.java | 8 +- .../fitpub/service/WebFingerClient.java | 2 +- .../fitpub/util/ActivityFormatter.java | 4 +- .../fitpub/util/ByteArrayMultipartFile.java | 2 +- .../fitpub/util/FitFileValidator.java | 4 +- .../javahippie}/fitpub/util/FitParser.java | 14 +- .../fitpub/util/GpxFileValidator.java | 4 +- .../javahippie}/fitpub/util/GpxParser.java | 10 +- .../fitpub/util/ParsedActivityData.java | 6 +- .../fitpub/util/SpeedSmoother.java | 4 +- .../fitpub/util/TrackSimplifier.java | 2 +- src/main/resources/application-dev.yml | 2 +- src/main/resources/application-prod.yml | 2 +- src/main/resources/application.yml | 2 +- .../V22__add_race_flag_to_activities.sql | 10 + src/main/resources/static/css/fitpub.css | 312 ++++++++++++++++++ src/main/resources/static/js/timeline.js | 10 +- .../templates/activities/detail.html | 25 ++ .../resources/templates/activities/edit.html | 17 +- .../resources/templates/activities/list.html | 10 +- .../templates/activities/upload.html | 16 +- src/main/resources/templates/layout.html | 18 +- .../templates/profile/followers.html | 2 +- .../templates/profile/following.html | 6 +- src/main/resources/templates/terms.html | 131 ++++++++ .../fitpub/FitPubApplicationTest.java | 31 ++ .../fitpub/config/DevDataInitializer.java | 6 +- .../config/TestcontainersConfiguration.java | 10 +- .../ActivityControllerIntegrationTest.java | 18 +- .../FederationFollowFlowIntegrationTest.java | 20 +- .../fitpub/security/DateFormatTest.java | 2 +- .../security/KeyPairValidationTest.java | 13 +- .../service/AchievementServiceTest.java | 13 +- .../service/ActivityImageServiceTest.java | 19 +- .../ActivityPostProcessingServiceTest.java | 12 +- .../fitpub/service/FitFileServiceTest.java | 30 +- .../service/HeatmapGridServiceTest.java | 15 +- .../service/PersonalRecordServiceTest.java | 11 +- .../fitpub/service/TimelineServiceTest.java | 142 +++++--- .../service/TrainingLoadServiceTest.java | 11 +- .../fitpub/service/UserServiceTest.java | 10 +- .../fitpub/service/WeatherServiceTest.java | 9 +- .../fitpub/service/WebFingerClientTest.java | 2 +- .../fitpub/util/DatePersistenceTest.java | 15 +- .../fitpub/util/FitFileAnalyzer.java | 2 +- .../fitpub/util/FitFileValidatorTest.java | 4 +- .../fitpub/util/FitParserIntegrationTest.java | 4 +- .../fitpub/util/GpxParserIntegrationTest.java | 8 +- .../fitpub/util/TestFitFileGenerator.java | 2 +- .../fitpub/util/TimestampDebuggingTest.java | 3 +- src/test/resources/application-test.yml | 14 +- 171 files changed, 1286 insertions(+), 663 deletions(-) rename src/main/java/{org/operaton => net/javahippie}/fitpub/FitPubApplication.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/config/AsyncConfiguration.java (99%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/config/HostHeaderInterceptor.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/config/SecurityConfig.java (97%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/config/ThymeleafConfig.java (92%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/ActivitiesViewController.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/ActivityController.java (95%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/ActivityPubController.java (94%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/AnalyticsController.java (93%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/AnalyticsViewController.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/AuthController.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/AuthViewController.java (93%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/BatchImportController.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/BatchImportViewController.java (93%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/CommentController.java (92%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/DebugController.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/HeatmapController.java (94%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/HomeController.java (75%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/LikeController.java (91%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/NotificationController.java (94%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/NotificationsViewController.java (88%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/PrivacyZoneController.java (93%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/ProfileViewController.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/TimelineController.java (95%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/TimelineViewController.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/UserController.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/controller/WebFingerController.java (93%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/exception/FitFileProcessingException.java (88%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/exception/GpxFileProcessingException.java (90%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/exception/InvalidFitFileException.java (89%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/exception/InvalidGpxFileException.java (91%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/exception/UnsupportedFileFormatException.java (90%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/activitypub/Actor.java (94%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/activitypub/OrderedCollection.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/activitypub/WebFingerLink.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/activitypub/WebFingerResource.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/activitypub/WebFingerResponse.java (97%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/AccountDeletionRequest.java (94%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/ActivityDTO.java (95%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/ActivityMetricsDTO.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/ActivityUpdateRequest.java (83%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/ActivityUploadRequest.java (81%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/ActorDTO.java (95%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/AuthResponse.java (91%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/CommentCreateRequest.java (92%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/CommentDTO.java (95%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/CreatePrivacyZoneRequest.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/HeatmapDataDTO.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/LikeDTO.java (93%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/LoginRequest.java (91%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/NotificationDTO.java (94%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/PrivacyZoneDTO.java (93%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/RegisterRequest.java (97%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/TimelineActivityDTO.java (93%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/UpdatePrivacyZoneRequest.java (97%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/UserDTO.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/dto/UserUpdateRequest.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/Achievement.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/Activity.java (95%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/ActivityMetrics.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/ActivitySummary.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/BatchImportFileResult.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/BatchImportJob.java (99%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/Comment.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/Follow.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/Like.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/Notification.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/PersonalRecord.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/PrivacyZone.java (97%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/RemoteActivity.java (99%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/RemoteActor.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/TrainingLoad.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/User.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/UserHeatmapGrid.java (97%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/model/entity/WeatherData.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/AchievementRepository.java (95%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/ActivityMetricsRepository.java (90%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/ActivityRepository.java (99%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/ActivitySummaryRepository.java (95%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/BatchImportFileResultRepository.java (94%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/BatchImportJobRepository.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/CommentRepository.java (95%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/FollowRepository.java (97%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/LikeRepository.java (93%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/NotificationRepository.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/PersonalRecordRepository.java (95%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/PrivacyZoneRepository.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/RemoteActivityRepository.java (97%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/RemoteActorRepository.java (88%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/TrainingLoadRepository.java (94%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/UserHeatmapGridRepository.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/UserRepository.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/repository/WeatherDataRepository.java (90%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/scheduler/BatchImportCleanupScheduler.java (93%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/security/CustomAuthenticationEntryPoint.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/security/HttpSignatureValidator.java (99%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/security/JwtAuthenticationFilter.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/security/JwtTokenProvider.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/security/UserDetailsServiceImpl.java (93%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/AchievementService.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/ActivityFileService.java (95%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/ActivityImageService.java (99%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/ActivityPostProcessingService.java (97%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/ActivitySummaryService.java (95%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/BatchImportService.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/FederationService.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/FitFileService.java (95%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/HeatmapGridService.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/InboxProcessor.java (95%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/NotificationService.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/OsmTileRenderer.java (99%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/PersonalRecordService.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/PrivacyZoneService.java (97%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/TimelineResultMapper.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/TimelineService.java (94%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/TrackPrivacyFilter.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/TrainingLoadService.java (97%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/UserService.java (95%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/WeatherService.java (99%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/service/WebFingerClient.java (99%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/util/ActivityFormatter.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/util/ByteArrayMultipartFile.java (97%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/util/FitFileValidator.java (97%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/util/FitParser.java (97%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/util/GpxFileValidator.java (97%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/util/GpxParser.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/util/ParsedActivityData.java (96%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/util/SpeedSmoother.java (98%) rename src/main/java/{org/operaton => net/javahippie}/fitpub/util/TrackSimplifier.java (99%) create mode 100644 src/main/resources/db/migration/V22__add_race_flag_to_activities.sql create mode 100644 src/main/resources/templates/terms.html create mode 100644 src/test/java/net/javahippie/fitpub/FitPubApplicationTest.java rename src/{main/java/org/operaton => test/java/net/javahippie}/fitpub/config/DevDataInitializer.java (95%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/config/TestcontainersConfiguration.java (81%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/controller/ActivityControllerIntegrationTest.java (96%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/integration/FederationFollowFlowIntegrationTest.java (96%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/security/DateFormatTest.java (96%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/security/KeyPairValidationTest.java (90%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/service/AchievementServiceTest.java (98%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/service/ActivityImageServiceTest.java (94%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/service/ActivityPostProcessingServiceTest.java (97%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/service/FitFileServiceTest.java (96%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/service/HeatmapGridServiceTest.java (94%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/service/PersonalRecordServiceTest.java (98%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/service/TimelineServiceTest.java (57%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/service/TrainingLoadServiceTest.java (98%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/service/UserServiceTest.java (97%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/service/WeatherServiceTest.java (98%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/service/WebFingerClientTest.java (99%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/util/DatePersistenceTest.java (96%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/util/FitFileAnalyzer.java (99%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/util/FitFileValidatorTest.java (98%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/util/FitParserIntegrationTest.java (99%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/util/GpxParserIntegrationTest.java (98%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/util/TestFitFileGenerator.java (98%) rename src/test/java/{org/operaton => net/javahippie}/fitpub/util/TimestampDebuggingTest.java (99%) diff --git a/FEDERATION_TESTING_GUIDE.md b/FEDERATION_TESTING_GUIDE.md index 88dfa3e..16a08c4 100644 --- a/FEDERATION_TESTING_GUIDE.md +++ b/FEDERATION_TESTING_GUIDE.md @@ -237,7 +237,7 @@ fitpub: logging: level: - org.operaton.fitpub: DEBUG + net.javahippie.fitpub: DEBUG ``` #### `application-instance2.yml` @@ -261,7 +261,7 @@ fitpub: logging: level: - org.operaton.fitpub: DEBUG + net.javahippie.fitpub: DEBUG ``` ### Step 3: Build the Application diff --git a/pom.xml b/pom.xml index 19ea560..1d9bcfb 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ - org.operaton + net.javahippie feditrack 1.0-SNAPSHOT FitPub @@ -23,6 +23,7 @@ UTF-8 17 0.12.3 + 2.0.3 @@ -77,16 +78,6 @@ flyway-core - - - - org.springframework.boot - spring-boot-testcontainers - - - org.testcontainers - postgresql - io.hypersistence hypersistence-utils-hibernate-63 @@ -155,6 +146,7 @@ spring-boot-starter-test test + org.springframework.security spring-security-test @@ -168,45 +160,29 @@ runtime true - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - org.projectlombok - lombok - - - - org.springframework.boot - spring-boot-testcontainers - - - org.testcontainers - testcontainers - - - org.testcontainers - postgresql - - - org.testcontainers - jdbc - - - org.testcontainers - database-commons - - - - - - + + org.springframework.boot + spring-boot-testcontainers + test + + + + org.testcontainers + testcontainers-junit-jupiter + 2.0.2 + test + + + + + org.testcontainers + testcontainers-postgresql + 2.0.1 + test + + + diff --git a/src/main/java/org/operaton/fitpub/FitPubApplication.java b/src/main/java/net/javahippie/fitpub/FitPubApplication.java similarity index 98% rename from src/main/java/org/operaton/fitpub/FitPubApplication.java rename to src/main/java/net/javahippie/fitpub/FitPubApplication.java index d8ba851..8f4b0e3 100644 --- a/src/main/java/org/operaton/fitpub/FitPubApplication.java +++ b/src/main/java/net/javahippie/fitpub/FitPubApplication.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub; +package net.javahippie.fitpub; import lombok.extern.slf4j.Slf4j; import org.apache.hc.client5.http.classic.HttpClient; diff --git a/src/main/java/org/operaton/fitpub/config/AsyncConfiguration.java b/src/main/java/net/javahippie/fitpub/config/AsyncConfiguration.java similarity index 99% rename from src/main/java/org/operaton/fitpub/config/AsyncConfiguration.java rename to src/main/java/net/javahippie/fitpub/config/AsyncConfiguration.java index 4b8818b..2ec2eae 100644 --- a/src/main/java/org/operaton/fitpub/config/AsyncConfiguration.java +++ b/src/main/java/net/javahippie/fitpub/config/AsyncConfiguration.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.config; +package net.javahippie.fitpub.config; import lombok.extern.slf4j.Slf4j; import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler; diff --git a/src/main/java/org/operaton/fitpub/config/HostHeaderInterceptor.java b/src/main/java/net/javahippie/fitpub/config/HostHeaderInterceptor.java similarity index 96% rename from src/main/java/org/operaton/fitpub/config/HostHeaderInterceptor.java rename to src/main/java/net/javahippie/fitpub/config/HostHeaderInterceptor.java index db8dfd5..ba305f3 100644 --- a/src/main/java/org/operaton/fitpub/config/HostHeaderInterceptor.java +++ b/src/main/java/net/javahippie/fitpub/config/HostHeaderInterceptor.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.config; +package net.javahippie.fitpub.config; import org.apache.hc.core5.http.EntityDetails; import org.apache.hc.core5.http.HttpRequest; diff --git a/src/main/java/org/operaton/fitpub/config/SecurityConfig.java b/src/main/java/net/javahippie/fitpub/config/SecurityConfig.java similarity index 97% rename from src/main/java/org/operaton/fitpub/config/SecurityConfig.java rename to src/main/java/net/javahippie/fitpub/config/SecurityConfig.java index 49283f4..d2518e1 100644 --- a/src/main/java/org/operaton/fitpub/config/SecurityConfig.java +++ b/src/main/java/net/javahippie/fitpub/config/SecurityConfig.java @@ -1,7 +1,7 @@ -package org.operaton.fitpub.config; +package net.javahippie.fitpub.config; import lombok.RequiredArgsConstructor; -import org.operaton.fitpub.security.JwtAuthenticationFilter; +import net.javahippie.fitpub.security.JwtAuthenticationFilter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; @@ -36,7 +36,7 @@ public class SecurityConfig { private final JwtAuthenticationFilter jwtAuthenticationFilter; private final UserDetailsService userDetailsService; - private final org.operaton.fitpub.security.CustomAuthenticationEntryPoint customAuthenticationEntryPoint; + private final net.javahippie.fitpub.security.CustomAuthenticationEntryPoint customAuthenticationEntryPoint; /** * Configures the security filter chain. @@ -62,6 +62,7 @@ public class SecurityConfig { // Public endpoints - Web UI pages .requestMatchers("/", "/login", "/register", "/timeline", "/timeline/**").permitAll() .requestMatchers("/discover").permitAll() // User discovery page + .requestMatchers("/terms").permitAll() // Terms of Service page // Protected view pages - require authentication .requestMatchers("/activities", "/activities/upload").authenticated() diff --git a/src/main/java/org/operaton/fitpub/config/ThymeleafConfig.java b/src/main/java/net/javahippie/fitpub/config/ThymeleafConfig.java similarity index 92% rename from src/main/java/org/operaton/fitpub/config/ThymeleafConfig.java rename to src/main/java/net/javahippie/fitpub/config/ThymeleafConfig.java index ed5aceb..3efb4fd 100644 --- a/src/main/java/org/operaton/fitpub/config/ThymeleafConfig.java +++ b/src/main/java/net/javahippie/fitpub/config/ThymeleafConfig.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.config; +package net.javahippie.fitpub.config; import nz.net.ultraq.thymeleaf.layoutdialect.LayoutDialect; import org.springframework.context.annotation.Bean; diff --git a/src/main/java/org/operaton/fitpub/controller/ActivitiesViewController.java b/src/main/java/net/javahippie/fitpub/controller/ActivitiesViewController.java similarity index 96% rename from src/main/java/org/operaton/fitpub/controller/ActivitiesViewController.java rename to src/main/java/net/javahippie/fitpub/controller/ActivitiesViewController.java index e91d1db..359f652 100644 --- a/src/main/java/org/operaton/fitpub/controller/ActivitiesViewController.java +++ b/src/main/java/net/javahippie/fitpub/controller/ActivitiesViewController.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; diff --git a/src/main/java/org/operaton/fitpub/controller/ActivityController.java b/src/main/java/net/javahippie/fitpub/controller/ActivityController.java similarity index 95% rename from src/main/java/org/operaton/fitpub/controller/ActivityController.java rename to src/main/java/net/javahippie/fitpub/controller/ActivityController.java index c3c9378..9af77f8 100644 --- a/src/main/java/org/operaton/fitpub/controller/ActivityController.java +++ b/src/main/java/net/javahippie/fitpub/controller/ActivityController.java @@ -1,22 +1,23 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.dto.ActivityDTO; -import org.operaton.fitpub.model.dto.ActivityUpdateRequest; -import org.operaton.fitpub.model.dto.ActivityUploadRequest; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.PrivacyZone; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.service.ActivityFileService; -import org.operaton.fitpub.service.ActivityImageService; -import org.operaton.fitpub.service.ActivityPostProcessingService; -import org.operaton.fitpub.service.FederationService; -import org.operaton.fitpub.service.FitFileService; -import org.operaton.fitpub.service.PrivacyZoneService; -import org.operaton.fitpub.service.TrackPrivacyFilter; +import net.javahippie.fitpub.model.dto.ActivityDTO; +import net.javahippie.fitpub.model.dto.ActivityUpdateRequest; +import net.javahippie.fitpub.model.dto.ActivityUploadRequest; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.PrivacyZone; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.service.ActivityFileService; +import net.javahippie.fitpub.service.ActivityImageService; +import net.javahippie.fitpub.service.ActivityPostProcessingService; +import net.javahippie.fitpub.service.FederationService; +import net.javahippie.fitpub.service.WeatherService; +import net.javahippie.fitpub.service.FitFileService; +import net.javahippie.fitpub.service.PrivacyZoneService; +import net.javahippie.fitpub.service.TrackPrivacyFilter; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -46,7 +47,7 @@ public class ActivityController { private final ActivityPostProcessingService activityPostProcessingService; private final FederationService federationService; private final ActivityImageService activityImageService; - private final org.operaton.fitpub.service.WeatherService weatherService; + private final WeatherService weatherService; private final PrivacyZoneService privacyZoneService; private final TrackPrivacyFilter trackPrivacyFilter; @@ -250,7 +251,8 @@ public class ActivityController { userId, request.getTitle(), request.getDescription(), - request.getVisibility() + request.getVisibility(), + request.getRace() ); ActivityDTO dto = ActivityDTO.fromEntity(updated); diff --git a/src/main/java/org/operaton/fitpub/controller/ActivityPubController.java b/src/main/java/net/javahippie/fitpub/controller/ActivityPubController.java similarity index 94% rename from src/main/java/org/operaton/fitpub/controller/ActivityPubController.java rename to src/main/java/net/javahippie/fitpub/controller/ActivityPubController.java index cec42ae..8369cce 100644 --- a/src/main/java/org/operaton/fitpub/controller/ActivityPubController.java +++ b/src/main/java/net/javahippie/fitpub/controller/ActivityPubController.java @@ -1,15 +1,17 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.activitypub.Actor; -import org.operaton.fitpub.model.activitypub.OrderedCollection; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.service.ActivityImageService; -import org.operaton.fitpub.util.ActivityFormatter; +import net.javahippie.fitpub.model.activitypub.Actor; +import net.javahippie.fitpub.model.activitypub.OrderedCollection; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.FollowRepository; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.service.ActivityImageService; +import net.javahippie.fitpub.service.InboxProcessor; +import net.javahippie.fitpub.util.ActivityFormatter; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -33,8 +35,8 @@ public class ActivityPubController { private final UserRepository userRepository; private final ActivityRepository activityRepository; private final ActivityImageService activityImageService; - private final org.operaton.fitpub.service.InboxProcessor inboxProcessor; - private final org.operaton.fitpub.repository.FollowRepository followRepository; + private final InboxProcessor inboxProcessor; + private final FollowRepository followRepository; @Value("${fitpub.base-url}") private String baseUrl; diff --git a/src/main/java/org/operaton/fitpub/controller/AnalyticsController.java b/src/main/java/net/javahippie/fitpub/controller/AnalyticsController.java similarity index 93% rename from src/main/java/org/operaton/fitpub/controller/AnalyticsController.java rename to src/main/java/net/javahippie/fitpub/controller/AnalyticsController.java index c92790e..43b5793 100644 --- a/src/main/java/org/operaton/fitpub/controller/AnalyticsController.java +++ b/src/main/java/net/javahippie/fitpub/controller/AnalyticsController.java @@ -1,10 +1,19 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.entity.*; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.service.*; +import net.javahippie.fitpub.model.entity.Achievement; +import net.javahippie.fitpub.model.entity.ActivitySummary; +import net.javahippie.fitpub.model.entity.PersonalRecord; +import net.javahippie.fitpub.model.entity.TrainingLoad; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.service.AchievementService; +import net.javahippie.fitpub.service.ActivitySummaryService; +import net.javahippie.fitpub.service.PersonalRecordService; +import net.javahippie.fitpub.service.TrainingLoadService; +import net.javahippie.fitpub.model.entity.*; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.service.*; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.core.userdetails.UserDetails; diff --git a/src/main/java/org/operaton/fitpub/controller/AnalyticsViewController.java b/src/main/java/net/javahippie/fitpub/controller/AnalyticsViewController.java similarity index 96% rename from src/main/java/org/operaton/fitpub/controller/AnalyticsViewController.java rename to src/main/java/net/javahippie/fitpub/controller/AnalyticsViewController.java index c9f8264..defede6 100644 --- a/src/main/java/org/operaton/fitpub/controller/AnalyticsViewController.java +++ b/src/main/java/net/javahippie/fitpub/controller/AnalyticsViewController.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; diff --git a/src/main/java/org/operaton/fitpub/controller/AuthController.java b/src/main/java/net/javahippie/fitpub/controller/AuthController.java similarity index 96% rename from src/main/java/org/operaton/fitpub/controller/AuthController.java rename to src/main/java/net/javahippie/fitpub/controller/AuthController.java index a8ef4c1..f690d96 100644 --- a/src/main/java/org/operaton/fitpub/controller/AuthController.java +++ b/src/main/java/net/javahippie/fitpub/controller/AuthController.java @@ -1,14 +1,14 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.dto.AuthResponse; -import org.operaton.fitpub.model.dto.LoginRequest; -import org.operaton.fitpub.model.dto.RegisterRequest; -import org.operaton.fitpub.service.UserService; +import net.javahippie.fitpub.model.dto.AuthResponse; +import net.javahippie.fitpub.model.dto.LoginRequest; +import net.javahippie.fitpub.model.dto.RegisterRequest; +import net.javahippie.fitpub.service.UserService; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/src/main/java/org/operaton/fitpub/controller/AuthViewController.java b/src/main/java/net/javahippie/fitpub/controller/AuthViewController.java similarity index 93% rename from src/main/java/org/operaton/fitpub/controller/AuthViewController.java rename to src/main/java/net/javahippie/fitpub/controller/AuthViewController.java index 53b1130..b227e1b 100644 --- a/src/main/java/org/operaton/fitpub/controller/AuthViewController.java +++ b/src/main/java/net/javahippie/fitpub/controller/AuthViewController.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; diff --git a/src/main/java/org/operaton/fitpub/controller/BatchImportController.java b/src/main/java/net/javahippie/fitpub/controller/BatchImportController.java similarity index 96% rename from src/main/java/org/operaton/fitpub/controller/BatchImportController.java rename to src/main/java/net/javahippie/fitpub/controller/BatchImportController.java index b629c88..26f1bda 100644 --- a/src/main/java/org/operaton/fitpub/controller/BatchImportController.java +++ b/src/main/java/net/javahippie/fitpub/controller/BatchImportController.java @@ -1,14 +1,14 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.entity.BatchImportFileResult; -import org.operaton.fitpub.model.entity.BatchImportJob; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.BatchImportFileResultRepository; -import org.operaton.fitpub.repository.BatchImportJobRepository; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.service.BatchImportService; +import net.javahippie.fitpub.model.entity.BatchImportFileResult; +import net.javahippie.fitpub.model.entity.BatchImportJob; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.BatchImportFileResultRepository; +import net.javahippie.fitpub.repository.BatchImportJobRepository; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.service.BatchImportService; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/org/operaton/fitpub/controller/BatchImportViewController.java b/src/main/java/net/javahippie/fitpub/controller/BatchImportViewController.java similarity index 93% rename from src/main/java/org/operaton/fitpub/controller/BatchImportViewController.java rename to src/main/java/net/javahippie/fitpub/controller/BatchImportViewController.java index 41c8ab8..dd3d4f0 100644 --- a/src/main/java/org/operaton/fitpub/controller/BatchImportViewController.java +++ b/src/main/java/net/javahippie/fitpub/controller/BatchImportViewController.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; diff --git a/src/main/java/org/operaton/fitpub/controller/CommentController.java b/src/main/java/net/javahippie/fitpub/controller/CommentController.java similarity index 92% rename from src/main/java/org/operaton/fitpub/controller/CommentController.java rename to src/main/java/net/javahippie/fitpub/controller/CommentController.java index 979108d..b54d349 100644 --- a/src/main/java/org/operaton/fitpub/controller/CommentController.java +++ b/src/main/java/net/javahippie/fitpub/controller/CommentController.java @@ -1,18 +1,18 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.dto.CommentCreateRequest; -import org.operaton.fitpub.model.dto.CommentDTO; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.Comment; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.CommentRepository; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.service.FederationService; -import org.operaton.fitpub.service.NotificationService; +import net.javahippie.fitpub.model.dto.CommentCreateRequest; +import net.javahippie.fitpub.model.dto.CommentDTO; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.Comment; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.CommentRepository; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.service.FederationService; +import net.javahippie.fitpub.service.NotificationService; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; diff --git a/src/main/java/org/operaton/fitpub/controller/DebugController.java b/src/main/java/net/javahippie/fitpub/controller/DebugController.java similarity index 96% rename from src/main/java/org/operaton/fitpub/controller/DebugController.java rename to src/main/java/net/javahippie/fitpub/controller/DebugController.java index 4cc76e8..b11d03c 100644 --- a/src/main/java/org/operaton/fitpub/controller/DebugController.java +++ b/src/main/java/net/javahippie/fitpub/controller/DebugController.java @@ -1,9 +1,9 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.UserRepository; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.UserRepository; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; diff --git a/src/main/java/org/operaton/fitpub/controller/HeatmapController.java b/src/main/java/net/javahippie/fitpub/controller/HeatmapController.java similarity index 94% rename from src/main/java/org/operaton/fitpub/controller/HeatmapController.java rename to src/main/java/net/javahippie/fitpub/controller/HeatmapController.java index da5ce37..806a54f 100644 --- a/src/main/java/org/operaton/fitpub/controller/HeatmapController.java +++ b/src/main/java/net/javahippie/fitpub/controller/HeatmapController.java @@ -1,13 +1,13 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.dto.HeatmapDataDTO; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.model.entity.UserHeatmapGrid; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.service.HeatmapGridService; +import net.javahippie.fitpub.model.dto.HeatmapDataDTO; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.model.entity.UserHeatmapGrid; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.service.HeatmapGridService; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.core.userdetails.UserDetails; diff --git a/src/main/java/org/operaton/fitpub/controller/HomeController.java b/src/main/java/net/javahippie/fitpub/controller/HomeController.java similarity index 75% rename from src/main/java/org/operaton/fitpub/controller/HomeController.java rename to src/main/java/net/javahippie/fitpub/controller/HomeController.java index f94b0a1..5af9737 100644 --- a/src/main/java/org/operaton/fitpub/controller/HomeController.java +++ b/src/main/java/net/javahippie/fitpub/controller/HomeController.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @@ -18,4 +18,9 @@ public class HomeController { public String heatmap() { return "heatmap"; } + + @GetMapping("/terms") + public String terms() { + return "terms"; + } } diff --git a/src/main/java/org/operaton/fitpub/controller/LikeController.java b/src/main/java/net/javahippie/fitpub/controller/LikeController.java similarity index 91% rename from src/main/java/org/operaton/fitpub/controller/LikeController.java rename to src/main/java/net/javahippie/fitpub/controller/LikeController.java index 1fc4526..d28967b 100644 --- a/src/main/java/org/operaton/fitpub/controller/LikeController.java +++ b/src/main/java/net/javahippie/fitpub/controller/LikeController.java @@ -1,16 +1,16 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.dto.LikeDTO; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.Like; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.LikeRepository; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.service.FederationService; -import org.operaton.fitpub.service.NotificationService; +import net.javahippie.fitpub.model.dto.LikeDTO; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.Like; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.LikeRepository; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.service.FederationService; +import net.javahippie.fitpub.service.NotificationService; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -20,7 +20,6 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; -import java.time.Instant; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/src/main/java/org/operaton/fitpub/controller/NotificationController.java b/src/main/java/net/javahippie/fitpub/controller/NotificationController.java similarity index 94% rename from src/main/java/org/operaton/fitpub/controller/NotificationController.java rename to src/main/java/net/javahippie/fitpub/controller/NotificationController.java index feadc0f..bd28bf7 100644 --- a/src/main/java/org/operaton/fitpub/controller/NotificationController.java +++ b/src/main/java/net/javahippie/fitpub/controller/NotificationController.java @@ -1,12 +1,12 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.dto.NotificationDTO; -import org.operaton.fitpub.model.entity.Notification; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.service.NotificationService; +import net.javahippie.fitpub.model.dto.NotificationDTO; +import net.javahippie.fitpub.model.entity.Notification; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.service.NotificationService; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; diff --git a/src/main/java/org/operaton/fitpub/controller/NotificationsViewController.java b/src/main/java/net/javahippie/fitpub/controller/NotificationsViewController.java similarity index 88% rename from src/main/java/org/operaton/fitpub/controller/NotificationsViewController.java rename to src/main/java/net/javahippie/fitpub/controller/NotificationsViewController.java index 937515d..ff3784b 100644 --- a/src/main/java/org/operaton/fitpub/controller/NotificationsViewController.java +++ b/src/main/java/net/javahippie/fitpub/controller/NotificationsViewController.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; diff --git a/src/main/java/org/operaton/fitpub/controller/PrivacyZoneController.java b/src/main/java/net/javahippie/fitpub/controller/PrivacyZoneController.java similarity index 93% rename from src/main/java/org/operaton/fitpub/controller/PrivacyZoneController.java rename to src/main/java/net/javahippie/fitpub/controller/PrivacyZoneController.java index 92d285b..951661d 100644 --- a/src/main/java/org/operaton/fitpub/controller/PrivacyZoneController.java +++ b/src/main/java/net/javahippie/fitpub/controller/PrivacyZoneController.java @@ -1,15 +1,15 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.dto.CreatePrivacyZoneRequest; -import org.operaton.fitpub.model.dto.PrivacyZoneDTO; -import org.operaton.fitpub.model.dto.UpdatePrivacyZoneRequest; -import org.operaton.fitpub.model.entity.PrivacyZone; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.service.PrivacyZoneService; +import net.javahippie.fitpub.model.dto.CreatePrivacyZoneRequest; +import net.javahippie.fitpub.model.dto.PrivacyZoneDTO; +import net.javahippie.fitpub.model.dto.UpdatePrivacyZoneRequest; +import net.javahippie.fitpub.model.entity.PrivacyZone; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.service.PrivacyZoneService; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; diff --git a/src/main/java/org/operaton/fitpub/controller/ProfileViewController.java b/src/main/java/net/javahippie/fitpub/controller/ProfileViewController.java similarity index 98% rename from src/main/java/org/operaton/fitpub/controller/ProfileViewController.java rename to src/main/java/net/javahippie/fitpub/controller/ProfileViewController.java index ee0766d..d39ef1e 100644 --- a/src/main/java/org/operaton/fitpub/controller/ProfileViewController.java +++ b/src/main/java/net/javahippie/fitpub/controller/ProfileViewController.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; diff --git a/src/main/java/org/operaton/fitpub/controller/TimelineController.java b/src/main/java/net/javahippie/fitpub/controller/TimelineController.java similarity index 95% rename from src/main/java/org/operaton/fitpub/controller/TimelineController.java rename to src/main/java/net/javahippie/fitpub/controller/TimelineController.java index 4d1463d..d2820f8 100644 --- a/src/main/java/org/operaton/fitpub/controller/TimelineController.java +++ b/src/main/java/net/javahippie/fitpub/controller/TimelineController.java @@ -1,11 +1,11 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.dto.TimelineActivityDTO; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.service.TimelineService; +import net.javahippie.fitpub.model.dto.TimelineActivityDTO; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.service.TimelineService; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/org/operaton/fitpub/controller/TimelineViewController.java b/src/main/java/net/javahippie/fitpub/controller/TimelineViewController.java similarity index 96% rename from src/main/java/org/operaton/fitpub/controller/TimelineViewController.java rename to src/main/java/net/javahippie/fitpub/controller/TimelineViewController.java index a038856..ea441db 100644 --- a/src/main/java/org/operaton/fitpub/controller/TimelineViewController.java +++ b/src/main/java/net/javahippie/fitpub/controller/TimelineViewController.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; diff --git a/src/main/java/org/operaton/fitpub/controller/UserController.java b/src/main/java/net/javahippie/fitpub/controller/UserController.java similarity index 96% rename from src/main/java/org/operaton/fitpub/controller/UserController.java rename to src/main/java/net/javahippie/fitpub/controller/UserController.java index 4dfee4f..d0922fb 100644 --- a/src/main/java/org/operaton/fitpub/controller/UserController.java +++ b/src/main/java/net/javahippie/fitpub/controller/UserController.java @@ -1,19 +1,21 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.dto.AccountDeletionRequest; -import org.operaton.fitpub.model.dto.ActorDTO; -import org.operaton.fitpub.model.dto.UserDTO; -import org.operaton.fitpub.model.dto.UserUpdateRequest; -import org.operaton.fitpub.model.entity.Follow; -import org.operaton.fitpub.model.entity.RemoteActor; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.FollowRepository; -import org.operaton.fitpub.repository.RemoteActorRepository; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.service.UserService; +import net.javahippie.fitpub.model.dto.AccountDeletionRequest; +import net.javahippie.fitpub.model.dto.ActorDTO; +import net.javahippie.fitpub.model.dto.UserDTO; +import net.javahippie.fitpub.model.dto.UserUpdateRequest; +import net.javahippie.fitpub.model.entity.Follow; +import net.javahippie.fitpub.model.entity.RemoteActor; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.FollowRepository; +import net.javahippie.fitpub.repository.RemoteActorRepository; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.service.FederationService; +import net.javahippie.fitpub.service.WebFingerClient; +import net.javahippie.fitpub.service.UserService; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -42,8 +44,8 @@ public class UserController { private final UserRepository userRepository; private final FollowRepository followRepository; private final RemoteActorRepository remoteActorRepository; - private final org.operaton.fitpub.service.WebFingerClient webFingerClient; - private final org.operaton.fitpub.service.FederationService federationService; + private final WebFingerClient webFingerClient; + private final FederationService federationService; private final UserService userService; @Value("${fitpub.base-url}") diff --git a/src/main/java/org/operaton/fitpub/controller/WebFingerController.java b/src/main/java/net/javahippie/fitpub/controller/WebFingerController.java similarity index 93% rename from src/main/java/org/operaton/fitpub/controller/WebFingerController.java rename to src/main/java/net/javahippie/fitpub/controller/WebFingerController.java index beec57d..6a41955 100644 --- a/src/main/java/org/operaton/fitpub/controller/WebFingerController.java +++ b/src/main/java/net/javahippie/fitpub/controller/WebFingerController.java @@ -1,10 +1,10 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.activitypub.WebFingerResponse; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.UserRepository; +import net.javahippie.fitpub.model.activitypub.WebFingerResponse; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.UserRepository; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; diff --git a/src/main/java/org/operaton/fitpub/exception/FitFileProcessingException.java b/src/main/java/net/javahippie/fitpub/exception/FitFileProcessingException.java similarity index 88% rename from src/main/java/org/operaton/fitpub/exception/FitFileProcessingException.java rename to src/main/java/net/javahippie/fitpub/exception/FitFileProcessingException.java index e7891d3..635e28c 100644 --- a/src/main/java/org/operaton/fitpub/exception/FitFileProcessingException.java +++ b/src/main/java/net/javahippie/fitpub/exception/FitFileProcessingException.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.exception; +package net.javahippie.fitpub.exception; /** * Exception thrown when FIT file processing fails. diff --git a/src/main/java/org/operaton/fitpub/exception/GpxFileProcessingException.java b/src/main/java/net/javahippie/fitpub/exception/GpxFileProcessingException.java similarity index 90% rename from src/main/java/org/operaton/fitpub/exception/GpxFileProcessingException.java rename to src/main/java/net/javahippie/fitpub/exception/GpxFileProcessingException.java index 03d2253..8bf9c1a 100644 --- a/src/main/java/org/operaton/fitpub/exception/GpxFileProcessingException.java +++ b/src/main/java/net/javahippie/fitpub/exception/GpxFileProcessingException.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.exception; +package net.javahippie.fitpub.exception; /** * Base exception for GPX file processing errors. diff --git a/src/main/java/org/operaton/fitpub/exception/InvalidFitFileException.java b/src/main/java/net/javahippie/fitpub/exception/InvalidFitFileException.java similarity index 89% rename from src/main/java/org/operaton/fitpub/exception/InvalidFitFileException.java rename to src/main/java/net/javahippie/fitpub/exception/InvalidFitFileException.java index 82eb3e0..c7cb31e 100644 --- a/src/main/java/org/operaton/fitpub/exception/InvalidFitFileException.java +++ b/src/main/java/net/javahippie/fitpub/exception/InvalidFitFileException.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.exception; +package net.javahippie.fitpub.exception; /** * Exception thrown when a FIT file is invalid or corrupted. diff --git a/src/main/java/org/operaton/fitpub/exception/InvalidGpxFileException.java b/src/main/java/net/javahippie/fitpub/exception/InvalidGpxFileException.java similarity index 91% rename from src/main/java/org/operaton/fitpub/exception/InvalidGpxFileException.java rename to src/main/java/net/javahippie/fitpub/exception/InvalidGpxFileException.java index 2bf170f..bd48017 100644 --- a/src/main/java/org/operaton/fitpub/exception/InvalidGpxFileException.java +++ b/src/main/java/net/javahippie/fitpub/exception/InvalidGpxFileException.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.exception; +package net.javahippie.fitpub.exception; /** * Exception thrown when a GPX file fails validation. diff --git a/src/main/java/org/operaton/fitpub/exception/UnsupportedFileFormatException.java b/src/main/java/net/javahippie/fitpub/exception/UnsupportedFileFormatException.java similarity index 90% rename from src/main/java/org/operaton/fitpub/exception/UnsupportedFileFormatException.java rename to src/main/java/net/javahippie/fitpub/exception/UnsupportedFileFormatException.java index af35658..addbeb2 100644 --- a/src/main/java/org/operaton/fitpub/exception/UnsupportedFileFormatException.java +++ b/src/main/java/net/javahippie/fitpub/exception/UnsupportedFileFormatException.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.exception; +package net.javahippie.fitpub.exception; /** * Exception thrown when an uploaded file format is not supported. diff --git a/src/main/java/org/operaton/fitpub/model/activitypub/Actor.java b/src/main/java/net/javahippie/fitpub/model/activitypub/Actor.java similarity index 94% rename from src/main/java/org/operaton/fitpub/model/activitypub/Actor.java rename to src/main/java/net/javahippie/fitpub/model/activitypub/Actor.java index 2fc16fc..899153a 100644 --- a/src/main/java/org/operaton/fitpub/model/activitypub/Actor.java +++ b/src/main/java/net/javahippie/fitpub/model/activitypub/Actor.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.activitypub; +package net.javahippie.fitpub.model.activitypub; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; @@ -6,6 +6,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import net.javahippie.fitpub.model.entity.User; import java.util.List; @@ -41,7 +42,7 @@ public class Actor { /** * Creates an Actor from a User entity. */ - public static Actor fromUser(org.operaton.fitpub.model.entity.User user, String baseUrl) { + public static Actor fromUser(User user, String baseUrl) { String actorUri = user.getActorUri(baseUrl); return Actor.builder() diff --git a/src/main/java/org/operaton/fitpub/model/activitypub/OrderedCollection.java b/src/main/java/net/javahippie/fitpub/model/activitypub/OrderedCollection.java similarity index 96% rename from src/main/java/org/operaton/fitpub/model/activitypub/OrderedCollection.java rename to src/main/java/net/javahippie/fitpub/model/activitypub/OrderedCollection.java index f17376e..20609db 100644 --- a/src/main/java/org/operaton/fitpub/model/activitypub/OrderedCollection.java +++ b/src/main/java/net/javahippie/fitpub/model/activitypub/OrderedCollection.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.activitypub; +package net.javahippie.fitpub.model.activitypub; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/org/operaton/fitpub/model/activitypub/WebFingerLink.java b/src/main/java/net/javahippie/fitpub/model/activitypub/WebFingerLink.java similarity index 96% rename from src/main/java/org/operaton/fitpub/model/activitypub/WebFingerLink.java rename to src/main/java/net/javahippie/fitpub/model/activitypub/WebFingerLink.java index 1be155c..fbc2a05 100644 --- a/src/main/java/org/operaton/fitpub/model/activitypub/WebFingerLink.java +++ b/src/main/java/net/javahippie/fitpub/model/activitypub/WebFingerLink.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.activitypub; +package net.javahippie.fitpub.model.activitypub; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.AllArgsConstructor; diff --git a/src/main/java/org/operaton/fitpub/model/activitypub/WebFingerResource.java b/src/main/java/net/javahippie/fitpub/model/activitypub/WebFingerResource.java similarity index 96% rename from src/main/java/org/operaton/fitpub/model/activitypub/WebFingerResource.java rename to src/main/java/net/javahippie/fitpub/model/activitypub/WebFingerResource.java index 17468cf..0ec4ece 100644 --- a/src/main/java/org/operaton/fitpub/model/activitypub/WebFingerResource.java +++ b/src/main/java/net/javahippie/fitpub/model/activitypub/WebFingerResource.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.activitypub; +package net.javahippie.fitpub.model.activitypub; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.AllArgsConstructor; diff --git a/src/main/java/org/operaton/fitpub/model/activitypub/WebFingerResponse.java b/src/main/java/net/javahippie/fitpub/model/activitypub/WebFingerResponse.java similarity index 97% rename from src/main/java/org/operaton/fitpub/model/activitypub/WebFingerResponse.java rename to src/main/java/net/javahippie/fitpub/model/activitypub/WebFingerResponse.java index 352bf61..af71aa6 100644 --- a/src/main/java/org/operaton/fitpub/model/activitypub/WebFingerResponse.java +++ b/src/main/java/net/javahippie/fitpub/model/activitypub/WebFingerResponse.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.activitypub; +package net.javahippie.fitpub.model.activitypub; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.AllArgsConstructor; diff --git a/src/main/java/org/operaton/fitpub/model/dto/AccountDeletionRequest.java b/src/main/java/net/javahippie/fitpub/model/dto/AccountDeletionRequest.java similarity index 94% rename from src/main/java/org/operaton/fitpub/model/dto/AccountDeletionRequest.java rename to src/main/java/net/javahippie/fitpub/model/dto/AccountDeletionRequest.java index d90df74..577714f 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/AccountDeletionRequest.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/AccountDeletionRequest.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import jakarta.validation.constraints.NotBlank; import lombok.AllArgsConstructor; diff --git a/src/main/java/org/operaton/fitpub/model/dto/ActivityDTO.java b/src/main/java/net/javahippie/fitpub/model/dto/ActivityDTO.java similarity index 95% rename from src/main/java/org/operaton/fitpub/model/dto/ActivityDTO.java rename to src/main/java/net/javahippie/fitpub/model/dto/ActivityDTO.java index b2bd2b9..1b9f64d 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/ActivityDTO.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/ActivityDTO.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -6,15 +6,13 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.LineString; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.PrivacyZone; -import org.operaton.fitpub.service.TrackPrivacyFilter; -import org.operaton.fitpub.util.ActivityFormatter; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.PrivacyZone; +import net.javahippie.fitpub.service.TrackPrivacyFilter; +import net.javahippie.fitpub.util.ActivityFormatter; import java.math.BigDecimal; -import java.time.Duration; import java.time.LocalDateTime; import java.util.LinkedHashMap; import java.util.List; @@ -59,6 +57,9 @@ public class ActivityDTO { private String subSport; // SubSport field from FIT file (e.g., INDOOR_CYCLING, TREADMILL) private String indoorDetectionMethod; // How indoor flag was determined + // Race/competition flag + private Boolean race; // True if activity is a race/competition (uses total time for pace calculation) + // Social interaction counts (populated separately) private Long likesCount; private Long commentsCount; @@ -151,6 +152,9 @@ public class ActivityDTO { builder.subSport(activity.getSubSport()); builder.indoorDetectionMethod(activity.getIndoorDetectionMethod()); + // Race flag + builder.race(activity.getRace() != null ? activity.getRace() : false); + return builder.build(); } @@ -232,6 +236,7 @@ public class ActivityDTO { .indoor(activity.getIndoor() != null ? activity.getIndoor() : false) .subSport(activity.getSubSport()) .indoorDetectionMethod(activity.getIndoorDetectionMethod()) + .race(activity.getRace() != null ? activity.getRace() : false) .build(); } @@ -277,6 +282,9 @@ public class ActivityDTO { builder.subSport(activity.getSubSport()); builder.indoorDetectionMethod(activity.getIndoorDetectionMethod()); + // Race flag + builder.race(activity.getRace() != null ? activity.getRace() : false); + return builder.build(); } diff --git a/src/main/java/org/operaton/fitpub/model/dto/ActivityMetricsDTO.java b/src/main/java/net/javahippie/fitpub/model/dto/ActivityMetricsDTO.java similarity index 96% rename from src/main/java/org/operaton/fitpub/model/dto/ActivityMetricsDTO.java rename to src/main/java/net/javahippie/fitpub/model/dto/ActivityMetricsDTO.java index f3549ac..3ee0b22 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/ActivityMetricsDTO.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/ActivityMetricsDTO.java @@ -1,10 +1,10 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.operaton.fitpub.model.entity.ActivityMetrics; +import net.javahippie.fitpub.model.entity.ActivityMetrics; import java.math.BigDecimal; diff --git a/src/main/java/org/operaton/fitpub/model/dto/ActivityUpdateRequest.java b/src/main/java/net/javahippie/fitpub/model/dto/ActivityUpdateRequest.java similarity index 83% rename from src/main/java/org/operaton/fitpub/model/dto/ActivityUpdateRequest.java rename to src/main/java/net/javahippie/fitpub/model/dto/ActivityUpdateRequest.java index 6857fbb..6ca085a 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/ActivityUpdateRequest.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/ActivityUpdateRequest.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; @@ -6,7 +6,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.operaton.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.Activity; /** * Request DTO for updating activity metadata. @@ -26,4 +26,6 @@ public class ActivityUpdateRequest { @NotNull(message = "Visibility is required") private Activity.Visibility visibility; + + private Boolean race; // Race/competition flag } diff --git a/src/main/java/org/operaton/fitpub/model/dto/ActivityUploadRequest.java b/src/main/java/net/javahippie/fitpub/model/dto/ActivityUploadRequest.java similarity index 81% rename from src/main/java/org/operaton/fitpub/model/dto/ActivityUploadRequest.java rename to src/main/java/net/javahippie/fitpub/model/dto/ActivityUploadRequest.java index b9be2d4..e271d52 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/ActivityUploadRequest.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/ActivityUploadRequest.java @@ -1,12 +1,11 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; -import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.operaton.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.Activity; /** * Request DTO for uploading a new activity. diff --git a/src/main/java/org/operaton/fitpub/model/dto/ActorDTO.java b/src/main/java/net/javahippie/fitpub/model/dto/ActorDTO.java similarity index 95% rename from src/main/java/org/operaton/fitpub/model/dto/ActorDTO.java rename to src/main/java/net/javahippie/fitpub/model/dto/ActorDTO.java index dbee820..aaf0650 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/ActorDTO.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/ActorDTO.java @@ -1,11 +1,11 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.operaton.fitpub.model.entity.RemoteActor; -import org.operaton.fitpub.model.entity.User; +import net.javahippie.fitpub.model.entity.RemoteActor; +import net.javahippie.fitpub.model.entity.User; import java.time.Instant; diff --git a/src/main/java/org/operaton/fitpub/model/dto/AuthResponse.java b/src/main/java/net/javahippie/fitpub/model/dto/AuthResponse.java similarity index 91% rename from src/main/java/org/operaton/fitpub/model/dto/AuthResponse.java rename to src/main/java/net/javahippie/fitpub/model/dto/AuthResponse.java index 94486bb..d0a6681 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/AuthResponse.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/AuthResponse.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/main/java/org/operaton/fitpub/model/dto/CommentCreateRequest.java b/src/main/java/net/javahippie/fitpub/model/dto/CommentCreateRequest.java similarity index 92% rename from src/main/java/org/operaton/fitpub/model/dto/CommentCreateRequest.java rename to src/main/java/net/javahippie/fitpub/model/dto/CommentCreateRequest.java index 2ff0bfa..4b16635 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/CommentCreateRequest.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/CommentCreateRequest.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; diff --git a/src/main/java/org/operaton/fitpub/model/dto/CommentDTO.java b/src/main/java/net/javahippie/fitpub/model/dto/CommentDTO.java similarity index 95% rename from src/main/java/org/operaton/fitpub/model/dto/CommentDTO.java rename to src/main/java/net/javahippie/fitpub/model/dto/CommentDTO.java index 44c9963..72151c9 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/CommentDTO.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/CommentDTO.java @@ -1,10 +1,10 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.operaton.fitpub.model.entity.Comment; +import net.javahippie.fitpub.model.entity.Comment; import java.time.LocalDateTime; import java.util.UUID; diff --git a/src/main/java/org/operaton/fitpub/model/dto/CreatePrivacyZoneRequest.java b/src/main/java/net/javahippie/fitpub/model/dto/CreatePrivacyZoneRequest.java similarity index 96% rename from src/main/java/org/operaton/fitpub/model/dto/CreatePrivacyZoneRequest.java rename to src/main/java/net/javahippie/fitpub/model/dto/CreatePrivacyZoneRequest.java index 5b27bca..6947999 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/CreatePrivacyZoneRequest.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/CreatePrivacyZoneRequest.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import jakarta.validation.constraints.*; import lombok.AllArgsConstructor; diff --git a/src/main/java/org/operaton/fitpub/model/dto/HeatmapDataDTO.java b/src/main/java/net/javahippie/fitpub/model/dto/HeatmapDataDTO.java similarity index 96% rename from src/main/java/org/operaton/fitpub/model/dto/HeatmapDataDTO.java rename to src/main/java/net/javahippie/fitpub/model/dto/HeatmapDataDTO.java index 370f3e6..2178cf3 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/HeatmapDataDTO.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/HeatmapDataDTO.java @@ -1,10 +1,10 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.operaton.fitpub.model.entity.UserHeatmapGrid; +import net.javahippie.fitpub.model.entity.UserHeatmapGrid; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/operaton/fitpub/model/dto/LikeDTO.java b/src/main/java/net/javahippie/fitpub/model/dto/LikeDTO.java similarity index 93% rename from src/main/java/org/operaton/fitpub/model/dto/LikeDTO.java rename to src/main/java/net/javahippie/fitpub/model/dto/LikeDTO.java index 704ec74..7e0eee8 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/LikeDTO.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/LikeDTO.java @@ -1,10 +1,10 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.operaton.fitpub.model.entity.Like; +import net.javahippie.fitpub.model.entity.Like; import java.time.LocalDateTime; import java.util.UUID; diff --git a/src/main/java/org/operaton/fitpub/model/dto/LoginRequest.java b/src/main/java/net/javahippie/fitpub/model/dto/LoginRequest.java similarity index 91% rename from src/main/java/org/operaton/fitpub/model/dto/LoginRequest.java rename to src/main/java/net/javahippie/fitpub/model/dto/LoginRequest.java index f7ebb3c..34ed453 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/LoginRequest.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/LoginRequest.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import jakarta.validation.constraints.NotBlank; import lombok.AllArgsConstructor; diff --git a/src/main/java/org/operaton/fitpub/model/dto/NotificationDTO.java b/src/main/java/net/javahippie/fitpub/model/dto/NotificationDTO.java similarity index 94% rename from src/main/java/org/operaton/fitpub/model/dto/NotificationDTO.java rename to src/main/java/net/javahippie/fitpub/model/dto/NotificationDTO.java index 910dc8f..3b173da 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/NotificationDTO.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/NotificationDTO.java @@ -1,10 +1,10 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.operaton.fitpub.model.entity.Notification; +import net.javahippie.fitpub.model.entity.Notification; import java.time.LocalDateTime; import java.util.UUID; diff --git a/src/main/java/org/operaton/fitpub/model/dto/PrivacyZoneDTO.java b/src/main/java/net/javahippie/fitpub/model/dto/PrivacyZoneDTO.java similarity index 93% rename from src/main/java/org/operaton/fitpub/model/dto/PrivacyZoneDTO.java rename to src/main/java/net/javahippie/fitpub/model/dto/PrivacyZoneDTO.java index 2571867..ab651f1 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/PrivacyZoneDTO.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/PrivacyZoneDTO.java @@ -1,10 +1,10 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.operaton.fitpub.model.entity.PrivacyZone; +import net.javahippie.fitpub.model.entity.PrivacyZone; import java.time.LocalDateTime; import java.util.UUID; diff --git a/src/main/java/org/operaton/fitpub/model/dto/RegisterRequest.java b/src/main/java/net/javahippie/fitpub/model/dto/RegisterRequest.java similarity index 97% rename from src/main/java/org/operaton/fitpub/model/dto/RegisterRequest.java rename to src/main/java/net/javahippie/fitpub/model/dto/RegisterRequest.java index 6523256..87a19d8 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/RegisterRequest.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/RegisterRequest.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/org/operaton/fitpub/model/dto/TimelineActivityDTO.java b/src/main/java/net/javahippie/fitpub/model/dto/TimelineActivityDTO.java similarity index 93% rename from src/main/java/org/operaton/fitpub/model/dto/TimelineActivityDTO.java rename to src/main/java/net/javahippie/fitpub/model/dto/TimelineActivityDTO.java index 48b7de7..89556a1 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/TimelineActivityDTO.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/TimelineActivityDTO.java @@ -1,13 +1,14 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.RemoteActivity; -import org.operaton.fitpub.model.entity.RemoteActor; +import net.javahippie.fitpub.model.entity.ActivityMetrics; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.RemoteActivity; +import net.javahippie.fitpub.model.entity.RemoteActor; import java.time.LocalDateTime; import java.time.ZoneId; @@ -63,6 +64,9 @@ public class TimelineActivityDTO { private String subSport; // SubSport field from FIT file (e.g., INDOOR_CYCLING, TREADMILL) private String indoorDetectionMethod; // How indoor flag was determined + // Race/competition flag + private Boolean race; // True if activity is a race/competition + // Metrics summary private ActivityMetricsSummary metrics; @@ -93,6 +97,7 @@ public class TimelineActivityDTO { .indoor(activity.getIndoor() != null ? activity.getIndoor() : false) .subSport(activity.getSubSport()) .indoorDetectionMethod(activity.getIndoorDetectionMethod()) + .race(activity.getRace() != null ? activity.getRace() : false) .metrics(activity.getMetrics() != null ? ActivityMetricsSummary.fromMetrics(activity.getMetrics()) : null) .build(); } @@ -155,7 +160,7 @@ public class TimelineActivityDTO { private Long movingTimeSeconds; private Long stoppedTimeSeconds; - public static ActivityMetricsSummary fromMetrics(org.operaton.fitpub.model.entity.ActivityMetrics metrics) { + public static ActivityMetricsSummary fromMetrics(ActivityMetrics metrics) { return ActivityMetricsSummary.builder() .averageHeartRate(metrics.getAverageHeartRate()) .maxHeartRate(metrics.getMaxHeartRate()) diff --git a/src/main/java/org/operaton/fitpub/model/dto/UpdatePrivacyZoneRequest.java b/src/main/java/net/javahippie/fitpub/model/dto/UpdatePrivacyZoneRequest.java similarity index 97% rename from src/main/java/org/operaton/fitpub/model/dto/UpdatePrivacyZoneRequest.java rename to src/main/java/net/javahippie/fitpub/model/dto/UpdatePrivacyZoneRequest.java index babc611..7e6b573 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/UpdatePrivacyZoneRequest.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/UpdatePrivacyZoneRequest.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import jakarta.validation.constraints.*; import lombok.AllArgsConstructor; diff --git a/src/main/java/org/operaton/fitpub/model/dto/UserDTO.java b/src/main/java/net/javahippie/fitpub/model/dto/UserDTO.java similarity index 96% rename from src/main/java/org/operaton/fitpub/model/dto/UserDTO.java rename to src/main/java/net/javahippie/fitpub/model/dto/UserDTO.java index 1527dd0..fc08a61 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/UserDTO.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/UserDTO.java @@ -1,10 +1,10 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.operaton.fitpub.model.entity.User; +import net.javahippie.fitpub.model.entity.User; import java.time.LocalDateTime; import java.util.UUID; diff --git a/src/main/java/org/operaton/fitpub/model/dto/UserUpdateRequest.java b/src/main/java/net/javahippie/fitpub/model/dto/UserUpdateRequest.java similarity index 96% rename from src/main/java/org/operaton/fitpub/model/dto/UserUpdateRequest.java rename to src/main/java/net/javahippie/fitpub/model/dto/UserUpdateRequest.java index 1bc59ac..8f4c812 100644 --- a/src/main/java/org/operaton/fitpub/model/dto/UserUpdateRequest.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/UserUpdateRequest.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.dto; +package net.javahippie.fitpub.model.dto; import jakarta.validation.constraints.Max; import jakarta.validation.constraints.Min; diff --git a/src/main/java/org/operaton/fitpub/model/entity/Achievement.java b/src/main/java/net/javahippie/fitpub/model/entity/Achievement.java similarity index 98% rename from src/main/java/org/operaton/fitpub/model/entity/Achievement.java rename to src/main/java/net/javahippie/fitpub/model/entity/Achievement.java index ad100ba..aa65050 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/Achievement.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/Achievement.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/org/operaton/fitpub/model/entity/Activity.java b/src/main/java/net/javahippie/fitpub/model/entity/Activity.java similarity index 95% rename from src/main/java/org/operaton/fitpub/model/entity/Activity.java rename to src/main/java/net/javahippie/fitpub/model/entity/Activity.java index 0bae148..af302b9 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/Activity.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/Activity.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import io.hypersistence.utils.hibernate.type.json.JsonBinaryType; import jakarta.persistence.*; @@ -130,6 +130,14 @@ public class Activity { @Column(name = "indoor_detection_method", length = 20) private String indoorDetectionMethod; + /** + * Indicates if this is a race/competition activity. + * Race activities use total time for pace calculation instead of moving time. + */ + @Column(name = "race", nullable = false) + @Builder.Default + private Boolean race = false; + @OneToOne(mappedBy = "activity", cascade = CascadeType.ALL, orphanRemoval = true) private ActivityMetrics metrics; diff --git a/src/main/java/org/operaton/fitpub/model/entity/ActivityMetrics.java b/src/main/java/net/javahippie/fitpub/model/entity/ActivityMetrics.java similarity index 98% rename from src/main/java/org/operaton/fitpub/model/entity/ActivityMetrics.java rename to src/main/java/net/javahippie/fitpub/model/entity/ActivityMetrics.java index 99a1e5f..e9fc7e6 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/ActivityMetrics.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/ActivityMetrics.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/org/operaton/fitpub/model/entity/ActivitySummary.java b/src/main/java/net/javahippie/fitpub/model/entity/ActivitySummary.java similarity index 98% rename from src/main/java/org/operaton/fitpub/model/entity/ActivitySummary.java rename to src/main/java/net/javahippie/fitpub/model/entity/ActivitySummary.java index 3fa2e64..8cfd726 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/ActivitySummary.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/ActivitySummary.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/org/operaton/fitpub/model/entity/BatchImportFileResult.java b/src/main/java/net/javahippie/fitpub/model/entity/BatchImportFileResult.java similarity index 98% rename from src/main/java/org/operaton/fitpub/model/entity/BatchImportFileResult.java rename to src/main/java/net/javahippie/fitpub/model/entity/BatchImportFileResult.java index 9819c4a..5e009b9 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/BatchImportFileResult.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/BatchImportFileResult.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/org/operaton/fitpub/model/entity/BatchImportJob.java b/src/main/java/net/javahippie/fitpub/model/entity/BatchImportJob.java similarity index 99% rename from src/main/java/org/operaton/fitpub/model/entity/BatchImportJob.java rename to src/main/java/net/javahippie/fitpub/model/entity/BatchImportJob.java index 2564a9a..4767e08 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/BatchImportJob.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/BatchImportJob.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/org/operaton/fitpub/model/entity/Comment.java b/src/main/java/net/javahippie/fitpub/model/entity/Comment.java similarity index 98% rename from src/main/java/org/operaton/fitpub/model/entity/Comment.java rename to src/main/java/net/javahippie/fitpub/model/entity/Comment.java index ddceee9..67b7c12 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/Comment.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/Comment.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/org/operaton/fitpub/model/entity/Follow.java b/src/main/java/net/javahippie/fitpub/model/entity/Follow.java similarity index 98% rename from src/main/java/org/operaton/fitpub/model/entity/Follow.java rename to src/main/java/net/javahippie/fitpub/model/entity/Follow.java index 5c6c06c..871e60d 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/Follow.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/Follow.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import jakarta.persistence.*; import lombok.AllArgsConstructor; diff --git a/src/main/java/org/operaton/fitpub/model/entity/Like.java b/src/main/java/net/javahippie/fitpub/model/entity/Like.java similarity index 98% rename from src/main/java/org/operaton/fitpub/model/entity/Like.java rename to src/main/java/net/javahippie/fitpub/model/entity/Like.java index 224a2f5..212500f 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/Like.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/Like.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/org/operaton/fitpub/model/entity/Notification.java b/src/main/java/net/javahippie/fitpub/model/entity/Notification.java similarity index 98% rename from src/main/java/org/operaton/fitpub/model/entity/Notification.java rename to src/main/java/net/javahippie/fitpub/model/entity/Notification.java index 9dfd122..0ddc61b 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/Notification.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/Notification.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import jakarta.persistence.*; import lombok.AllArgsConstructor; diff --git a/src/main/java/org/operaton/fitpub/model/entity/PersonalRecord.java b/src/main/java/net/javahippie/fitpub/model/entity/PersonalRecord.java similarity index 98% rename from src/main/java/org/operaton/fitpub/model/entity/PersonalRecord.java rename to src/main/java/net/javahippie/fitpub/model/entity/PersonalRecord.java index b8341f5..5071c97 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/PersonalRecord.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/PersonalRecord.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/org/operaton/fitpub/model/entity/PrivacyZone.java b/src/main/java/net/javahippie/fitpub/model/entity/PrivacyZone.java similarity index 97% rename from src/main/java/org/operaton/fitpub/model/entity/PrivacyZone.java rename to src/main/java/net/javahippie/fitpub/model/entity/PrivacyZone.java index c751e1b..3ee9f53 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/PrivacyZone.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/PrivacyZone.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/org/operaton/fitpub/model/entity/RemoteActivity.java b/src/main/java/net/javahippie/fitpub/model/entity/RemoteActivity.java similarity index 99% rename from src/main/java/org/operaton/fitpub/model/entity/RemoteActivity.java rename to src/main/java/net/javahippie/fitpub/model/entity/RemoteActivity.java index e91dc96..1fd8105 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/RemoteActivity.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/RemoteActivity.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import io.hypersistence.utils.hibernate.type.json.JsonBinaryType; import jakarta.persistence.*; diff --git a/src/main/java/org/operaton/fitpub/model/entity/RemoteActor.java b/src/main/java/net/javahippie/fitpub/model/entity/RemoteActor.java similarity index 98% rename from src/main/java/org/operaton/fitpub/model/entity/RemoteActor.java rename to src/main/java/net/javahippie/fitpub/model/entity/RemoteActor.java index 1a425ed..1773f25 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/RemoteActor.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/RemoteActor.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import jakarta.persistence.*; import lombok.AllArgsConstructor; diff --git a/src/main/java/org/operaton/fitpub/model/entity/TrainingLoad.java b/src/main/java/net/javahippie/fitpub/model/entity/TrainingLoad.java similarity index 98% rename from src/main/java/org/operaton/fitpub/model/entity/TrainingLoad.java rename to src/main/java/net/javahippie/fitpub/model/entity/TrainingLoad.java index b99dc2b..647d71d 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/TrainingLoad.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/TrainingLoad.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/org/operaton/fitpub/model/entity/User.java b/src/main/java/net/javahippie/fitpub/model/entity/User.java similarity index 98% rename from src/main/java/org/operaton/fitpub/model/entity/User.java rename to src/main/java/net/javahippie/fitpub/model/entity/User.java index df96b50..9efb1f8 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/User.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/User.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/org/operaton/fitpub/model/entity/UserHeatmapGrid.java b/src/main/java/net/javahippie/fitpub/model/entity/UserHeatmapGrid.java similarity index 97% rename from src/main/java/org/operaton/fitpub/model/entity/UserHeatmapGrid.java rename to src/main/java/net/javahippie/fitpub/model/entity/UserHeatmapGrid.java index c8906ba..ce2330e 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/UserHeatmapGrid.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/UserHeatmapGrid.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/org/operaton/fitpub/model/entity/WeatherData.java b/src/main/java/net/javahippie/fitpub/model/entity/WeatherData.java similarity index 98% rename from src/main/java/org/operaton/fitpub/model/entity/WeatherData.java rename to src/main/java/net/javahippie/fitpub/model/entity/WeatherData.java index 5267572..7824b28 100644 --- a/src/main/java/org/operaton/fitpub/model/entity/WeatherData.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/WeatherData.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.model.entity; +package net.javahippie.fitpub.model.entity; import jakarta.persistence.*; import lombok.AllArgsConstructor; diff --git a/src/main/java/org/operaton/fitpub/repository/AchievementRepository.java b/src/main/java/net/javahippie/fitpub/repository/AchievementRepository.java similarity index 95% rename from src/main/java/org/operaton/fitpub/repository/AchievementRepository.java rename to src/main/java/net/javahippie/fitpub/repository/AchievementRepository.java index b9f5bdb..d06471b 100644 --- a/src/main/java/org/operaton/fitpub/repository/AchievementRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/AchievementRepository.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.Achievement; +import net.javahippie.fitpub.model.entity.Achievement; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; diff --git a/src/main/java/org/operaton/fitpub/repository/ActivityMetricsRepository.java b/src/main/java/net/javahippie/fitpub/repository/ActivityMetricsRepository.java similarity index 90% rename from src/main/java/org/operaton/fitpub/repository/ActivityMetricsRepository.java rename to src/main/java/net/javahippie/fitpub/repository/ActivityMetricsRepository.java index 9315766..21b6291 100644 --- a/src/main/java/org/operaton/fitpub/repository/ActivityMetricsRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/ActivityMetricsRepository.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.ActivityMetrics; +import net.javahippie.fitpub.model.entity.ActivityMetrics; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; diff --git a/src/main/java/org/operaton/fitpub/repository/ActivityRepository.java b/src/main/java/net/javahippie/fitpub/repository/ActivityRepository.java similarity index 99% rename from src/main/java/org/operaton/fitpub/repository/ActivityRepository.java rename to src/main/java/net/javahippie/fitpub/repository/ActivityRepository.java index 0991b91..7119c0c 100644 --- a/src/main/java/org/operaton/fitpub/repository/ActivityRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/ActivityRepository.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.Activity; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/org/operaton/fitpub/repository/ActivitySummaryRepository.java b/src/main/java/net/javahippie/fitpub/repository/ActivitySummaryRepository.java similarity index 95% rename from src/main/java/org/operaton/fitpub/repository/ActivitySummaryRepository.java rename to src/main/java/net/javahippie/fitpub/repository/ActivitySummaryRepository.java index c0be1e4..779988f 100644 --- a/src/main/java/org/operaton/fitpub/repository/ActivitySummaryRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/ActivitySummaryRepository.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.ActivitySummary; +import net.javahippie.fitpub.model.entity.ActivitySummary; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; diff --git a/src/main/java/org/operaton/fitpub/repository/BatchImportFileResultRepository.java b/src/main/java/net/javahippie/fitpub/repository/BatchImportFileResultRepository.java similarity index 94% rename from src/main/java/org/operaton/fitpub/repository/BatchImportFileResultRepository.java rename to src/main/java/net/javahippie/fitpub/repository/BatchImportFileResultRepository.java index 1256c72..861614d 100644 --- a/src/main/java/org/operaton/fitpub/repository/BatchImportFileResultRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/BatchImportFileResultRepository.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.BatchImportFileResult; +import net.javahippie.fitpub.model.entity.BatchImportFileResult; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/org/operaton/fitpub/repository/BatchImportJobRepository.java b/src/main/java/net/javahippie/fitpub/repository/BatchImportJobRepository.java similarity index 96% rename from src/main/java/org/operaton/fitpub/repository/BatchImportJobRepository.java rename to src/main/java/net/javahippie/fitpub/repository/BatchImportJobRepository.java index 890e918..fb4dce6 100644 --- a/src/main/java/org/operaton/fitpub/repository/BatchImportJobRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/BatchImportJobRepository.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.BatchImportJob; +import net.javahippie.fitpub.model.entity.BatchImportJob; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/org/operaton/fitpub/repository/CommentRepository.java b/src/main/java/net/javahippie/fitpub/repository/CommentRepository.java similarity index 95% rename from src/main/java/org/operaton/fitpub/repository/CommentRepository.java rename to src/main/java/net/javahippie/fitpub/repository/CommentRepository.java index b7d91b9..fd3e90c 100644 --- a/src/main/java/org/operaton/fitpub/repository/CommentRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/CommentRepository.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.Comment; +import net.javahippie.fitpub.model.entity.Comment; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/org/operaton/fitpub/repository/FollowRepository.java b/src/main/java/net/javahippie/fitpub/repository/FollowRepository.java similarity index 97% rename from src/main/java/org/operaton/fitpub/repository/FollowRepository.java rename to src/main/java/net/javahippie/fitpub/repository/FollowRepository.java index fcf5f7c..7f2f335 100644 --- a/src/main/java/org/operaton/fitpub/repository/FollowRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/FollowRepository.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.Follow; +import net.javahippie.fitpub.model.entity.Follow; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; diff --git a/src/main/java/org/operaton/fitpub/repository/LikeRepository.java b/src/main/java/net/javahippie/fitpub/repository/LikeRepository.java similarity index 93% rename from src/main/java/org/operaton/fitpub/repository/LikeRepository.java rename to src/main/java/net/javahippie/fitpub/repository/LikeRepository.java index 9a5d3e0..ba25fdd 100644 --- a/src/main/java/org/operaton/fitpub/repository/LikeRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/LikeRepository.java @@ -1,10 +1,8 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.Like; +import net.javahippie.fitpub.model.entity.Like; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/org/operaton/fitpub/repository/NotificationRepository.java b/src/main/java/net/javahippie/fitpub/repository/NotificationRepository.java similarity index 96% rename from src/main/java/org/operaton/fitpub/repository/NotificationRepository.java rename to src/main/java/net/javahippie/fitpub/repository/NotificationRepository.java index a9c358f..5fa16c6 100644 --- a/src/main/java/org/operaton/fitpub/repository/NotificationRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/NotificationRepository.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.Notification; +import net.javahippie.fitpub.model.entity.Notification; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/org/operaton/fitpub/repository/PersonalRecordRepository.java b/src/main/java/net/javahippie/fitpub/repository/PersonalRecordRepository.java similarity index 95% rename from src/main/java/org/operaton/fitpub/repository/PersonalRecordRepository.java rename to src/main/java/net/javahippie/fitpub/repository/PersonalRecordRepository.java index 1da54dc..a4faf4b 100644 --- a/src/main/java/org/operaton/fitpub/repository/PersonalRecordRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/PersonalRecordRepository.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.PersonalRecord; +import net.javahippie.fitpub.model.entity.PersonalRecord; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; diff --git a/src/main/java/org/operaton/fitpub/repository/PrivacyZoneRepository.java b/src/main/java/net/javahippie/fitpub/repository/PrivacyZoneRepository.java similarity index 96% rename from src/main/java/org/operaton/fitpub/repository/PrivacyZoneRepository.java rename to src/main/java/net/javahippie/fitpub/repository/PrivacyZoneRepository.java index 95ce0d1..2aaea30 100644 --- a/src/main/java/org/operaton/fitpub/repository/PrivacyZoneRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/PrivacyZoneRepository.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.PrivacyZone; +import net.javahippie.fitpub.model.entity.PrivacyZone; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; diff --git a/src/main/java/org/operaton/fitpub/repository/RemoteActivityRepository.java b/src/main/java/net/javahippie/fitpub/repository/RemoteActivityRepository.java similarity index 97% rename from src/main/java/org/operaton/fitpub/repository/RemoteActivityRepository.java rename to src/main/java/net/javahippie/fitpub/repository/RemoteActivityRepository.java index 7d0a505..6d52157 100644 --- a/src/main/java/org/operaton/fitpub/repository/RemoteActivityRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/RemoteActivityRepository.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.RemoteActivity; +import net.javahippie.fitpub.model.entity.RemoteActivity; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/org/operaton/fitpub/repository/RemoteActorRepository.java b/src/main/java/net/javahippie/fitpub/repository/RemoteActorRepository.java similarity index 88% rename from src/main/java/org/operaton/fitpub/repository/RemoteActorRepository.java rename to src/main/java/net/javahippie/fitpub/repository/RemoteActorRepository.java index df97195..872c71c 100644 --- a/src/main/java/org/operaton/fitpub/repository/RemoteActorRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/RemoteActorRepository.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.RemoteActor; +import net.javahippie.fitpub.model.entity.RemoteActor; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/org/operaton/fitpub/repository/TrainingLoadRepository.java b/src/main/java/net/javahippie/fitpub/repository/TrainingLoadRepository.java similarity index 94% rename from src/main/java/org/operaton/fitpub/repository/TrainingLoadRepository.java rename to src/main/java/net/javahippie/fitpub/repository/TrainingLoadRepository.java index 2724da1..4926c13 100644 --- a/src/main/java/org/operaton/fitpub/repository/TrainingLoadRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/TrainingLoadRepository.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.TrainingLoad; +import net.javahippie.fitpub.model.entity.TrainingLoad; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; diff --git a/src/main/java/org/operaton/fitpub/repository/UserHeatmapGridRepository.java b/src/main/java/net/javahippie/fitpub/repository/UserHeatmapGridRepository.java similarity index 98% rename from src/main/java/org/operaton/fitpub/repository/UserHeatmapGridRepository.java rename to src/main/java/net/javahippie/fitpub/repository/UserHeatmapGridRepository.java index b0d95b9..ccb671a 100644 --- a/src/main/java/org/operaton/fitpub/repository/UserHeatmapGridRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/UserHeatmapGridRepository.java @@ -1,7 +1,7 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; import org.locationtech.jts.geom.Point; -import org.operaton.fitpub.model.entity.UserHeatmapGrid; +import net.javahippie.fitpub.model.entity.UserHeatmapGrid; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; diff --git a/src/main/java/org/operaton/fitpub/repository/UserRepository.java b/src/main/java/net/javahippie/fitpub/repository/UserRepository.java similarity index 96% rename from src/main/java/org/operaton/fitpub/repository/UserRepository.java rename to src/main/java/net/javahippie/fitpub/repository/UserRepository.java index cd937a3..6d16c28 100644 --- a/src/main/java/org/operaton/fitpub/repository/UserRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/UserRepository.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.User; +import net.javahippie.fitpub.model.entity.User; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; @@ -8,7 +8,6 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import java.util.List; import java.util.Optional; import java.util.UUID; diff --git a/src/main/java/org/operaton/fitpub/repository/WeatherDataRepository.java b/src/main/java/net/javahippie/fitpub/repository/WeatherDataRepository.java similarity index 90% rename from src/main/java/org/operaton/fitpub/repository/WeatherDataRepository.java rename to src/main/java/net/javahippie/fitpub/repository/WeatherDataRepository.java index 1a4fe52..581f4b0 100644 --- a/src/main/java/org/operaton/fitpub/repository/WeatherDataRepository.java +++ b/src/main/java/net/javahippie/fitpub/repository/WeatherDataRepository.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.repository; +package net.javahippie.fitpub.repository; -import org.operaton.fitpub.model.entity.WeatherData; +import net.javahippie.fitpub.model.entity.WeatherData; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/org/operaton/fitpub/scheduler/BatchImportCleanupScheduler.java b/src/main/java/net/javahippie/fitpub/scheduler/BatchImportCleanupScheduler.java similarity index 93% rename from src/main/java/org/operaton/fitpub/scheduler/BatchImportCleanupScheduler.java rename to src/main/java/net/javahippie/fitpub/scheduler/BatchImportCleanupScheduler.java index f01fe26..27be1fe 100644 --- a/src/main/java/org/operaton/fitpub/scheduler/BatchImportCleanupScheduler.java +++ b/src/main/java/net/javahippie/fitpub/scheduler/BatchImportCleanupScheduler.java @@ -1,8 +1,8 @@ -package org.operaton.fitpub.scheduler; +package net.javahippie.fitpub.scheduler; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.service.BatchImportService; +import net.javahippie.fitpub.service.BatchImportService; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; diff --git a/src/main/java/org/operaton/fitpub/security/CustomAuthenticationEntryPoint.java b/src/main/java/net/javahippie/fitpub/security/CustomAuthenticationEntryPoint.java similarity index 98% rename from src/main/java/org/operaton/fitpub/security/CustomAuthenticationEntryPoint.java rename to src/main/java/net/javahippie/fitpub/security/CustomAuthenticationEntryPoint.java index dd53495..18ae899 100644 --- a/src/main/java/org/operaton/fitpub/security/CustomAuthenticationEntryPoint.java +++ b/src/main/java/net/javahippie/fitpub/security/CustomAuthenticationEntryPoint.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.security; +package net.javahippie.fitpub.security; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; diff --git a/src/main/java/org/operaton/fitpub/security/HttpSignatureValidator.java b/src/main/java/net/javahippie/fitpub/security/HttpSignatureValidator.java similarity index 99% rename from src/main/java/org/operaton/fitpub/security/HttpSignatureValidator.java rename to src/main/java/net/javahippie/fitpub/security/HttpSignatureValidator.java index e2589c1..e8ea57d 100644 --- a/src/main/java/org/operaton/fitpub/security/HttpSignatureValidator.java +++ b/src/main/java/net/javahippie/fitpub/security/HttpSignatureValidator.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.security; +package net.javahippie.fitpub.security; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/org/operaton/fitpub/security/JwtAuthenticationFilter.java b/src/main/java/net/javahippie/fitpub/security/JwtAuthenticationFilter.java similarity index 98% rename from src/main/java/org/operaton/fitpub/security/JwtAuthenticationFilter.java rename to src/main/java/net/javahippie/fitpub/security/JwtAuthenticationFilter.java index 4d570f6..2c3b8b8 100644 --- a/src/main/java/org/operaton/fitpub/security/JwtAuthenticationFilter.java +++ b/src/main/java/net/javahippie/fitpub/security/JwtAuthenticationFilter.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.security; +package net.javahippie.fitpub.security; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; diff --git a/src/main/java/org/operaton/fitpub/security/JwtTokenProvider.java b/src/main/java/net/javahippie/fitpub/security/JwtTokenProvider.java similarity index 98% rename from src/main/java/org/operaton/fitpub/security/JwtTokenProvider.java rename to src/main/java/net/javahippie/fitpub/security/JwtTokenProvider.java index cf00bb1..a7f4416 100644 --- a/src/main/java/org/operaton/fitpub/security/JwtTokenProvider.java +++ b/src/main/java/net/javahippie/fitpub/security/JwtTokenProvider.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.security; +package net.javahippie.fitpub.security; import io.jsonwebtoken.*; import io.jsonwebtoken.security.Keys; diff --git a/src/main/java/org/operaton/fitpub/security/UserDetailsServiceImpl.java b/src/main/java/net/javahippie/fitpub/security/UserDetailsServiceImpl.java similarity index 93% rename from src/main/java/org/operaton/fitpub/security/UserDetailsServiceImpl.java rename to src/main/java/net/javahippie/fitpub/security/UserDetailsServiceImpl.java index 190ae66..7253ce3 100644 --- a/src/main/java/org/operaton/fitpub/security/UserDetailsServiceImpl.java +++ b/src/main/java/net/javahippie/fitpub/security/UserDetailsServiceImpl.java @@ -1,8 +1,8 @@ -package org.operaton.fitpub.security; +package net.javahippie.fitpub.security; import lombok.RequiredArgsConstructor; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.UserRepository; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.UserRepository; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; diff --git a/src/main/java/org/operaton/fitpub/service/AchievementService.java b/src/main/java/net/javahippie/fitpub/service/AchievementService.java similarity index 98% rename from src/main/java/org/operaton/fitpub/service/AchievementService.java rename to src/main/java/net/javahippie/fitpub/service/AchievementService.java index 1e13d05..d8bd46b 100644 --- a/src/main/java/org/operaton/fitpub/service/AchievementService.java +++ b/src/main/java/net/javahippie/fitpub/service/AchievementService.java @@ -1,11 +1,11 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.entity.Achievement; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.repository.AchievementRepository; -import org.operaton.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.model.entity.Achievement; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.repository.AchievementRepository; +import net.javahippie.fitpub.repository.ActivityRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/org/operaton/fitpub/service/ActivityFileService.java b/src/main/java/net/javahippie/fitpub/service/ActivityFileService.java similarity index 95% rename from src/main/java/org/operaton/fitpub/service/ActivityFileService.java rename to src/main/java/net/javahippie/fitpub/service/ActivityFileService.java index db4a25a..7b56536 100644 --- a/src/main/java/org/operaton/fitpub/service/ActivityFileService.java +++ b/src/main/java/net/javahippie/fitpub/service/ActivityFileService.java @@ -1,20 +1,27 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import net.javahippie.fitpub.util.ActivityFormatter; +import net.javahippie.fitpub.util.FitFileValidator; +import net.javahippie.fitpub.util.FitParser; +import net.javahippie.fitpub.util.GpxFileValidator; +import net.javahippie.fitpub.util.GpxParser; +import net.javahippie.fitpub.util.ParsedActivityData; +import net.javahippie.fitpub.util.TrackSimplifier; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.GeometryFactory; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.PrecisionModel; -import org.operaton.fitpub.exception.FitFileProcessingException; -import org.operaton.fitpub.exception.GpxFileProcessingException; -import org.operaton.fitpub.exception.UnsupportedFileFormatException; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.ActivityMetrics; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.util.*; +import net.javahippie.fitpub.exception.FitFileProcessingException; +import net.javahippie.fitpub.exception.GpxFileProcessingException; +import net.javahippie.fitpub.exception.UnsupportedFileFormatException; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.ActivityMetrics; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.util.*; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; diff --git a/src/main/java/org/operaton/fitpub/service/ActivityImageService.java b/src/main/java/net/javahippie/fitpub/service/ActivityImageService.java similarity index 99% rename from src/main/java/org/operaton/fitpub/service/ActivityImageService.java rename to src/main/java/net/javahippie/fitpub/service/ActivityImageService.java index e151fe4..3ab1f2c 100644 --- a/src/main/java/org/operaton/fitpub/service/ActivityImageService.java +++ b/src/main/java/net/javahippie/fitpub/service/ActivityImageService.java @@ -1,20 +1,18 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.locationtech.jts.geom.LineString; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.PrivacyZone; -import org.operaton.fitpub.util.ActivityFormatter; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.PrivacyZone; +import net.javahippie.fitpub.util.ActivityFormatter; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.imageio.ImageIO; import java.awt.*; -import java.awt.geom.Path2D; import java.awt.image.BufferedImage; import java.io.File; -import java.io.IOException; import java.util.List; import java.util.Map; import java.util.UUID; diff --git a/src/main/java/org/operaton/fitpub/service/ActivityPostProcessingService.java b/src/main/java/net/javahippie/fitpub/service/ActivityPostProcessingService.java similarity index 97% rename from src/main/java/org/operaton/fitpub/service/ActivityPostProcessingService.java rename to src/main/java/net/javahippie/fitpub/service/ActivityPostProcessingService.java index 2085230..0182f26 100644 --- a/src/main/java/org/operaton/fitpub/service/ActivityPostProcessingService.java +++ b/src/main/java/net/javahippie/fitpub/service/ActivityPostProcessingService.java @@ -1,13 +1,13 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import jakarta.persistence.EntityNotFoundException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.util.ActivityFormatter; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.util.ActivityFormatter; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; diff --git a/src/main/java/org/operaton/fitpub/service/ActivitySummaryService.java b/src/main/java/net/javahippie/fitpub/service/ActivitySummaryService.java similarity index 95% rename from src/main/java/org/operaton/fitpub/service/ActivitySummaryService.java rename to src/main/java/net/javahippie/fitpub/service/ActivitySummaryService.java index dec67b5..357bc8d 100644 --- a/src/main/java/org/operaton/fitpub/service/ActivitySummaryService.java +++ b/src/main/java/net/javahippie/fitpub/service/ActivitySummaryService.java @@ -1,13 +1,13 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.ActivitySummary; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.ActivitySummaryRepository; -import org.operaton.fitpub.repository.AchievementRepository; -import org.operaton.fitpub.repository.PersonalRecordRepository; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.ActivitySummary; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.ActivitySummaryRepository; +import net.javahippie.fitpub.repository.AchievementRepository; +import net.javahippie.fitpub.repository.PersonalRecordRepository; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/org/operaton/fitpub/service/BatchImportService.java b/src/main/java/net/javahippie/fitpub/service/BatchImportService.java similarity index 98% rename from src/main/java/org/operaton/fitpub/service/BatchImportService.java rename to src/main/java/net/javahippie/fitpub/service/BatchImportService.java index 46aaabc..1b66b08 100644 --- a/src/main/java/org/operaton/fitpub/service/BatchImportService.java +++ b/src/main/java/net/javahippie/fitpub/service/BatchImportService.java @@ -1,16 +1,15 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.BatchImportFileResult; -import org.operaton.fitpub.model.entity.BatchImportJob; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.BatchImportFileResultRepository; -import org.operaton.fitpub.repository.BatchImportJobRepository; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.util.ByteArrayMultipartFile; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.BatchImportFileResult; +import net.javahippie.fitpub.model.entity.BatchImportJob; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.BatchImportFileResultRepository; +import net.javahippie.fitpub.repository.BatchImportJobRepository; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.util.ByteArrayMultipartFile; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; diff --git a/src/main/java/org/operaton/fitpub/service/FederationService.java b/src/main/java/net/javahippie/fitpub/service/FederationService.java similarity index 98% rename from src/main/java/org/operaton/fitpub/service/FederationService.java rename to src/main/java/net/javahippie/fitpub/service/FederationService.java index 8c019fe..9829066 100644 --- a/src/main/java/org/operaton/fitpub/service/FederationService.java +++ b/src/main/java/net/javahippie/fitpub/service/FederationService.java @@ -1,15 +1,15 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.entity.Follow; -import org.operaton.fitpub.model.entity.RemoteActor; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.FollowRepository; -import org.operaton.fitpub.repository.RemoteActorRepository; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.security.HttpSignatureValidator; +import net.javahippie.fitpub.model.entity.Follow; +import net.javahippie.fitpub.model.entity.RemoteActor; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.FollowRepository; +import net.javahippie.fitpub.repository.RemoteActorRepository; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.security.HttpSignatureValidator; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; diff --git a/src/main/java/org/operaton/fitpub/service/FitFileService.java b/src/main/java/net/javahippie/fitpub/service/FitFileService.java similarity index 95% rename from src/main/java/org/operaton/fitpub/service/FitFileService.java rename to src/main/java/net/javahippie/fitpub/service/FitFileService.java index 97d9bf7..db95da2 100644 --- a/src/main/java/org/operaton/fitpub/service/FitFileService.java +++ b/src/main/java/net/javahippie/fitpub/service/FitFileService.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -8,16 +8,16 @@ import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.GeometryFactory; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.PrecisionModel; -import org.operaton.fitpub.exception.FitFileProcessingException; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.ActivityMetrics; -import org.operaton.fitpub.repository.ActivityMetricsRepository; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.util.ActivityFormatter; -import org.operaton.fitpub.util.FitFileValidator; -import org.operaton.fitpub.util.FitParser; -import org.operaton.fitpub.util.ParsedActivityData; -import org.operaton.fitpub.util.TrackSimplifier; +import net.javahippie.fitpub.exception.FitFileProcessingException; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.ActivityMetrics; +import net.javahippie.fitpub.repository.ActivityMetricsRepository; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.util.ActivityFormatter; +import net.javahippie.fitpub.util.FitFileValidator; +import net.javahippie.fitpub.util.FitParser; +import net.javahippie.fitpub.util.ParsedActivityData; +import net.javahippie.fitpub.util.TrackSimplifier; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -400,7 +400,7 @@ public class FitFileService { * @throws IllegalArgumentException if activity doesn't exist or user doesn't own it */ @Transactional - public Activity updateActivity(UUID activityId, UUID userId, String title, String description, Activity.Visibility visibility) { + public Activity updateActivity(UUID activityId, UUID userId, String title, String description, Activity.Visibility visibility, Boolean race) { // Fetch the existing activity within the transaction Activity existing = activityRepository.findByIdAndUserId(activityId, userId) .orElseThrow(() -> new IllegalArgumentException("Activity not found or user does not own it: " + activityId)); @@ -409,6 +409,7 @@ public class FitFileService { existing.setTitle(title); existing.setDescription(description); existing.setVisibility(visibility); + existing.setRace(race != null ? race : false); // Save will UPDATE because the entity is already managed by the persistence context return activityRepository.save(existing); diff --git a/src/main/java/org/operaton/fitpub/service/HeatmapGridService.java b/src/main/java/net/javahippie/fitpub/service/HeatmapGridService.java similarity index 96% rename from src/main/java/org/operaton/fitpub/service/HeatmapGridService.java rename to src/main/java/net/javahippie/fitpub/service/HeatmapGridService.java index ca3918d..2b7beb9 100644 --- a/src/main/java/org/operaton/fitpub/service/HeatmapGridService.java +++ b/src/main/java/net/javahippie/fitpub/service/HeatmapGridService.java @@ -1,19 +1,18 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.persistence.EntityManager; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.GeometryFactory; import org.locationtech.jts.geom.Point; import org.locationtech.jts.geom.PrecisionModel; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.model.entity.UserHeatmapGrid; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.UserHeatmapGridRepository; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.model.entity.UserHeatmapGrid; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.UserHeatmapGridRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/org/operaton/fitpub/service/InboxProcessor.java b/src/main/java/net/javahippie/fitpub/service/InboxProcessor.java similarity index 95% rename from src/main/java/org/operaton/fitpub/service/InboxProcessor.java rename to src/main/java/net/javahippie/fitpub/service/InboxProcessor.java index 0084449..c7a5edf 100644 --- a/src/main/java/org/operaton/fitpub/service/InboxProcessor.java +++ b/src/main/java/net/javahippie/fitpub/service/InboxProcessor.java @@ -1,18 +1,21 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.Comment; -import org.operaton.fitpub.model.entity.Follow; -import org.operaton.fitpub.model.entity.Like; -import org.operaton.fitpub.model.entity.RemoteActor; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.CommentRepository; -import org.operaton.fitpub.repository.FollowRepository; -import org.operaton.fitpub.repository.LikeRepository; -import org.operaton.fitpub.repository.UserRepository; +import net.javahippie.fitpub.model.entity.RemoteActivity; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.Comment; +import net.javahippie.fitpub.model.entity.Follow; +import net.javahippie.fitpub.model.entity.Like; +import net.javahippie.fitpub.model.entity.RemoteActor; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.RemoteActivityRepository; +import net.javahippie.fitpub.repository.RemoteActorRepository; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.CommentRepository; +import net.javahippie.fitpub.repository.FollowRepository; +import net.javahippie.fitpub.repository.LikeRepository; +import net.javahippie.fitpub.repository.UserRepository; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -36,8 +39,8 @@ public class InboxProcessor { private final LikeRepository likeRepository; private final CommentRepository commentRepository; private final NotificationService notificationService; - private final org.operaton.fitpub.repository.RemoteActivityRepository remoteActivityRepository; - private final org.operaton.fitpub.repository.RemoteActorRepository remoteActorRepository; + private final RemoteActivityRepository remoteActivityRepository; + private final RemoteActorRepository remoteActorRepository; @Value("${fitpub.base-url}") private String baseUrl; @@ -346,14 +349,14 @@ public class InboxProcessor { // Extract workout metadata Map workoutData = extractWorkoutData(noteObject); Map attachments = extractAttachments(noteObject); - org.operaton.fitpub.model.entity.RemoteActivity.Visibility visibility = determineVisibility(noteObject); + RemoteActivity.Visibility visibility = determineVisibility(noteObject); // Parse published timestamp String publishedStr = (String) noteObject.get("published"); Instant publishedAt = publishedStr != null ? Instant.parse(publishedStr) : Instant.now(); // Build RemoteActivity entity - org.operaton.fitpub.model.entity.RemoteActivity remoteActivity = org.operaton.fitpub.model.entity.RemoteActivity.builder() + RemoteActivity remoteActivity = RemoteActivity.builder() .activityUri(activityUri) .remoteActorUri(actor) .activityType((String) workoutData.get("activityType")) @@ -660,7 +663,7 @@ public class InboxProcessor { /** * Determine visibility from ActivityPub "to" and "cc" fields. */ - private org.operaton.fitpub.model.entity.RemoteActivity.Visibility determineVisibility(Map noteObject) { + private RemoteActivity.Visibility determineVisibility(Map noteObject) { Object toObj = noteObject.get("to"); Object ccObj = noteObject.get("cc"); @@ -676,7 +679,7 @@ public class InboxProcessor { ccList.contains("Public"); if (isPublic) { - return org.operaton.fitpub.model.entity.RemoteActivity.Visibility.PUBLIC; + return RemoteActivity.Visibility.PUBLIC; } // If it has followers in to/cc, it's FOLLOWERS visibility @@ -684,11 +687,11 @@ public class InboxProcessor { ccList.stream().anyMatch(s -> s.contains("/followers")); if (hasFollowers) { - return org.operaton.fitpub.model.entity.RemoteActivity.Visibility.FOLLOWERS; + return RemoteActivity.Visibility.FOLLOWERS; } // Default to PRIVATE - return org.operaton.fitpub.model.entity.RemoteActivity.Visibility.PRIVATE; + return RemoteActivity.Visibility.PRIVATE; } /** diff --git a/src/main/java/org/operaton/fitpub/service/NotificationService.java b/src/main/java/net/javahippie/fitpub/service/NotificationService.java similarity index 96% rename from src/main/java/org/operaton/fitpub/service/NotificationService.java rename to src/main/java/net/javahippie/fitpub/service/NotificationService.java index aa77be2..2f8de00 100644 --- a/src/main/java/org/operaton/fitpub/service/NotificationService.java +++ b/src/main/java/net/javahippie/fitpub/service/NotificationService.java @@ -1,11 +1,15 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.entity.*; -import org.operaton.fitpub.repository.NotificationRepository; -import org.operaton.fitpub.repository.RemoteActorRepository; -import org.operaton.fitpub.repository.UserRepository; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.Comment; +import net.javahippie.fitpub.model.entity.Notification; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.model.entity.*; +import net.javahippie.fitpub.repository.NotificationRepository; +import net.javahippie.fitpub.repository.RemoteActorRepository; +import net.javahippie.fitpub.repository.UserRepository; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/org/operaton/fitpub/service/OsmTileRenderer.java b/src/main/java/net/javahippie/fitpub/service/OsmTileRenderer.java similarity index 99% rename from src/main/java/org/operaton/fitpub/service/OsmTileRenderer.java rename to src/main/java/net/javahippie/fitpub/service/OsmTileRenderer.java index b32544f..88d414d 100644 --- a/src/main/java/org/operaton/fitpub/service/OsmTileRenderer.java +++ b/src/main/java/net/javahippie/fitpub/service/OsmTileRenderer.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; diff --git a/src/main/java/org/operaton/fitpub/service/PersonalRecordService.java b/src/main/java/net/javahippie/fitpub/service/PersonalRecordService.java similarity index 98% rename from src/main/java/org/operaton/fitpub/service/PersonalRecordService.java rename to src/main/java/net/javahippie/fitpub/service/PersonalRecordService.java index 4f3659d..67ba8d1 100644 --- a/src/main/java/org/operaton/fitpub/service/PersonalRecordService.java +++ b/src/main/java/net/javahippie/fitpub/service/PersonalRecordService.java @@ -1,10 +1,10 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.PersonalRecord; -import org.operaton.fitpub.repository.PersonalRecordRepository; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.PersonalRecord; +import net.javahippie.fitpub.repository.PersonalRecordRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/org/operaton/fitpub/service/PrivacyZoneService.java b/src/main/java/net/javahippie/fitpub/service/PrivacyZoneService.java similarity index 97% rename from src/main/java/org/operaton/fitpub/service/PrivacyZoneService.java rename to src/main/java/net/javahippie/fitpub/service/PrivacyZoneService.java index 0965e0a..9cb4c7c 100644 --- a/src/main/java/org/operaton/fitpub/service/PrivacyZoneService.java +++ b/src/main/java/net/javahippie/fitpub/service/PrivacyZoneService.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -6,8 +6,8 @@ import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.GeometryFactory; import org.locationtech.jts.geom.Point; import org.locationtech.jts.geom.PrecisionModel; -import org.operaton.fitpub.model.entity.PrivacyZone; -import org.operaton.fitpub.repository.PrivacyZoneRepository; +import net.javahippie.fitpub.model.entity.PrivacyZone; +import net.javahippie.fitpub.repository.PrivacyZoneRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/org/operaton/fitpub/service/TimelineResultMapper.java b/src/main/java/net/javahippie/fitpub/service/TimelineResultMapper.java similarity index 96% rename from src/main/java/org/operaton/fitpub/service/TimelineResultMapper.java rename to src/main/java/net/javahippie/fitpub/service/TimelineResultMapper.java index d760bde..7b373b0 100644 --- a/src/main/java/org/operaton/fitpub/service/TimelineResultMapper.java +++ b/src/main/java/net/javahippie/fitpub/service/TimelineResultMapper.java @@ -1,12 +1,10 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.dto.TimelineActivityDTO; -import org.operaton.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.dto.TimelineActivityDTO; import org.springframework.stereotype.Component; import java.math.BigDecimal; -import java.math.BigInteger; import java.time.LocalDateTime; import java.util.UUID; diff --git a/src/main/java/org/operaton/fitpub/service/TimelineService.java b/src/main/java/net/javahippie/fitpub/service/TimelineService.java similarity index 94% rename from src/main/java/org/operaton/fitpub/service/TimelineService.java rename to src/main/java/net/javahippie/fitpub/service/TimelineService.java index 90c549f..ecb4b69 100644 --- a/src/main/java/org/operaton/fitpub/service/TimelineService.java +++ b/src/main/java/net/javahippie/fitpub/service/TimelineService.java @@ -1,18 +1,20 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.dto.TimelineActivityDTO; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.Follow; -import org.operaton.fitpub.model.entity.RemoteActivity; -import org.operaton.fitpub.model.entity.RemoteActor; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.FollowRepository; -import org.operaton.fitpub.repository.RemoteActivityRepository; -import org.operaton.fitpub.repository.RemoteActorRepository; -import org.operaton.fitpub.repository.UserRepository; +import net.javahippie.fitpub.repository.CommentRepository; +import net.javahippie.fitpub.repository.LikeRepository; +import net.javahippie.fitpub.model.dto.TimelineActivityDTO; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.Follow; +import net.javahippie.fitpub.model.entity.RemoteActivity; +import net.javahippie.fitpub.model.entity.RemoteActor; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.FollowRepository; +import net.javahippie.fitpub.repository.RemoteActivityRepository; +import net.javahippie.fitpub.repository.RemoteActorRepository; +import net.javahippie.fitpub.repository.UserRepository; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; @@ -22,11 +24,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; -import java.util.Comparator; import java.util.List; import java.util.UUID; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * Service for managing timelines. @@ -42,8 +42,8 @@ public class TimelineService { private final UserRepository userRepository; private final RemoteActivityRepository remoteActivityRepository; private final RemoteActorRepository remoteActorRepository; - private final org.operaton.fitpub.repository.LikeRepository likeRepository; - private final org.operaton.fitpub.repository.CommentRepository commentRepository; + private final LikeRepository likeRepository; + private final CommentRepository commentRepository; private final TimelineResultMapper timelineResultMapper; @Value("${fitpub.base-url}") diff --git a/src/main/java/org/operaton/fitpub/service/TrackPrivacyFilter.java b/src/main/java/net/javahippie/fitpub/service/TrackPrivacyFilter.java similarity index 98% rename from src/main/java/org/operaton/fitpub/service/TrackPrivacyFilter.java rename to src/main/java/net/javahippie/fitpub/service/TrackPrivacyFilter.java index fc9ed03..7d3a6b5 100644 --- a/src/main/java/org/operaton/fitpub/service/TrackPrivacyFilter.java +++ b/src/main/java/net/javahippie/fitpub/service/TrackPrivacyFilter.java @@ -1,9 +1,8 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.locationtech.jts.geom.Coordinate; @@ -11,7 +10,7 @@ import org.locationtech.jts.geom.GeometryFactory; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.Point; import org.locationtech.jts.geom.PrecisionModel; -import org.operaton.fitpub.model.entity.PrivacyZone; +import net.javahippie.fitpub.model.entity.PrivacyZone; import org.springframework.stereotype.Service; import java.util.ArrayList; diff --git a/src/main/java/org/operaton/fitpub/service/TrainingLoadService.java b/src/main/java/net/javahippie/fitpub/service/TrainingLoadService.java similarity index 97% rename from src/main/java/org/operaton/fitpub/service/TrainingLoadService.java rename to src/main/java/net/javahippie/fitpub/service/TrainingLoadService.java index 943044f..af02d4d 100644 --- a/src/main/java/org/operaton/fitpub/service/TrainingLoadService.java +++ b/src/main/java/net/javahippie/fitpub/service/TrainingLoadService.java @@ -1,11 +1,11 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.TrainingLoad; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.TrainingLoadRepository; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.TrainingLoad; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.TrainingLoadRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/org/operaton/fitpub/service/UserService.java b/src/main/java/net/javahippie/fitpub/service/UserService.java similarity index 95% rename from src/main/java/org/operaton/fitpub/service/UserService.java rename to src/main/java/net/javahippie/fitpub/service/UserService.java index 5c18e25..77383f2 100644 --- a/src/main/java/org/operaton/fitpub/service/UserService.java +++ b/src/main/java/net/javahippie/fitpub/service/UserService.java @@ -1,14 +1,14 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.dto.AuthResponse; -import org.operaton.fitpub.model.dto.LoginRequest; -import org.operaton.fitpub.model.dto.RegisterRequest; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.FollowRepository; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.security.JwtTokenProvider; +import net.javahippie.fitpub.model.dto.AuthResponse; +import net.javahippie.fitpub.model.dto.LoginRequest; +import net.javahippie.fitpub.model.dto.RegisterRequest; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.FollowRepository; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.security.JwtTokenProvider; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.crypto.password.PasswordEncoder; diff --git a/src/main/java/org/operaton/fitpub/service/WeatherService.java b/src/main/java/net/javahippie/fitpub/service/WeatherService.java similarity index 99% rename from src/main/java/org/operaton/fitpub/service/WeatherService.java rename to src/main/java/net/javahippie/fitpub/service/WeatherService.java index edd3058..eea89c7 100644 --- a/src/main/java/org/operaton/fitpub/service/WeatherService.java +++ b/src/main/java/net/javahippie/fitpub/service/WeatherService.java @@ -1,12 +1,12 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.WeatherData; -import org.operaton.fitpub.repository.WeatherDataRepository; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.WeatherData; +import net.javahippie.fitpub.repository.WeatherDataRepository; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/org/operaton/fitpub/service/WebFingerClient.java b/src/main/java/net/javahippie/fitpub/service/WebFingerClient.java similarity index 99% rename from src/main/java/org/operaton/fitpub/service/WebFingerClient.java rename to src/main/java/net/javahippie/fitpub/service/WebFingerClient.java index 47c358e..f526bd1 100644 --- a/src/main/java/org/operaton/fitpub/service/WebFingerClient.java +++ b/src/main/java/net/javahippie/fitpub/service/WebFingerClient.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/org/operaton/fitpub/util/ActivityFormatter.java b/src/main/java/net/javahippie/fitpub/util/ActivityFormatter.java similarity index 96% rename from src/main/java/org/operaton/fitpub/util/ActivityFormatter.java rename to src/main/java/net/javahippie/fitpub/util/ActivityFormatter.java index 1c2499b..324f5a1 100644 --- a/src/main/java/org/operaton/fitpub/util/ActivityFormatter.java +++ b/src/main/java/net/javahippie/fitpub/util/ActivityFormatter.java @@ -1,6 +1,6 @@ -package org.operaton.fitpub.util; +package net.javahippie.fitpub.util; -import org.operaton.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.Activity; import java.time.LocalDateTime; import java.time.LocalTime; diff --git a/src/main/java/org/operaton/fitpub/util/ByteArrayMultipartFile.java b/src/main/java/net/javahippie/fitpub/util/ByteArrayMultipartFile.java similarity index 97% rename from src/main/java/org/operaton/fitpub/util/ByteArrayMultipartFile.java rename to src/main/java/net/javahippie/fitpub/util/ByteArrayMultipartFile.java index 7113240..ddd3710 100644 --- a/src/main/java/org/operaton/fitpub/util/ByteArrayMultipartFile.java +++ b/src/main/java/net/javahippie/fitpub/util/ByteArrayMultipartFile.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.util; +package net.javahippie.fitpub.util; import org.springframework.web.multipart.MultipartFile; diff --git a/src/main/java/org/operaton/fitpub/util/FitFileValidator.java b/src/main/java/net/javahippie/fitpub/util/FitFileValidator.java similarity index 97% rename from src/main/java/org/operaton/fitpub/util/FitFileValidator.java rename to src/main/java/net/javahippie/fitpub/util/FitFileValidator.java index d42c9ac..4043f72 100644 --- a/src/main/java/org/operaton/fitpub/util/FitFileValidator.java +++ b/src/main/java/net/javahippie/fitpub/util/FitFileValidator.java @@ -1,7 +1,7 @@ -package org.operaton.fitpub.util; +package net.javahippie.fitpub.util; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.exception.InvalidFitFileException; +import net.javahippie.fitpub.exception.InvalidFitFileException; import org.springframework.stereotype.Component; import java.io.IOException; diff --git a/src/main/java/org/operaton/fitpub/util/FitParser.java b/src/main/java/net/javahippie/fitpub/util/FitParser.java similarity index 97% rename from src/main/java/org/operaton/fitpub/util/FitParser.java rename to src/main/java/net/javahippie/fitpub/util/FitParser.java index 0047e51..c757b60 100644 --- a/src/main/java/org/operaton/fitpub/util/FitParser.java +++ b/src/main/java/net/javahippie/fitpub/util/FitParser.java @@ -1,17 +1,14 @@ -package org.operaton.fitpub.util; +package net.javahippie.fitpub.util; import com.garmin.fit.*; import lombok.extern.slf4j.Slf4j; import net.iakovlev.timeshape.TimeZoneEngine; -import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.GeometryFactory; -import org.locationtech.jts.geom.Point; import org.locationtech.jts.geom.PrecisionModel; -import org.operaton.fitpub.exception.FitFileProcessingException; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.ActivityMetrics; -import org.operaton.fitpub.util.ParsedActivityData.ActivityMetricsData; -import org.operaton.fitpub.util.ParsedActivityData.TrackPointData; +import net.javahippie.fitpub.exception.FitFileProcessingException; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.util.ParsedActivityData.ActivityMetricsData; +import net.javahippie.fitpub.util.ParsedActivityData.TrackPointData; import org.springframework.stereotype.Component; import java.io.ByteArrayInputStream; @@ -22,7 +19,6 @@ import java.time.Duration; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; -import java.util.ArrayList; import java.util.List; import java.util.Optional; diff --git a/src/main/java/org/operaton/fitpub/util/GpxFileValidator.java b/src/main/java/net/javahippie/fitpub/util/GpxFileValidator.java similarity index 97% rename from src/main/java/org/operaton/fitpub/util/GpxFileValidator.java rename to src/main/java/net/javahippie/fitpub/util/GpxFileValidator.java index fbf94e8..5e8d8e5 100644 --- a/src/main/java/org/operaton/fitpub/util/GpxFileValidator.java +++ b/src/main/java/net/javahippie/fitpub/util/GpxFileValidator.java @@ -1,7 +1,7 @@ -package org.operaton.fitpub.util; +package net.javahippie.fitpub.util; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.exception.InvalidGpxFileException; +import net.javahippie.fitpub.exception.InvalidGpxFileException; import org.springframework.stereotype.Component; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/src/main/java/org/operaton/fitpub/util/GpxParser.java b/src/main/java/net/javahippie/fitpub/util/GpxParser.java similarity index 98% rename from src/main/java/org/operaton/fitpub/util/GpxParser.java rename to src/main/java/net/javahippie/fitpub/util/GpxParser.java index 29c8b9e..816d13a 100644 --- a/src/main/java/org/operaton/fitpub/util/GpxParser.java +++ b/src/main/java/net/javahippie/fitpub/util/GpxParser.java @@ -1,12 +1,12 @@ -package org.operaton.fitpub.util; +package net.javahippie.fitpub.util; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import net.iakovlev.timeshape.TimeZoneEngine; -import org.operaton.fitpub.exception.GpxFileProcessingException; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.util.ParsedActivityData.ActivityMetricsData; -import org.operaton.fitpub.util.ParsedActivityData.TrackPointData; +import net.javahippie.fitpub.exception.GpxFileProcessingException; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.util.ParsedActivityData.ActivityMetricsData; +import net.javahippie.fitpub.util.ParsedActivityData.TrackPointData; import org.springframework.stereotype.Component; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/src/main/java/org/operaton/fitpub/util/ParsedActivityData.java b/src/main/java/net/javahippie/fitpub/util/ParsedActivityData.java similarity index 96% rename from src/main/java/org/operaton/fitpub/util/ParsedActivityData.java rename to src/main/java/net/javahippie/fitpub/util/ParsedActivityData.java index a642901..12ff347 100644 --- a/src/main/java/org/operaton/fitpub/util/ParsedActivityData.java +++ b/src/main/java/net/javahippie/fitpub/util/ParsedActivityData.java @@ -1,12 +1,12 @@ -package org.operaton.fitpub.util; +package net.javahippie.fitpub.util; import lombok.Data; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.GeometryFactory; import org.locationtech.jts.geom.Point; import org.locationtech.jts.geom.PrecisionModel; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.ActivityMetrics; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.ActivityMetrics; import java.math.BigDecimal; import java.time.Duration; diff --git a/src/main/java/org/operaton/fitpub/util/SpeedSmoother.java b/src/main/java/net/javahippie/fitpub/util/SpeedSmoother.java similarity index 98% rename from src/main/java/org/operaton/fitpub/util/SpeedSmoother.java rename to src/main/java/net/javahippie/fitpub/util/SpeedSmoother.java index 5b1dc5c..337e141 100644 --- a/src/main/java/org/operaton/fitpub/util/SpeedSmoother.java +++ b/src/main/java/net/javahippie/fitpub/util/SpeedSmoother.java @@ -1,7 +1,7 @@ -package org.operaton.fitpub.util; +package net.javahippie.fitpub.util; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.Activity; import org.springframework.stereotype.Component; import java.math.BigDecimal; diff --git a/src/main/java/org/operaton/fitpub/util/TrackSimplifier.java b/src/main/java/net/javahippie/fitpub/util/TrackSimplifier.java similarity index 99% rename from src/main/java/org/operaton/fitpub/util/TrackSimplifier.java rename to src/main/java/net/javahippie/fitpub/util/TrackSimplifier.java index 4e149c6..c55a48e 100644 --- a/src/main/java/org/operaton/fitpub/util/TrackSimplifier.java +++ b/src/main/java/net/javahippie/fitpub/util/TrackSimplifier.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.util; +package net.javahippie.fitpub.util; import lombok.extern.slf4j.Slf4j; import org.locationtech.jts.geom.Coordinate; diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 74a4d76..a2a2705 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -48,7 +48,7 @@ fitpub: logging: level: root: INFO - org.operaton.fitpub: DEBUG + net.javahippie.fitpub: DEBUG org.hibernate.SQL: DEBUG org.hibernate.type.descriptor.sql.BasicBinder: TRACE org.springframework.security: DEBUG diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 8602eff..c500e85 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -59,7 +59,7 @@ fitpub: logging: level: root: WARN - org.operaton.fitpub: INFO + net.javahippie.fitpub: INFO org.hibernate.SQL: WARN org.springframework.security: WARN org.springframework.web: WARN diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index a6382e8..baf1721 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -106,7 +106,7 @@ fitpub: logging: level: root: INFO - org.operaton.fitpub: DEBUG + net.javahippie.fitpub: DEBUG org.hibernate.SQL: DEBUG org.hibernate.type.descriptor.sql.BasicBinder: TRACE org.springframework.security: DEBUG diff --git a/src/main/resources/db/migration/V22__add_race_flag_to_activities.sql b/src/main/resources/db/migration/V22__add_race_flag_to_activities.sql new file mode 100644 index 0000000..7643bb7 --- /dev/null +++ b/src/main/resources/db/migration/V22__add_race_flag_to_activities.sql @@ -0,0 +1,10 @@ +-- Add race/competition flag to activities +-- Race activities use total time for pace calculation instead of moving time + +ALTER TABLE activities +ADD COLUMN race BOOLEAN NOT NULL DEFAULT FALSE; + +-- Index for filtering race activities +CREATE INDEX idx_activity_race ON activities(race); + +COMMENT ON COLUMN activities.race IS 'True if activity is a race/competition. Race activities use total time for pace calculation.'; diff --git a/src/main/resources/static/css/fitpub.css b/src/main/resources/static/css/fitpub.css index 9481558..9b541b6 100644 --- a/src/main/resources/static/css/fitpub.css +++ b/src/main/resources/static/css/fitpub.css @@ -1047,4 +1047,316 @@ h1 { color: var(--neon-orange) !important; border: 1px solid var(--neon-orange); } + + /* Race badge - Dark Mode - Use standard colors */ + .race-badge { + background: linear-gradient(135deg, var(--neon-pink) 0%, var(--neon-purple) 100%) !important; + color: #ffffff !important; + border: 2px solid var(--neon-pink) !important; + text-shadow: 0 0 10px rgba(255, 20, 147, 0.8) !important; + box-shadow: 0 0 12px rgba(255, 20, 147, 0.4) !important; + } + + /* Race activity card - Dark Mode */ + .timeline-card.race-card { + background: linear-gradient(135deg, rgba(255, 20, 147, 0.08) 0%, rgba(157, 0, 255, 0.08) 100%); + border: 3px solid var(--neon-pink) !important; + border-top-width: 15px !important; + box-shadow: 0 0 25px rgba(255, 20, 147, 0.4); + } + + .timeline-card.race-card::before { + background: linear-gradient(135deg, var(--neon-pink) 0%, var(--neon-purple) 100%) !important; + text-shadow: 0 0 15px rgba(255, 20, 147, 1) !important; + box-shadow: 0 2px 10px rgba(255, 20, 147, 0.6) !important; + } + + .timeline-card.race-card::after { + color: var(--neon-pink) !important; + opacity: 0.05 !important; + } + + /* Race Detail Page - Dark Mode - Use standard colors */ + #activityContent.race-detail h2 { + border-image-source: repeating-linear-gradient( + 0deg, + #1a0033 0px, + #1a0033 15px, + var(--neon-pink) 15px, + var(--neon-pink) 30px + ) !important; + } + + #activityContent.race-detail .card.race-metrics { + border: 4px solid var(--neon-pink) !important; + background: + linear-gradient(#1a0033, #1a0033) padding-box, + repeating-linear-gradient( + 45deg, + #1a0033 0px, + #1a0033 10px, + var(--neon-pink) 10px, + var(--neon-pink) 20px + ) border-box !important; + box-shadow: 0 0 25px rgba(255, 20, 147, 0.3) !important; + } + + #activityContent.race-detail .card.race-metrics::before { + color: var(--neon-pink) !important; + opacity: 0.08 !important; + } + + #activityContent.race-detail .card-header { + background: + repeating-conic-gradient( + #1a0033 0% 25%, + var(--neon-pink) 0% 50% + ) 0 0 / 12px 12px !important; + border-bottom-color: var(--neon-pink) !important; + border-top-color: var(--neon-pink) !important; + } + + #activityContent.race-detail .card-header::before { + background: rgba(26, 0, 51, 0.5) !important; + } + + #activityContent.race-detail .card-header h5, + #activityContent.race-detail .card-header h6 { + color: var(--neon-pink) !important; + text-shadow: + 0 0 8px rgba(26, 0, 51, 0.9), + 1px 1px 2px rgba(26, 0, 51, 1), + 0 0 10px rgba(255, 20, 147, 0.5) !important; + } + + #activityContent.race-detail .card-header i { + color: var(--neon-pink) !important; + filter: drop-shadow(0 0 3px rgba(26, 0, 51, 0.9)) drop-shadow(0 0 5px rgba(255, 20, 147, 0.5)) !important; + } + + #activityContent.race-detail #mapSection .card { + border: 3px solid var(--neon-pink) !important; + box-shadow: 0 0 20px rgba(255, 20, 147, 0.3) !important; + } + + .activity-type-badge.race-activity { + background: linear-gradient(135deg, var(--neon-pink) 0%, var(--neon-purple) 100%) !important; + color: #ffffff !important; + border: 2px solid var(--neon-pink) !important; + box-shadow: 0 0 10px rgba(255, 20, 147, 0.3) !important; + } + + /* Race Activity List Card - Dark Mode */ + .activity-card.race-list-card { + border: 3px solid var(--neon-pink) !important; + background: linear-gradient(135deg, rgba(255, 20, 147, 0.05) 0%, rgba(157, 0, 255, 0.05) 100%); + box-shadow: 0 0 20px rgba(255, 20, 147, 0.2); + } + + .activity-card.race-list-card::before { + color: var(--neon-pink) !important; + } + + .activity-card.race-list-card .card-title a { + color: var(--neon-cyan) !important; + font-weight: 900; + } +} + +/* Race Badge Styling - Matches activity type badge exactly */ +.race-badge { + display: inline-block; + padding: 0.35rem 0.85rem; + border-radius: 1rem; + font-size: 0.875rem; + font-weight: 900; + text-transform: uppercase; + letter-spacing: 0.05em; + background: linear-gradient(135deg, var(--neon-pink) 0%, var(--neon-purple) 100%); + color: #ffffff; + border: 2px solid currentColor; + vertical-align: baseline; +} + +/* Race Activity Type Badge - Uses standard pink/purple gradient */ +.activity-type-badge.race-activity { + background: linear-gradient(135deg, var(--neon-pink) 0%, var(--neon-purple) 100%); + color: #ffffff; + border: 2px solid currentColor; + font-weight: 900; +} + +/* Race Timeline Card - Special Styling with Checkered Top Border */ +.timeline-card.race-card { + background: linear-gradient(135deg, rgba(255, 20, 147, 0.05) 0%, rgba(157, 0, 255, 0.05) 100%); + border: 3px solid var(--neon-pink); + border-top-width: 15px; + border-top-style: solid; + border-image: repeating-linear-gradient( + 90deg, + var(--neon-pink) 0px, + var(--neon-pink) 20px, + var(--neon-purple) 20px, + var(--neon-purple) 40px + ) 15 3 3 3; + box-shadow: 0 4px 20px rgba(255, 20, 147, 0.3); + position: relative; +} + +.timeline-card.race-card::before { + content: '\F277 RACE'; /* Bootstrap Icons flag-checkered + text */ + font-family: 'bootstrap-icons', 'Arial Black', sans-serif; + position: absolute; + top: -15px; + left: 50%; + transform: translateX(-50%); + font-size: 1rem; + font-weight: 900; + color: #ffffff; + background: var(--neon-pink); + padding: 0.25rem 1rem; + border-radius: 0 0 0.5rem 0.5rem; + text-shadow: 0 0 10px rgba(255, 20, 147, 0.8); + box-shadow: 0 2px 8px rgba(255, 20, 147, 0.4); + z-index: 10; + letter-spacing: 0.15em; +} + +.timeline-card.race-card::after { + content: '\F277'; /* Bootstrap Icons flag-checkered watermark */ + font-family: 'bootstrap-icons'; + position: absolute; + top: 50%; + right: 15px; + transform: translateY(-50%); + font-size: 8rem; + opacity: 0.03; + color: var(--neon-pink); + z-index: 0; + pointer-events: none; +} + +.timeline-card.race-card .card-body { + padding-top: 1.5rem; +} + +/* Race Activity Detail Page - Complete Theme */ +#activityContent.race-detail { + position: relative; +} + +/* Race Title - Readable with checkered flag accent */ +#activityContent.race-detail h2 { + border-left: 8px solid transparent; + border-image: repeating-linear-gradient( + 0deg, + var(--neon-pink) 0px, + var(--neon-pink) 15px, + var(--neon-purple) 15px, + var(--neon-purple) 30px + ) 8; + padding-left: 1rem; + position: relative; +} + +/* Race Metrics Card with Border */ +#activityContent.race-detail .card.race-metrics { + border: 4px solid var(--neon-pink); + box-shadow: 0 4px 20px rgba(255, 20, 147, 0.3); + position: relative; +} + +#activityContent.race-detail .card.race-metrics::before { + content: '\F277'; /* Bootstrap Icons flag-checkered */ + font-family: 'bootstrap-icons'; + position: absolute; + top: 10px; + right: 15px; + font-size: 4rem; + opacity: 0.05; + color: var(--neon-pink); + z-index: 0; +} + +#activityContent.race-detail .card.race-metrics .card-body { + position: relative; + z-index: 1; +} + +/* Race Card Headers with Checkered Flag Pattern */ +#activityContent.race-detail .card-header { + background: + repeating-conic-gradient( + #1a0033 0% 25%, + var(--neon-pink) 0% 50% + ) 0 0 / 12px 12px !important; + border-bottom: 3px solid var(--neon-pink) !important; + border-top: 3px solid var(--neon-pink) !important; + position: relative; +} + +#activityContent.race-detail .card-header::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(26, 0, 51, 0.5) !important; + z-index: 0; +} + +#activityContent.race-detail .card-header h5, +#activityContent.race-detail .card-header h6 { + color: var(--neon-pink) !important; + font-weight: 900; + position: relative; + z-index: 1; + text-shadow: + 0 0 8px rgba(26, 0, 51, 0.9), + 1px 1px 2px rgba(26, 0, 51, 1), + 0 0 10px rgba(255, 20, 147, 0.3) !important; +} + +#activityContent.race-detail .card-header i { + color: var(--neon-pink) !important; + position: relative; + z-index: 1; + filter: drop-shadow(0 0 3px rgba(26, 0, 51, 0.9)) drop-shadow(0 0 5px rgba(255, 20, 147, 0.3)) !important; +} + +/* Race Map Section Border */ +#activityContent.race-detail #mapSection .card { + border: 3px solid var(--neon-pink); + box-shadow: 0 4px 15px rgba(255, 20, 147, 0.3); +} + +/* Race Activity List Card */ +.activity-card.race-list-card { + border: 3px solid var(--neon-pink); + background: linear-gradient(135deg, rgba(255, 20, 147, 0.05) 0%, rgba(157, 0, 255, 0.05) 100%); + box-shadow: 0 4px 15px rgba(255, 20, 147, 0.2); + position: relative; +} + +.activity-card.race-list-card::before { + content: '\F277'; /* Bootstrap Icons flag-checkered */ + font-family: 'bootstrap-icons'; + position: absolute; + top: 10px; + right: 15px; + font-size: 3rem; + opacity: 0.06; + color: var(--neon-pink); + z-index: 0; +} + +.activity-card.race-list-card .card-body { + position: relative; + z-index: 1; +} + +.activity-card.race-list-card .card-title a { + color: #000000; + font-weight: 900; } diff --git a/src/main/resources/static/js/timeline.js b/src/main/resources/static/js/timeline.js index d470292..b738790 100644 --- a/src/main/resources/static/js/timeline.js +++ b/src/main/resources/static/js/timeline.js @@ -103,7 +103,7 @@ const FitPubTimeline = { const mapId = `map-${activity.id}`; return ` -
+
@@ -128,9 +128,15 @@ const FitPubTimeline = {
- + ${activity.activityType} + ${activity.race + ? ` + Race + ` + : '' + } ${activity.indoor ? ` Indoor diff --git a/src/main/resources/templates/activities/detail.html b/src/main/resources/templates/activities/detail.html index 50fc3f6..077bedb 100644 --- a/src/main/resources/templates/activities/detail.html +++ b/src/main/resources/templates/activities/detail.html @@ -34,6 +34,9 @@

Activity Title

+ @@ -510,6 +513,28 @@ document.querySelector('#visibilityBadge i').className = `bi bi-${visIcon}`; document.getElementById('visibilityBadge').className = `ms-2 visibility-${activity.visibility.toLowerCase()}`; + // Race badge and styling + const raceBadge = document.getElementById('raceBadge'); + const activityTypeSpan = document.getElementById('activityType'); + const activityContent = document.getElementById('activityContent'); + const metricsCard = document.querySelector('#activityContent .card.border'); + + if (activity.race === true) { + raceBadge.style.display = 'inline-block'; + activityTypeSpan.classList.add('race-activity'); + activityContent.classList.add('race-detail'); + if (metricsCard) { + metricsCard.classList.add('race-metrics'); + } + } else { + raceBadge.style.display = 'none'; + activityTypeSpan.classList.remove('race-activity'); + activityContent.classList.remove('race-detail'); + if (metricsCard) { + metricsCard.classList.remove('race-metrics'); + } + } + // Indoor badge const indoorBadge = document.getElementById('indoorBadge'); if (activity.indoor === true) { diff --git a/src/main/resources/templates/activities/edit.html b/src/main/resources/templates/activities/edit.html index 2640203..a73ac72 100644 --- a/src/main/resources/templates/activities/edit.html +++ b/src/main/resources/templates/activities/edit.html @@ -105,6 +105,19 @@

+ +
+
+ + +
+
+ Race activities use total time for pace calculation instead of moving time +
+
+
Activity Summary
@@ -202,6 +215,7 @@ document.getElementById('activityType').value = activity.activityType || 'OTHER'; document.getElementById('description').value = activity.description || ''; document.getElementById('visibility').value = activity.visibility || 'PUBLIC'; + document.getElementById('race').checked = activity.race || false; // Update character count descCharCount.textContent = (activity.description || '').length; @@ -259,7 +273,8 @@ title: document.getElementById('title').value, activityType: document.getElementById('activityType').value, description: document.getElementById('description').value, - visibility: document.getElementById('visibility').value + visibility: document.getElementById('visibility').value, + race: document.getElementById('race').checked }; try { diff --git a/src/main/resources/templates/activities/list.html b/src/main/resources/templates/activities/list.html index 7f9b6ab..1b9d76a 100644 --- a/src/main/resources/templates/activities/list.html +++ b/src/main/resources/templates/activities/list.html @@ -147,7 +147,7 @@ function renderActivities(activities) { activitiesList.innerHTML = activities.map(activity => ` -
+
@@ -157,9 +157,15 @@

- + ${activity.activityType} + ${activity.race + ? ` + Race + ` + : '' + } ${activity.indoor ? ` Indoor diff --git a/src/main/resources/templates/activities/upload.html b/src/main/resources/templates/activities/upload.html index 4e49063..c355aa3 100644 --- a/src/main/resources/templates/activities/upload.html +++ b/src/main/resources/templates/activities/upload.html @@ -131,6 +131,19 @@

+ +
+
+ + +
+
+ Race activities use total time for pace calculation instead of moving time +
+
+
Activity Summary
@@ -418,7 +431,8 @@ const updateData = { title: document.getElementById('title').value, description: document.getElementById('description').value, - visibility: document.getElementById('visibility').value + visibility: document.getElementById('visibility').value, + race: document.getElementById('race').checked }; const response = await FitPubAuth.authenticatedFetch( diff --git a/src/main/resources/templates/layout.html b/src/main/resources/templates/layout.html index ef25951..2ddd461 100644 --- a/src/main/resources/templates/layout.html +++ b/src/main/resources/templates/layout.html @@ -224,25 +224,19 @@ Share your fitness activities on the Fediverse

-
-

© 2024 FitPub. Open Source Software.

+

© 2026 FitPub. Open Source Software.

diff --git a/src/main/resources/templates/profile/followers.html b/src/main/resources/templates/profile/followers.html index 4aad9f3..5f28094 100644 --- a/src/main/resources/templates/profile/followers.html +++ b/src/main/resources/templates/profile/followers.html @@ -110,7 +110,7 @@
${follower.local ? - `${escapeHtml(follower.displayName || follower.username)}` : + `${escapeHtml(follower.displayName || follower.username)}` : `${escapeHtml(follower.displayName || follower.username)}` } ${!follower.local ? '' : ''} diff --git a/src/main/resources/templates/profile/following.html b/src/main/resources/templates/profile/following.html index feb724b..42d33f4 100644 --- a/src/main/resources/templates/profile/following.html +++ b/src/main/resources/templates/profile/following.html @@ -66,8 +66,8 @@ document.getElementById('usernameDisplay').textContent = targetUsername; // Check if viewing own following list - const currentUser = FitPubAuth.getCurrentUser(); - const isOwnProfile = currentUser && currentUser.username === targetUsername; + const currentUsername = FitPubAuth.getUsername(); + const isOwnProfile = currentUsername && currentUsername === targetUsername; loadFollowing(isOwnProfile); @@ -152,7 +152,7 @@
${user.local ? - `${escapeHtml(user.displayName || user.username)}` : + `${escapeHtml(user.displayName || user.username)}` : `${escapeHtml(user.displayName || user.username)}` } ${!user.local ? '' : ''} diff --git a/src/main/resources/templates/terms.html b/src/main/resources/templates/terms.html new file mode 100644 index 0000000..371c42f --- /dev/null +++ b/src/main/resources/templates/terms.html @@ -0,0 +1,131 @@ + + + + Terms & Privacy + + + +
+
+
+
+
+
+ +

Terms & Privacy

+

Last updated: January 2026

+
+ +
+

The Honest Truth

+

+ I built FitPub primarily for myself to track my fitness activities and share them on the Fediverse. + I'm making it available for others to use, but please understand what you're getting into. +

+ +

No Guarantees

+

+ This is a hobby project. I make no guarantees that: +

+
    +
  • All features will work as expected (or at all)
  • +
  • Your data won't be lost due to bugs, hardware failures, or cosmic rays
  • +
  • This instance will still be running in a year, a month, or even next week
  • +
  • The service will be available 24/7 without interruptions
  • +
  • New features will be added, or that existing bugs will be fixed
  • +
+ +

Use at Your Own Risk

+

+ By using FitPub, you acknowledge and accept that: +

+
    +
  • You use this service entirely at your own risk
  • +
  • I am not liable for any data loss, privacy breaches, or other issues that may occur
  • +
  • You should keep backups of your important fitness data elsewhere
  • +
  • The service may be shut down at any time without notice (though I'll try to give a heads up)
  • +
  • I may modify, suspend, or discontinue any part of the service at any time
  • +
+ +

Privacy & Data

+

+ I respect your privacy, but remember: +

+
    +
  • Activities marked as "Public" are federated across the Fediverse and may be seen by anyone
  • +
  • GPS tracks include exact location data - be careful what you share publicly
  • +
  • I don't sell your data because, honestly, who would want to buy it?
  • +
  • The server logs may contain your IP address and activity data for debugging purposes
  • +
  • If you want your data deleted, just ask - I'll do my best to help
  • +
+ +

User Conduct

+

+ Please be a decent human being: +

+
    +
  • Don't abuse the service or try to break it on purpose
  • +
  • Don't upload illegal content or content that violates others' rights
  • +
  • Don't spam, harass, or otherwise annoy other users
  • +
  • Don't try to access other users' private data
  • +
  • If you find a security issue, please let me know instead of exploiting it
  • +
+ +

Federation & ActivityPub

+

+ FitPub federates with other ActivityPub-compatible services: +

+
    +
  • When you post a public activity, it gets sent to your followers' servers
  • +
  • I have no control over what other servers do with your data once it's federated
  • +
  • I may block or limit federation with specific servers for any reason
  • +
  • Once data is federated, deleting it here doesn't guarantee deletion elsewhere
  • +
+ +

Open Source

+

+ FitPub is open source software. You can: +

+
    +
  • Review the code to see what it does
  • +
  • Run your own instance if you want more control
  • +
  • Contribute improvements if you're feeling generous
  • +
  • Fork it and make something better
  • +
+ +

Changes to These Terms

+

+ I may update these terms occasionally. I'll try to notify users of significant changes, + but let's be honest - you probably won't read them anyway. +

+ +

The Bottom Line

+

+ FitPub is a passion project that I'm sharing with the community. It's free to use, + but comes with no warranties or guarantees. If you need enterprise-grade reliability + and support, this probably isn't the right service for you. But if you're okay with + a scrappy, independent fitness tracking platform that federates with the open web, + then welcome aboard! +

+ +
+ + Questions or concerns? + Feel free to reach out, but remember - I'm just one person doing this in my spare time. + I'll help if I can, but I can't promise anything. +
+ + +
+
+
+
+
+
+ + diff --git a/src/test/java/net/javahippie/fitpub/FitPubApplicationTest.java b/src/test/java/net/javahippie/fitpub/FitPubApplicationTest.java new file mode 100644 index 0000000..e95717b --- /dev/null +++ b/src/test/java/net/javahippie/fitpub/FitPubApplicationTest.java @@ -0,0 +1,31 @@ +package net.javahippie.fitpub; + +import lombok.extern.slf4j.Slf4j; +import net.javahippie.fitpub.config.TestcontainersConfiguration; +import org.apache.hc.client5.http.classic.HttpClient; +import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; +import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder; +import org.apache.hc.client5.http.io.HttpClientConnectionManager; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.web.client.RestTemplate; + +/** + * Main Spring Boot application class for FitPub. + * FitPub is a federated fitness tracking platform that integrates with the Fediverse + * through the ActivityPub protocol. + */ +public class FitPubApplicationTest { + + public static void main(String[] args) { + SpringApplication + .from(FitPubApplication::main) + .with(TestcontainersConfiguration.class) + .run(args); + } + +} diff --git a/src/main/java/org/operaton/fitpub/config/DevDataInitializer.java b/src/test/java/net/javahippie/fitpub/config/DevDataInitializer.java similarity index 95% rename from src/main/java/org/operaton/fitpub/config/DevDataInitializer.java rename to src/test/java/net/javahippie/fitpub/config/DevDataInitializer.java index 13af4d2..caad971 100644 --- a/src/main/java/org/operaton/fitpub/config/DevDataInitializer.java +++ b/src/test/java/net/javahippie/fitpub/config/DevDataInitializer.java @@ -1,9 +1,9 @@ -package org.operaton.fitpub.config; +package net.javahippie.fitpub.config; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.UserRepository; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.UserRepository; import org.springframework.boot.CommandLineRunner; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/src/test/java/org/operaton/fitpub/config/TestcontainersConfiguration.java b/src/test/java/net/javahippie/fitpub/config/TestcontainersConfiguration.java similarity index 81% rename from src/test/java/org/operaton/fitpub/config/TestcontainersConfiguration.java rename to src/test/java/net/javahippie/fitpub/config/TestcontainersConfiguration.java index e92b199..74a67ac 100644 --- a/src/test/java/org/operaton/fitpub/config/TestcontainersConfiguration.java +++ b/src/test/java/net/javahippie/fitpub/config/TestcontainersConfiguration.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.config; +package net.javahippie.fitpub.config; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; @@ -15,6 +15,7 @@ public class TestcontainersConfiguration { /** * PostgreSQL container with PostGIS extension for tests. + * PostGIS image is treated as a standard PostgreSQL container. * @ServiceConnection automatically configures the datasource from this container. */ @Bean @@ -24,9 +25,8 @@ public class TestcontainersConfiguration { DockerImageName.parse("postgis/postgis:16-3.4") .asCompatibleSubstituteFor("postgres") ) - .withDatabaseName("fitpub") - .withUsername("fitpub") - .withPassword("fitpub") - .withReuse(true); + .withDatabaseName("testdb") + .withUsername("test") + .withPassword("test"); } } diff --git a/src/test/java/org/operaton/fitpub/controller/ActivityControllerIntegrationTest.java b/src/test/java/net/javahippie/fitpub/controller/ActivityControllerIntegrationTest.java similarity index 96% rename from src/test/java/org/operaton/fitpub/controller/ActivityControllerIntegrationTest.java rename to src/test/java/net/javahippie/fitpub/controller/ActivityControllerIntegrationTest.java index 47049de..e75900f 100644 --- a/src/test/java/org/operaton/fitpub/controller/ActivityControllerIntegrationTest.java +++ b/src/test/java/net/javahippie/fitpub/controller/ActivityControllerIntegrationTest.java @@ -1,16 +1,16 @@ -package org.operaton.fitpub.controller; +package net.javahippie.fitpub.controller; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.operaton.fitpub.model.dto.ActivityDTO; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.security.JwtTokenProvider; -import org.operaton.fitpub.config.TestcontainersConfiguration; +import net.javahippie.fitpub.model.dto.ActivityDTO; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.security.JwtTokenProvider; +import net.javahippie.fitpub.config.TestcontainersConfiguration; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; @@ -20,6 +20,7 @@ import org.springframework.mock.web.MockMultipartFile; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.web.servlet.MockMvc; import org.springframework.transaction.annotation.Transactional; +import org.testcontainers.junit.jupiter.Testcontainers; import java.math.BigDecimal; import java.nio.file.Files; @@ -37,7 +38,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. */ @SpringBootTest @AutoConfigureMockMvc -@ActiveProfiles("test") @Transactional @Import(TestcontainersConfiguration.class) class ActivityControllerIntegrationTest { diff --git a/src/test/java/org/operaton/fitpub/integration/FederationFollowFlowIntegrationTest.java b/src/test/java/net/javahippie/fitpub/integration/FederationFollowFlowIntegrationTest.java similarity index 96% rename from src/test/java/org/operaton/fitpub/integration/FederationFollowFlowIntegrationTest.java rename to src/test/java/net/javahippie/fitpub/integration/FederationFollowFlowIntegrationTest.java index c4bbbb0..cfbd7a8 100644 --- a/src/test/java/org/operaton/fitpub/integration/FederationFollowFlowIntegrationTest.java +++ b/src/test/java/net/javahippie/fitpub/integration/FederationFollowFlowIntegrationTest.java @@ -1,21 +1,23 @@ -package org.operaton.fitpub.integration; +package net.javahippie.fitpub.integration; import com.fasterxml.jackson.databind.ObjectMapper; +import net.javahippie.fitpub.config.TestcontainersConfiguration; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.operaton.fitpub.model.entity.Follow; -import org.operaton.fitpub.model.entity.RemoteActor; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.FollowRepository; -import org.operaton.fitpub.repository.RemoteActorRepository; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.security.JwtTokenProvider; +import net.javahippie.fitpub.model.entity.Follow; +import net.javahippie.fitpub.model.entity.RemoteActor; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.FollowRepository; +import net.javahippie.fitpub.repository.RemoteActorRepository; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.security.JwtTokenProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.test.context.ActiveProfiles; @@ -41,8 +43,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. */ @SpringBootTest @AutoConfigureMockMvc -@ActiveProfiles("test") @Transactional +@Import(TestcontainersConfiguration.class) class FederationFollowFlowIntegrationTest { @Autowired diff --git a/src/test/java/org/operaton/fitpub/security/DateFormatTest.java b/src/test/java/net/javahippie/fitpub/security/DateFormatTest.java similarity index 96% rename from src/test/java/org/operaton/fitpub/security/DateFormatTest.java rename to src/test/java/net/javahippie/fitpub/security/DateFormatTest.java index 9a125db..14091de 100644 --- a/src/test/java/org/operaton/fitpub/security/DateFormatTest.java +++ b/src/test/java/net/javahippie/fitpub/security/DateFormatTest.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.security; +package net.javahippie.fitpub.security; import org.junit.jupiter.api.Test; diff --git a/src/test/java/org/operaton/fitpub/security/KeyPairValidationTest.java b/src/test/java/net/javahippie/fitpub/security/KeyPairValidationTest.java similarity index 90% rename from src/test/java/org/operaton/fitpub/security/KeyPairValidationTest.java rename to src/test/java/net/javahippie/fitpub/security/KeyPairValidationTest.java index e8a30c4..676f4be 100644 --- a/src/test/java/org/operaton/fitpub/security/KeyPairValidationTest.java +++ b/src/test/java/net/javahippie/fitpub/security/KeyPairValidationTest.java @@ -1,14 +1,16 @@ -package org.operaton.fitpub.security; +package net.javahippie.fitpub.security; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import org.operaton.fitpub.config.TestcontainersConfiguration; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.UserRepository; +import net.javahippie.fitpub.config.TestcontainersConfiguration; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; +import org.springframework.transaction.annotation.Transactional; import java.nio.charset.StandardCharsets; import java.security.KeyFactory; @@ -28,9 +30,10 @@ import static org.junit.jupiter.api.Assertions.*; * Run manually when needed: mvn test -Dtest=KeyPairValidationTest */ @SpringBootTest +@AutoConfigureMockMvc +@Transactional @Import(TestcontainersConfiguration.class) @Slf4j -@Disabled("Integration test - requires live database with user data. Run manually when needed.") public class KeyPairValidationTest { @Autowired diff --git a/src/test/java/org/operaton/fitpub/service/AchievementServiceTest.java b/src/test/java/net/javahippie/fitpub/service/AchievementServiceTest.java similarity index 98% rename from src/test/java/org/operaton/fitpub/service/AchievementServiceTest.java rename to src/test/java/net/javahippie/fitpub/service/AchievementServiceTest.java index ca52705..e702fb3 100644 --- a/src/test/java/org/operaton/fitpub/service/AchievementServiceTest.java +++ b/src/test/java/net/javahippie/fitpub/service/AchievementServiceTest.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -7,14 +7,13 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.operaton.fitpub.model.entity.Achievement; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.ActivityMetrics; -import org.operaton.fitpub.repository.AchievementRepository; -import org.operaton.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.model.entity.Achievement; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.ActivityMetrics; +import net.javahippie.fitpub.repository.AchievementRepository; +import net.javahippie.fitpub.repository.ActivityRepository; import java.math.BigDecimal; -import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.util.List; diff --git a/src/test/java/org/operaton/fitpub/service/ActivityImageServiceTest.java b/src/test/java/net/javahippie/fitpub/service/ActivityImageServiceTest.java similarity index 94% rename from src/test/java/org/operaton/fitpub/service/ActivityImageServiceTest.java rename to src/test/java/net/javahippie/fitpub/service/ActivityImageServiceTest.java index b329f16..3c5d06b 100644 --- a/src/test/java/org/operaton/fitpub/service/ActivityImageServiceTest.java +++ b/src/test/java/net/javahippie/fitpub/service/ActivityImageServiceTest.java @@ -1,22 +1,21 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.DisplayName; -import org.operaton.fitpub.config.TestcontainersConfiguration; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.ActivityMetrics; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.util.FitParser; -import org.operaton.fitpub.util.ParsedActivityData; +import net.javahippie.fitpub.config.TestcontainersConfiguration; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.ActivityMetrics; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.util.FitParser; +import net.javahippie.fitpub.util.ParsedActivityData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; import org.springframework.test.context.ActiveProfiles; -import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; diff --git a/src/test/java/org/operaton/fitpub/service/ActivityPostProcessingServiceTest.java b/src/test/java/net/javahippie/fitpub/service/ActivityPostProcessingServiceTest.java similarity index 97% rename from src/test/java/org/operaton/fitpub/service/ActivityPostProcessingServiceTest.java rename to src/test/java/net/javahippie/fitpub/service/ActivityPostProcessingServiceTest.java index 1e95f55..08ef492 100644 --- a/src/test/java/org/operaton/fitpub/service/ActivityPostProcessingServiceTest.java +++ b/src/test/java/net/javahippie/fitpub/service/ActivityPostProcessingServiceTest.java @@ -1,6 +1,5 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; -import jakarta.persistence.EntityNotFoundException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -8,10 +7,10 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.UserRepository; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.UserRepository; import org.springframework.test.util.ReflectionTestUtils; import java.math.BigDecimal; @@ -19,7 +18,6 @@ import java.time.LocalDateTime; import java.util.Optional; import java.util.UUID; -import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.*; diff --git a/src/test/java/org/operaton/fitpub/service/FitFileServiceTest.java b/src/test/java/net/javahippie/fitpub/service/FitFileServiceTest.java similarity index 96% rename from src/test/java/org/operaton/fitpub/service/FitFileServiceTest.java rename to src/test/java/net/javahippie/fitpub/service/FitFileServiceTest.java index 5ec8c33..fdcad97 100644 --- a/src/test/java/org/operaton/fitpub/service/FitFileServiceTest.java +++ b/src/test/java/net/javahippie/fitpub/service/FitFileServiceTest.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; @@ -13,14 +13,14 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; import org.mockito.junit.jupiter.MockitoExtension; -import org.operaton.fitpub.exception.FitFileProcessingException; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.repository.ActivityMetricsRepository; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.util.FitFileValidator; -import org.operaton.fitpub.util.FitParser; -import org.operaton.fitpub.util.ParsedActivityData; -import org.operaton.fitpub.util.TrackSimplifier; +import net.javahippie.fitpub.exception.FitFileProcessingException; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.repository.ActivityMetricsRepository; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.util.FitFileValidator; +import net.javahippie.fitpub.util.FitParser; +import net.javahippie.fitpub.util.ParsedActivityData; +import net.javahippie.fitpub.util.TrackSimplifier; import org.springframework.mock.web.MockMultipartFile; import java.math.BigDecimal; @@ -378,7 +378,8 @@ class FitFileServiceTest { userId, "New Title", "New Description", - Activity.Visibility.PUBLIC + Activity.Visibility.PUBLIC, + false ); // Assert @@ -421,7 +422,8 @@ class FitFileServiceTest { userId, "New Title", "New Description", - Activity.Visibility.PUBLIC + Activity.Visibility.PUBLIC, + false ) ); @@ -450,7 +452,8 @@ class FitFileServiceTest { differentUserId, "Hacked Title", "Hacked Description", - Activity.Visibility.PUBLIC + Activity.Visibility.PUBLIC, + false ) ); @@ -492,7 +495,8 @@ class FitFileServiceTest { userId, "Updated Title", "Updated Description", - Activity.Visibility.PUBLIC + Activity.Visibility.PUBLIC, + false ); // Assert - verify updated fields diff --git a/src/test/java/org/operaton/fitpub/service/HeatmapGridServiceTest.java b/src/test/java/net/javahippie/fitpub/service/HeatmapGridServiceTest.java similarity index 94% rename from src/test/java/org/operaton/fitpub/service/HeatmapGridServiceTest.java rename to src/test/java/net/javahippie/fitpub/service/HeatmapGridServiceTest.java index 1ad0e57..3c84017 100644 --- a/src/test/java/org/operaton/fitpub/service/HeatmapGridServiceTest.java +++ b/src/test/java/net/javahippie/fitpub/service/HeatmapGridServiceTest.java @@ -1,21 +1,18 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.GeometryFactory; -import org.locationtech.jts.geom.Point; import org.locationtech.jts.geom.PrecisionModel; -import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.model.entity.UserHeatmapGrid; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.UserHeatmapGridRepository; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.model.entity.UserHeatmapGrid; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.UserHeatmapGridRepository; import java.util.*; diff --git a/src/test/java/org/operaton/fitpub/service/PersonalRecordServiceTest.java b/src/test/java/net/javahippie/fitpub/service/PersonalRecordServiceTest.java similarity index 98% rename from src/test/java/org/operaton/fitpub/service/PersonalRecordServiceTest.java rename to src/test/java/net/javahippie/fitpub/service/PersonalRecordServiceTest.java index 33fcd54..c789bee 100644 --- a/src/test/java/org/operaton/fitpub/service/PersonalRecordServiceTest.java +++ b/src/test/java/net/javahippie/fitpub/service/PersonalRecordServiceTest.java @@ -1,17 +1,16 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.ArgumentCaptor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.ActivityMetrics; -import org.operaton.fitpub.model.entity.PersonalRecord; -import org.operaton.fitpub.repository.PersonalRecordRepository; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.ActivityMetrics; +import net.javahippie.fitpub.model.entity.PersonalRecord; +import net.javahippie.fitpub.repository.PersonalRecordRepository; import java.math.BigDecimal; import java.time.LocalDateTime; diff --git a/src/test/java/org/operaton/fitpub/service/TimelineServiceTest.java b/src/test/java/net/javahippie/fitpub/service/TimelineServiceTest.java similarity index 57% rename from src/test/java/org/operaton/fitpub/service/TimelineServiceTest.java rename to src/test/java/net/javahippie/fitpub/service/TimelineServiceTest.java index d2f2479..59086fe 100644 --- a/src/test/java/org/operaton/fitpub/service/TimelineServiceTest.java +++ b/src/test/java/net/javahippie/fitpub/service/TimelineServiceTest.java @@ -1,5 +1,8 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; +import net.javahippie.fitpub.repository.CommentRepository; +import net.javahippie.fitpub.repository.LikeRepository; +import net.javahippie.fitpub.repository.RemoteActorRepository; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -7,20 +10,21 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.operaton.fitpub.model.dto.TimelineActivityDTO; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.Follow; -import org.operaton.fitpub.model.entity.RemoteActivity; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.FollowRepository; -import org.operaton.fitpub.repository.RemoteActivityRepository; -import org.operaton.fitpub.repository.UserRepository; +import net.javahippie.fitpub.model.dto.TimelineActivityDTO; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.Follow; +import net.javahippie.fitpub.model.entity.RemoteActivity; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.FollowRepository; +import net.javahippie.fitpub.repository.RemoteActivityRepository; +import net.javahippie.fitpub.repository.UserRepository; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDateTime; import java.util.ArrayList; @@ -54,13 +58,16 @@ class TimelineServiceTest { private UserRepository userRepository; @Mock - private org.operaton.fitpub.repository.LikeRepository likeRepository; + private LikeRepository likeRepository; @Mock - private org.operaton.fitpub.repository.CommentRepository commentRepository; + private CommentRepository commentRepository; @Mock - private org.operaton.fitpub.repository.RemoteActorRepository remoteActorRepository; + private RemoteActorRepository remoteActorRepository; + + @Mock + private TimelineResultMapper timelineResultMapper; @InjectMocks private TimelineService timelineService; @@ -93,15 +100,20 @@ class TimelineServiceTest { .thenReturn(follows); when(userRepository.findById(userId)).thenReturn(Optional.of(testUser)); - // Mock local activities - List localActivities = List.of( - createLocalActivity("Morning Run", LocalDateTime.now().minusHours(2)) - ); - Page localActivitiesPage = new PageImpl<>(localActivities); - when(activityRepository.findByUserIdInAndVisibilityInOrderByStartedAtDesc( - anyList(), anyList(), any(Pageable.class))) + // Mock local activities using Object[] (as returned by native query) + Object[] row1 = createTimelineRow("Morning Run", LocalDateTime.now().minusHours(2)); + List localActivityRows = new ArrayList<>(); + localActivityRows.add(row1); + Page localActivitiesPage = new PageImpl<>(localActivityRows); + when(activityRepository.findFederatedTimelineWithStats( + anyList(), anyList(), eq(userId), any(Pageable.class))) .thenReturn(localActivitiesPage); + // Mock the mapper + TimelineActivityDTO dto1 = createTimelineDTO("Morning Run", LocalDateTime.now().minusHours(2)); + when(timelineResultMapper.mapToTimelineActivityDTO(any(Object[].class))) + .thenReturn(dto1); + // Mock remote activities - this should use publishedAt for sorting List remoteActivities = List.of( createRemoteActivity("Remote Run 1", Instant.now().minusSeconds(3600)), @@ -124,8 +136,8 @@ class TimelineServiceTest { assertFalse(result.isEmpty(), "Result should contain activities"); // Verify that both repositories were called - verify(activityRepository).findByUserIdInAndVisibilityInOrderByStartedAtDesc( - anyList(), anyList(), any(Pageable.class)); + verify(activityRepository).findFederatedTimelineWithStats( + anyList(), anyList(), eq(userId), any(Pageable.class)); verify(remoteActivityRepository).findByRemoteActorUriInAndVisibilityIn( anyList(), anyList(), any(Pageable.class)); } @@ -139,14 +151,19 @@ class TimelineServiceTest { when(userRepository.findById(userId)).thenReturn(Optional.of(testUser)); // Mock local activities only - List localActivities = List.of( - createLocalActivity("Solo Run", LocalDateTime.now()) - ); - Page localActivitiesPage = new PageImpl<>(localActivities); - when(activityRepository.findByUserIdInAndVisibilityInOrderByStartedAtDesc( - anyList(), anyList(), any(Pageable.class))) + Object[] row1 = createTimelineRow("Solo Run", LocalDateTime.now()); + List localActivityRows = new ArrayList<>(); + localActivityRows.add(row1); + Page localActivitiesPage = new PageImpl<>(localActivityRows); + when(activityRepository.findFederatedTimelineWithStats( + anyList(), anyList(), eq(userId), any(Pageable.class))) .thenReturn(localActivitiesPage); + // Mock the mapper + TimelineActivityDTO dto1 = createTimelineDTO("Solo Run", LocalDateTime.now()); + when(timelineResultMapper.mapToTimelineActivityDTO(any(Object[].class))) + .thenReturn(dto1); + Pageable pageable = PageRequest.of(0, 20); // When @@ -173,12 +190,19 @@ class TimelineServiceTest { when(userRepository.findById(userId)).thenReturn(Optional.of(testUser)); // Local activity - Activity localActivity = createLocalActivity("Local Run", LocalDateTime.now().minusHours(1)); - Page localActivitiesPage = new PageImpl<>(List.of(localActivity)); - when(activityRepository.findByUserIdInAndVisibilityInOrderByStartedAtDesc( - anyList(), anyList(), any(Pageable.class))) + Object[] row1 = createTimelineRow("Local Run", LocalDateTime.now().minusHours(1)); + List localActivityRows = new ArrayList<>(); + localActivityRows.add(row1); + Page localActivitiesPage = new PageImpl<>(localActivityRows); + when(activityRepository.findFederatedTimelineWithStats( + anyList(), anyList(), eq(userId), any(Pageable.class))) .thenReturn(localActivitiesPage); + // Mock the mapper + TimelineActivityDTO dto1 = createTimelineDTO("Local Run", LocalDateTime.now().minusHours(1)); + when(timelineResultMapper.mapToTimelineActivityDTO(any(Object[].class))) + .thenReturn(dto1); + // Remote activity RemoteActivity remoteActivity = createRemoteActivity("Remote Run", Instant.now().minusSeconds(7200)); Page remoteActivitiesPage = new PageImpl<>(List.of(remoteActivity)); @@ -210,18 +234,48 @@ class TimelineServiceTest { return follow; } - private Activity createLocalActivity(String title, LocalDateTime startedAt) { - Activity activity = new Activity(); - activity.setId(UUID.randomUUID()); - activity.setUserId(userId); - activity.setTitle(title); - activity.setDescription("Test activity"); - activity.setActivityType(Activity.ActivityType.RUN); - activity.setStartedAt(startedAt); - activity.setVisibility(Activity.Visibility.PUBLIC); - activity.setTotalDistance(java.math.BigDecimal.valueOf(5000)); - activity.setTotalDurationSeconds(1800L); - return activity; + /** + * Creates an Object[] representing a row from the native query. + * The structure matches what TimelineResultMapper expects. + */ + private Object[] createTimelineRow(String title, LocalDateTime startedAt) { + UUID activityId = UUID.randomUUID(); + return new Object[]{ + activityId, // 0: activity_id + userId, // 1: user_id + "testuser", // 2: username + "Test User", // 3: display_name + null, // 4: avatar_url + title, // 5: title + "Test activity", // 6: description + "RUN", // 7: activity_type + startedAt, // 8: started_at + "PUBLIC", // 9: visibility + BigDecimal.valueOf(5000), // 10: total_distance + 1800L, // 11: total_duration_seconds + BigDecimal.valueOf(100), // 12: elevation_gain + 0L, // 13: likes_count + 0L // 14: comments_count + }; + } + + private TimelineActivityDTO createTimelineDTO(String title, LocalDateTime startedAt) { + return TimelineActivityDTO.builder() + .id(UUID.randomUUID()) + .username("testuser") + .displayName("Test User") + .title(title) + .description("Test activity") + .activityType("RUN") + .startedAt(startedAt) + .visibility("PUBLIC") + .totalDistance(5000.0) + .totalDurationSeconds(1800L) + .elevationGain(100.0) + .likesCount(0L) + .commentsCount(0L) + .isLocal(true) + .build(); } private RemoteActivity createRemoteActivity(String title, Instant publishedAt) { diff --git a/src/test/java/org/operaton/fitpub/service/TrainingLoadServiceTest.java b/src/test/java/net/javahippie/fitpub/service/TrainingLoadServiceTest.java similarity index 98% rename from src/test/java/org/operaton/fitpub/service/TrainingLoadServiceTest.java rename to src/test/java/net/javahippie/fitpub/service/TrainingLoadServiceTest.java index 8ac7214..224a32b 100644 --- a/src/test/java/org/operaton/fitpub/service/TrainingLoadServiceTest.java +++ b/src/test/java/net/javahippie/fitpub/service/TrainingLoadServiceTest.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -8,14 +8,13 @@ import org.mockito.ArgumentCaptor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.TrainingLoad; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.TrainingLoadRepository; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.TrainingLoad; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.TrainingLoadRepository; import java.math.BigDecimal; import java.time.LocalDate; -import java.time.LocalDateTime; import java.util.Arrays; import java.util.List; import java.util.Optional; diff --git a/src/test/java/org/operaton/fitpub/service/UserServiceTest.java b/src/test/java/net/javahippie/fitpub/service/UserServiceTest.java similarity index 97% rename from src/test/java/org/operaton/fitpub/service/UserServiceTest.java rename to src/test/java/net/javahippie/fitpub/service/UserServiceTest.java index b6acde8..118d83c 100644 --- a/src/test/java/org/operaton/fitpub/service/UserServiceTest.java +++ b/src/test/java/net/javahippie/fitpub/service/UserServiceTest.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -7,10 +7,10 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.FollowRepository; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.security.JwtTokenProvider; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.FollowRepository; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.security.JwtTokenProvider; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.test.util.ReflectionTestUtils; diff --git a/src/test/java/org/operaton/fitpub/service/WeatherServiceTest.java b/src/test/java/net/javahippie/fitpub/service/WeatherServiceTest.java similarity index 98% rename from src/test/java/org/operaton/fitpub/service/WeatherServiceTest.java rename to src/test/java/net/javahippie/fitpub/service/WeatherServiceTest.java index 81fd561..73afcdd 100644 --- a/src/test/java/org/operaton/fitpub/service/WeatherServiceTest.java +++ b/src/test/java/net/javahippie/fitpub/service/WeatherServiceTest.java @@ -1,18 +1,17 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.ArgumentCaptor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; import org.mockito.junit.jupiter.MockitoExtension; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.WeatherData; -import org.operaton.fitpub.repository.WeatherDataRepository; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.WeatherData; +import net.javahippie.fitpub.repository.WeatherDataRepository; import org.springframework.test.util.ReflectionTestUtils; import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.ResourceAccessException; diff --git a/src/test/java/org/operaton/fitpub/service/WebFingerClientTest.java b/src/test/java/net/javahippie/fitpub/service/WebFingerClientTest.java similarity index 99% rename from src/test/java/org/operaton/fitpub/service/WebFingerClientTest.java rename to src/test/java/net/javahippie/fitpub/service/WebFingerClientTest.java index 8e1d8b6..0faeb0f 100644 --- a/src/test/java/org/operaton/fitpub/service/WebFingerClientTest.java +++ b/src/test/java/net/javahippie/fitpub/service/WebFingerClientTest.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.service; +package net.javahippie.fitpub.service; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.BeforeEach; diff --git a/src/test/java/org/operaton/fitpub/util/DatePersistenceTest.java b/src/test/java/net/javahippie/fitpub/util/DatePersistenceTest.java similarity index 96% rename from src/test/java/org/operaton/fitpub/util/DatePersistenceTest.java rename to src/test/java/net/javahippie/fitpub/util/DatePersistenceTest.java index 51f6d07..27f894e 100644 --- a/src/test/java/org/operaton/fitpub/util/DatePersistenceTest.java +++ b/src/test/java/net/javahippie/fitpub/util/DatePersistenceTest.java @@ -1,18 +1,20 @@ -package org.operaton.fitpub.util; +package net.javahippie.fitpub.util; import lombok.extern.slf4j.Slf4j; +import net.javahippie.fitpub.config.TestcontainersConfiguration; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.DisplayName; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; import org.springframework.mock.web.MockMultipartFile; import org.springframework.test.context.ActiveProfiles; import org.springframework.transaction.annotation.Transactional; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.model.entity.User; -import org.operaton.fitpub.repository.ActivityRepository; -import org.operaton.fitpub.repository.UserRepository; -import org.operaton.fitpub.service.ActivityFileService; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.User; +import net.javahippie.fitpub.repository.ActivityRepository; +import net.javahippie.fitpub.repository.UserRepository; +import net.javahippie.fitpub.service.ActivityFileService; import java.io.IOException; import java.io.InputStream; @@ -29,6 +31,7 @@ import static org.junit.jupiter.api.Assertions.*; */ @SpringBootTest @ActiveProfiles("test") +@Import(TestcontainersConfiguration.class) @Slf4j @Transactional class DatePersistenceTest { diff --git a/src/test/java/org/operaton/fitpub/util/FitFileAnalyzer.java b/src/test/java/net/javahippie/fitpub/util/FitFileAnalyzer.java similarity index 99% rename from src/test/java/org/operaton/fitpub/util/FitFileAnalyzer.java rename to src/test/java/net/javahippie/fitpub/util/FitFileAnalyzer.java index f1a3f3f..c1ac9a4 100644 --- a/src/test/java/org/operaton/fitpub/util/FitFileAnalyzer.java +++ b/src/test/java/net/javahippie/fitpub/util/FitFileAnalyzer.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.util; +package net.javahippie.fitpub.util; import com.garmin.fit.*; import java.io.FileInputStream; diff --git a/src/test/java/org/operaton/fitpub/util/FitFileValidatorTest.java b/src/test/java/net/javahippie/fitpub/util/FitFileValidatorTest.java similarity index 98% rename from src/test/java/org/operaton/fitpub/util/FitFileValidatorTest.java rename to src/test/java/net/javahippie/fitpub/util/FitFileValidatorTest.java index 3074bee..3430362 100644 --- a/src/test/java/org/operaton/fitpub/util/FitFileValidatorTest.java +++ b/src/test/java/net/javahippie/fitpub/util/FitFileValidatorTest.java @@ -1,9 +1,9 @@ -package org.operaton.fitpub.util; +package net.javahippie.fitpub.util; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.DisplayName; -import org.operaton.fitpub.exception.InvalidFitFileException; +import net.javahippie.fitpub.exception.InvalidFitFileException; import java.io.ByteArrayInputStream; import java.io.IOException; diff --git a/src/test/java/org/operaton/fitpub/util/FitParserIntegrationTest.java b/src/test/java/net/javahippie/fitpub/util/FitParserIntegrationTest.java similarity index 99% rename from src/test/java/org/operaton/fitpub/util/FitParserIntegrationTest.java rename to src/test/java/net/javahippie/fitpub/util/FitParserIntegrationTest.java index f18c408..6cccd30 100644 --- a/src/test/java/org/operaton/fitpub/util/FitParserIntegrationTest.java +++ b/src/test/java/net/javahippie/fitpub/util/FitParserIntegrationTest.java @@ -1,10 +1,10 @@ -package org.operaton.fitpub.util; +package net.javahippie.fitpub.util; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.DisplayName; -import org.operaton.fitpub.model.entity.Activity; +import net.javahippie.fitpub.model.entity.Activity; import java.io.IOException; import java.io.InputStream; diff --git a/src/test/java/org/operaton/fitpub/util/GpxParserIntegrationTest.java b/src/test/java/net/javahippie/fitpub/util/GpxParserIntegrationTest.java similarity index 98% rename from src/test/java/org/operaton/fitpub/util/GpxParserIntegrationTest.java rename to src/test/java/net/javahippie/fitpub/util/GpxParserIntegrationTest.java index ad270df..55ab855 100644 --- a/src/test/java/org/operaton/fitpub/util/GpxParserIntegrationTest.java +++ b/src/test/java/net/javahippie/fitpub/util/GpxParserIntegrationTest.java @@ -1,12 +1,12 @@ -package org.operaton.fitpub.util; +package net.javahippie.fitpub.util; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.DisplayName; -import org.operaton.fitpub.model.entity.Activity; -import org.operaton.fitpub.util.ParsedActivityData.TrackPointData; -import org.operaton.fitpub.util.ParsedActivityData.ActivityMetricsData; +import net.javahippie.fitpub.model.entity.Activity; +import net.javahippie.fitpub.util.ParsedActivityData.TrackPointData; +import net.javahippie.fitpub.util.ParsedActivityData.ActivityMetricsData; import java.io.IOException; import java.io.InputStream; diff --git a/src/test/java/org/operaton/fitpub/util/TestFitFileGenerator.java b/src/test/java/net/javahippie/fitpub/util/TestFitFileGenerator.java similarity index 98% rename from src/test/java/org/operaton/fitpub/util/TestFitFileGenerator.java rename to src/test/java/net/javahippie/fitpub/util/TestFitFileGenerator.java index cf15fc8..a5cb82c 100644 --- a/src/test/java/org/operaton/fitpub/util/TestFitFileGenerator.java +++ b/src/test/java/net/javahippie/fitpub/util/TestFitFileGenerator.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.util; +package net.javahippie.fitpub.util; import java.io.ByteArrayOutputStream; import java.io.IOException; diff --git a/src/test/java/org/operaton/fitpub/util/TimestampDebuggingTest.java b/src/test/java/net/javahippie/fitpub/util/TimestampDebuggingTest.java similarity index 99% rename from src/test/java/org/operaton/fitpub/util/TimestampDebuggingTest.java rename to src/test/java/net/javahippie/fitpub/util/TimestampDebuggingTest.java index b2bdb23..6b60127 100644 --- a/src/test/java/org/operaton/fitpub/util/TimestampDebuggingTest.java +++ b/src/test/java/net/javahippie/fitpub/util/TimestampDebuggingTest.java @@ -1,4 +1,4 @@ -package org.operaton.fitpub.util; +package net.javahippie.fitpub.util; import com.garmin.fit.*; import lombok.extern.slf4j.Slf4j; @@ -13,7 +13,6 @@ import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter; import static org.junit.jupiter.api.Assertions.*; diff --git a/src/test/resources/application-test.yml b/src/test/resources/application-test.yml index 8df8581..016bd71 100644 --- a/src/test/resources/application-test.yml +++ b/src/test/resources/application-test.yml @@ -2,11 +2,15 @@ spring: application: name: fitpub-test - # Testcontainers will automatically configure the datasource - datasource: - driver-class-name: org.testcontainers.jdbc.ContainerDatabaseDriver - url: jdbc:tc:postgis:13-3.1:///testdb?TC_INITSCRIPT=file:src/test/resources/init-test-db.sql + # Datasource automatically configured via @ServiceConnection in TestcontainersConfiguration + # The PostgreSQL container with PostGIS is started as a standard PostgreSQL container + datasource: + # For dev: Start PostgreSQL with: docker run -d --name fitpub-postgres -p 5432:5432 -e POSTGRES_DB=fitpub -e POSTGRES_USER=fitpub -e POSTGRES_PASSWORD=change_me_in_production postgis/postgis:16-3.4 + url: ${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/fitpub} + username: ${SPRING_DATASOURCE_USERNAME:fitpub} + password: ${SPRING_DATASOURCE_PASSWORD:change_me_in_production} + driver-class-name: org.postgresql.Driver jpa: hibernate: ddl-auto: validate @@ -46,7 +50,7 @@ fitpub: logging: level: - org.operaton.fitpub: DEBUG + net.javahippie.fitpub: DEBUG org.springframework: WARN org.hibernate: WARN org.testcontainers: INFO