package de.learny;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import de.learny.dataaccess.AccountRepository;
import de.learny.dataaccess.AnswerRepository;
import de.learny.dataaccess.QuestionRepository;
import de.learny.dataaccess.RoleRepository;
import de.learny.dataaccess.SubjectRepository;
import de.learny.dataaccess.TestRepository;
import de.learny.domain.Account;
import de.learny.domain.Answer;
import de.learny.domain.Question;
import de.learny.domain.Role;
import de.learny.domain.Subject;
import de.learny.domain.Test;
import de.learny.security.service.PasswordGeneratorService;
import de.learny.swagger.SwaggerConfig;
/**
* Acts as a servlet initializer and start class.
*
* @author andi
*/
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer implements CommandLineRunner {
@Autowired
AccountRepository accountRepo;
@Autowired
RoleRepository roleRepo;
@Autowired
TestRepository testRepo;
@Autowired
SubjectRepository subjectRepo;
@Autowired
QuestionRepository questionRepo;
@Autowired
PasswordGeneratorService passwordGenerator;
@Autowired
AnswerRepository answerRepo;
@Autowired
private Environment environment;
@Autowired
private SwaggerConfig swaggerConfig;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... strings) throws Exception {
String[] envVars = environment.getActiveProfiles();
if (!(envVars.length > 0 && envVars[0].equals("demo"))) {
Role adminRole = new Role("admin");
Role dozentRole = new Role("dozent");
Role userRole = new Role("user");
roleRepo.save(adminRole);
roleRepo.save(dozentRole);
roleRepo.save(userRole);
Subject sub1 = new Subject("Fach1");
Subject sub2 = new Subject("Fach2");
subjectRepo.save(sub1);
subjectRepo.save(sub2);
Test test1 = new Test("test1", sub1);
Test test3 = new Test("test3", sub1);
Test test2 = new Test("test2", sub2);
testRepo.save(test1);
testRepo.save(test3);
testRepo.save(test2);
Question quest1 = new Question("frage1", test1);
questionRepo.save(quest1);
Answer answer1 = new Answer("antwort1", quest1, true);
Answer answer2 = new Answer("antwort2", quest1, false);
answerRepo.save(answer1);
answerRepo.save(answer2);
Question quest2 = new Question("frage2", test3);
questionRepo.save(quest2);
Answer answer3 = new Answer("antwort3", quest2, true);
Answer answer4 = new Answer("antwort4", quest2, false);
answerRepo.save(answer3);
answerRepo.save(answer4);
Account student = new Account("student", passwordGenerator.hashPassword("student"));
student.setFirstname("Conrad");
student.setLastname("Reuter");
student.setEmail("a@rtline.de");
Account admin = new Account("admin", passwordGenerator.hashPassword("admin"));
admin.setFirstname("Andreas");
admin.setLastname("Roth");
admin.setEmail("andreas.roth@rtline.de");
Account dozent = new Account("dozent", passwordGenerator.hashPassword("dozent"));
dozent.setFirstname("Martin");
dozent.setLastname("Burwitz");
dozent.setEmail("art_martinburwitz@rtline.de");
student.addRole(userRole);
admin.addRole(adminRole);
dozent.addRole(dozentRole);
accountRepo.save(admin);
accountRepo.save(student);
accountRepo.save(dozent);
sub1.addAccountInCharge(dozent);
subjectRepo.save(sub1);
student.addJoinedSubject(sub1);
accountRepo.save(student);
}
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}