@Override public HybridRecommendationModel buildRecommendationModel( DatasetLoader<? extends Rating> datasetLoader) throws CannotLoadRatingsDataset, CannotLoadContentDataset, CannotLoadUsersDataset { ContentBasedRecommender<Object, Object> contentBasedAlgorithm = (ContentBasedRecommender<Object, Object>) getParameterValue(CONTENT_BASED_TECHNIQUE); RecommendationModelBuildingProgressListener contentBasedListener = (String actualJob, int percent, long remainingSeconds) -> { ContentWeightCollaborative.this.fireBuildingProgressChangedEvent( actualJob, percent / 2, -1); }; contentBasedAlgorithm.addRecommendationModelBuildingProgressListener(contentBasedListener); Object contentBasedModel = contentBasedAlgorithm.buildRecommendationModel(datasetLoader); CollaborativeRecommender collaborativeFilteringTechnique = (CollaborativeRecommender) getParameterValue(COLLABORATIVE_TECHNIQUE); RecommendationModelBuildingProgressListener collaborativeListener = (String actualJob, int percent, long remainingSeconds) -> { ContentWeightCollaborative.this.fireBuildingProgressChangedEvent( actualJob, percent / 2 + 50, -1); }; collaborativeFilteringTechnique.addRecommendationModelBuildingProgressListener( collaborativeListener); Object collaborativeModel = collaborativeFilteringTechnique.buildRecommendationModel(datasetLoader); return new HybridRecommendationModel(contentBasedModel, collaborativeModel); }