Projekt

Obecné

Profil

Stáhnout (3.68 KB) Statistiky
| Větev: | Tag: | Revize:
1
package cz.zcu.kiv.backendapi.config;
2

    
3
import cz.zcu.kiv.backendapi.catalog.CatalogItem;
4
import cz.zcu.kiv.backendapi.catalog.CatalogItemRepository;
5
import cz.zcu.kiv.backendapi.catalog.ICatalogItemService;
6
import cz.zcu.kiv.backendapi.titlepage.ITitlePageService;
7
import cz.zcu.kiv.backendapi.titlepage.TitlePage;
8
import cz.zcu.kiv.backendapi.type.ITypeService;
9
import cz.zcu.kiv.backendapi.type.Type;
10
import cz.zcu.kiv.backendapi.user.UserEntity;
11
import cz.zcu.kiv.backendapi.user.UserRepository;
12
import lombok.RequiredArgsConstructor;
13
import org.apache.commons.csv.CSVFormat;
14
import org.apache.commons.csv.CSVParser;
15
import org.apache.commons.csv.CSVRecord;
16
import org.springframework.context.ApplicationListener;
17
import org.springframework.context.event.ContextRefreshedEvent;
18
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
19
import org.springframework.stereotype.Component;
20
import org.springframework.transaction.annotation.Transactional;
21

    
22
import java.io.File;
23
import java.io.IOException;
24
import java.io.InputStream;
25
import java.nio.charset.Charset;
26
import java.nio.charset.StandardCharsets;
27
import java.util.ArrayList;
28
import java.util.List;
29

    
30
//TODO comment or delete
31
@Component
32
@RequiredArgsConstructor
33
public class DataInitiator implements ApplicationListener<ContextRefreshedEvent> {
34

    
35
    private final ICatalogItemService catalogService;
36

    
37
    private final ITypeService typeService;
38

    
39
    private final CatalogItemRepository catalogItemRepository;
40

    
41
    private final UserRepository userRepository;
42

    
43
    private final ITitlePageService titlePageService;
44

    
45
    private final BCryptPasswordEncoder encoder;
46

    
47
    @Override
48
    @Transactional
49
    public void onApplicationEvent(ContextRefreshedEvent event) {
50
        List<Type> types = loadTypes();
51
        for (Type type : types) {
52
            typeService.saveType(type);
53
        }
54
        List<CatalogItem> catalog = loadCatalog();
55
        catalogService.saveCatalog(catalog);
56

    
57
        titlePageService.updateTitlePage(new TitlePage(1L, "", ""));
58

    
59
        UserEntity user1 = new UserEntity("admin", "admin", encoder.encode("password"), (byte) 7, true);
60
        userRepository.save(user1);
61

    
62
        UserEntity user2 = new UserEntity("normal", "normal", encoder.encode("password"), (byte) 1, false);
63
        userRepository.save(user2);
64

    
65
    }
66

    
67
    private List<CatalogItem> loadCatalog() {
68
        List<CatalogItem> catalogEntities = new ArrayList<>();
69
        InputStream csvData = getClass().getClassLoader().getResourceAsStream("22-05-09-AssyrianProject-AllNoDupl.csv");
70
//        File csvData = new File("AssyrianProject-AllNoDupl-22-03-28.csv");
71
        CSVParser parser;
72
        try {
73
            parser = CSVParser.parse(csvData, StandardCharsets.UTF_8, CSVFormat.Builder.create(CSVFormat.DEFAULT)
74
                    .setHeader()
75
                    .setSkipHeaderRecord(true)
76
                    .build());
77
            for (CSVRecord csvRecord : parser) {
78
                catalogEntities.add(new CatalogItem(csvRecord.toList()));
79
            }
80
        } catch (IOException e) {
81
            e.printStackTrace();
82
        }
83
        return catalogEntities;
84

    
85
    }
86

    
87
    private List<Type> loadTypes() {
88
        List<Type> types = new ArrayList<>();
89
        CSVParser parser;
90
        File csvData = new File("AssyrianProject-All.csv");
91
        try {
92
            parser = CSVParser.parse(csvData, Charset.defaultCharset(), CSVFormat.DEFAULT.builder().setSkipHeaderRecord(true).build());
93
            for (CSVRecord csvRecord : parser) {
94
                if (csvRecord.get(0).equals("10000")) {
95
                    types.add(new Type(csvRecord.get(2)));
96
                }
97
            }
98
        } catch (IOException e) {
99
            e.printStackTrace();
100
        }
101
        return types;
102
    }
103
}
(2-2/2)