LOGGER.info("Creating internal feed for manual mediation with id: " + mediationId);
final String FRONTEND_HOST = "hirubila.appspot.com";
//LOGGER.info("referer: " + referer);
// Create a new CronTaskReport
Provider provider = null;
CronTaskReport report = cronTaskReportService.create();
report.setObject_id(mediationId);
report.setDate(new Date());
report.setType(CronTaskReport.TYPE.INTERNAL_FEED);
try {
// Start the process
provider = providerService.getProviderByMediationService(mediationId, null);
MediationService mediationService = mediatorService.getMediationService(mediationId, null);
LOGGER.info("Mediation name: " + mediationService.getName());
//Set report description
report.setDescription(new StringBuffer("Internal feed para Srv. mediacion: ").append(mediationService.getName()).toString());
if(!mediationService.getHasFeed() && provider != null) { // All must be manual mediator, but it's another check.
FeedSchools feedSchools = internalFeedService.createFeedSchools(FRONTEND_HOST, provider, mediationService);
internalFeedService.saveFeedSchools(feedSchools);
HashMap<Long, ExtendedSchool> schools = new HashMap<Long, ExtendedSchool>();
Collection<ExtendedCourse> courses =
extendedCourseService.getCoursesByOwner(mediationService.getId(), null, null);
for(ExtendedCourse course : courses) {
ExtendedSchool school = extendedSchoolService.getSchool(course.getSchool(), Locale.getDefault());
if(school != null) schools.put(school.getId(), school);
}
for(ExtendedSchool school : schools.values()) {
FeedCourses feedCourse = internalFeedService.createFeedCourses(FRONTEND_HOST,
provider, mediationService, school, this.getAvailableLanguages());
internalFeedService.saveFeedCourses(feedCourse);
}
// Set result into report
report.setResult("OK");
// Invoke to update this provider information.
if(provider != null) {
Map<String, String> params = new HashMap<String, String>();
params.put("providerId", String.valueOf(provider.getId()));
params.put("manual", "true");
worker.addWork("provider", "/task/provider/feed", params);
}
}