backend/buisnesslogic/src/main/java/com/plannaplan/services/ConfiguratorService.java

86 lines
2.4 KiB
Java
Raw Normal View History

package com.plannaplan.services;
import com.plannaplan.models.ConfigData;
2020-08-04 17:30:03 +02:00
import com.plannaplan.models.FileData;
import com.plannaplan.models.TourData;
2020-12-11 18:08:23 +01:00
import com.plannaplan.repositories.AppConfigRepository;
2020-08-04 17:30:03 +02:00
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.InputStream;
2020-12-11 18:08:23 +01:00
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
2020-08-04 17:30:03 +02:00
import com.plannaplan.configutils.*;
2020-12-09 16:43:29 +01:00
import com.plannaplan.entities.AppConfig;
2020-08-04 17:30:03 +02:00
2020-11-20 13:20:44 +01:00
/**
2020-12-09 16:43:29 +01:00
* FileReader is used for reading xls file from input stream.
2020-11-20 13:20:44 +01:00
*/
2020-08-04 17:30:03 +02:00
@Component
public class ConfiguratorService {
2020-08-04 17:30:03 +02:00
@Autowired
2020-09-25 16:43:24 +02:00
private FileToDatabaseMigrator migrator;
2020-12-09 16:43:29 +01:00
@Autowired
2020-12-11 18:08:23 +01:00
private AppConfigRepository configRepo;
2020-08-06 14:32:41 +02:00
public ConfiguratorService() {
}
2020-12-09 16:43:29 +01:00
/**
* methoid to config system
*
2020-12-12 13:33:11 +01:00
* @param data ConfigData containng system configs
2020-12-09 16:43:29 +01:00
*/
public void config(ConfigData data) {
2020-08-04 17:30:03 +02:00
FileReader reader = new FileReader(data.getFilestream());
FileData coursesData = reader.read();
2020-12-11 18:08:23 +01:00
this.configRepo.save(new AppConfig(data.getFirstTour(), data.getSecondTour()));
migrator.migrate(coursesData);
}
/**
* Save tours to DataBase
* @param firstTour First tour period.
* @param secondTour Second tour period.
*/
public void saveTours(TourData firstTour, TourData secondTour) {
this.configRepo.save(new AppConfig(firstTour, secondTour));
}
2020-12-11 18:08:23 +01:00
/**
* current config getter
*
* @return AppConfig with newest config_date
*/
public AppConfig getCurrentConfig() {
final List<AppConfig> repsonse = this.configRepo.findAll().stream().sorted(new Comparator<AppConfig>() {
@Override
public int compare(AppConfig i1, AppConfig i2) {
if (i1.getConfigDate().after(i2.getConfigDate())) {
return -1;
}
if (i1.getConfigDate().before(i2.getConfigDate())) {
return 1;
}
return 0;
}
}).collect(Collectors.toList());
return repsonse.get(0);
}
/**
*
* @param inputStream This input stream contains new courses to import.
*/
public void importCoursesStream(InputStream inputStream) {
FileReader reader = new FileReader(inputStream);
FileData coursesData = reader.read();
migrator.migrate(coursesData);
}
}