86 lines
2.4 KiB
Java
Executable File
86 lines
2.4 KiB
Java
Executable File
package com.plannaplan.services;
|
|
|
|
import com.plannaplan.models.ConfigData;
|
|
import com.plannaplan.models.FileData;
|
|
import com.plannaplan.models.TourData;
|
|
import com.plannaplan.repositories.AppConfigRepository;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.io.InputStream;
|
|
import java.util.Comparator;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
import com.plannaplan.configutils.*;
|
|
import com.plannaplan.entities.AppConfig;
|
|
|
|
/**
|
|
* FileReader is used for reading xls file from input stream.
|
|
*/
|
|
@Component
|
|
public class ConfiguratorService {
|
|
|
|
@Autowired
|
|
private FileToDatabaseMigrator migrator;
|
|
@Autowired
|
|
private AppConfigRepository configRepo;
|
|
|
|
public ConfiguratorService() {
|
|
}
|
|
|
|
/**
|
|
* methoid to config system
|
|
*
|
|
* @param data ConfigData containng system configs
|
|
*/
|
|
public void config(ConfigData data) {
|
|
FileReader reader = new FileReader(data.getFilestream());
|
|
FileData coursesData = reader.read();
|
|
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));
|
|
}
|
|
|
|
/**
|
|
* 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);
|
|
}
|
|
} |