Projekt

Obecné

Profil

Stáhnout (3.88 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.sources.ISourcesService;
7
import cz.zcu.kiv.backendapi.sources.Sources;
8
import cz.zcu.kiv.backendapi.titlepage.ITitlePageService;
9
import cz.zcu.kiv.backendapi.titlepage.TitlePage;
10
import cz.zcu.kiv.backendapi.type.ITypeService;
11
import cz.zcu.kiv.backendapi.type.Type;
12
import cz.zcu.kiv.backendapi.user.UserEntity;
13
import cz.zcu.kiv.backendapi.user.UserRepository;
14
import lombok.RequiredArgsConstructor;
15
import org.apache.commons.csv.CSVFormat;
16
import org.apache.commons.csv.CSVParser;
17
import org.apache.commons.csv.CSVRecord;
18
import org.springframework.context.ApplicationListener;
19
import org.springframework.context.event.ContextRefreshedEvent;
20
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
21
import org.springframework.stereotype.Component;
22
import org.springframework.transaction.annotation.Transactional;
23

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

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

    
37
    private final ICatalogItemService catalogService;
38

    
39
    private final ITypeService typeService;
40

    
41
    private final CatalogItemRepository catalogItemRepository;
42

    
43
    private final UserRepository userRepository;
44

    
45
    private final ITitlePageService titlePageService;
46
    private final ISourcesService sourcesService;
47

    
48
    private final BCryptPasswordEncoder encoder;
49

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

    
60
        titlePageService.updateTitlePage(new TitlePage(1L, ""));
61
        sourcesService.updateSources(new Sources(1L, ""));
62

    
63
        UserEntity user1 = new UserEntity("admin", "admin", encoder.encode("password"), (byte) 7, true);
64
        userRepository.save(user1);
65

    
66
        UserEntity user2 = new UserEntity("normal", "normal", encoder.encode("password"), (byte) 1, false);
67
        userRepository.save(user2);
68

    
69
    }
70

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

    
89
    }
90

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