• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

kit-data-manager / pit-service / #324

13 Nov 2023 05:22PM UTC coverage: 72.606% (+11.8%) from 60.79%
#324

push

github

web-flow
Merge pull request #174 from kit-data-manager/dev-v2

Development branch for v2.0.0

136 of 205 new or added lines in 14 files covered. (66.34%)

4 existing lines in 3 files now uncovered.

872 of 1201 relevant lines covered (72.61%)

0.73 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

76.32
/src/main/java/edu/kit/datamanager/pit/cli/CliTaskBootstrap.java
1
package edu.kit.datamanager.pit.cli;
2

3
import java.io.IOException;
4
import java.time.Instant;
5
import java.util.Optional;
6
import java.util.stream.Stream;
7

8
import org.slf4j.Logger;
9
import org.slf4j.LoggerFactory;
10
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
11
import org.springframework.context.ConfigurableApplicationContext;
12

13
import edu.kit.datamanager.entities.messaging.PidRecordMessage;
14
import edu.kit.datamanager.pit.common.ExternalServiceException;
15
import edu.kit.datamanager.pit.common.InvalidConfigException;
16
import edu.kit.datamanager.pit.common.PidNotFoundException;
17
import edu.kit.datamanager.pit.configuration.ApplicationProperties;
18
import edu.kit.datamanager.pit.domain.PIDRecord;
19
import edu.kit.datamanager.pit.elasticsearch.PidRecordElasticRepository;
20
import edu.kit.datamanager.pit.elasticsearch.PidRecordElasticWrapper;
21
import edu.kit.datamanager.pit.pidlog.KnownPid;
22
import edu.kit.datamanager.pit.pidlog.KnownPidsDao;
23
import edu.kit.datamanager.pit.pitservice.ITypingService;
24
import edu.kit.datamanager.service.IMessagingService;
25
import edu.kit.datamanager.util.AuthenticationHelper;
26
import edu.kit.datamanager.util.ControllerUtils;
27

28
public class CliTaskBootstrap implements ICliTask {
29

30
    private static final Logger LOG = LoggerFactory.getLogger(CliTaskBootstrap.class);
1✔
31

32
    protected Stream<String> pids;
33
    protected ApplicationProperties appProps;
34
    protected KnownPidsDao knownPids;
35
    protected IMessagingService messagingService;
36
    protected Optional<PidRecordElasticRepository> elastic;
37
    protected ITypingService typingService;
38

39
    public CliTaskBootstrap(ConfigurableApplicationContext context, Stream<String> pids) {
1✔
40
        this.pids = pids;
1✔
41
        this.appProps = context.getBean(ApplicationProperties.class);
1✔
42
        this.knownPids = context.getBean(KnownPidsDao.class);
1✔
43
        this.messagingService = context.getBean(IMessagingService.class);
1✔
44
        this.elastic = this.getBeanOptional(context, PidRecordElasticRepository.class);
1✔
45
        this.typingService = context.getBean(ITypingService.class);
1✔
46
    }
1✔
47

48
    private <T> Optional<T> getBeanOptional(ConfigurableApplicationContext context, Class<T> clazz) {
49
        try {
50
            return Optional.of(context.getBean(clazz));
×
51
        } catch (NoSuchBeanDefinitionException e) {
1✔
52
            return Optional.empty();
1✔
53
        }
54
    }
55

56
    @Override
57
    public boolean process() throws IOException, InvalidConfigException {
58
        Instant unknownTime = Instant.ofEpochMilli(0);
1✔
59
        pids
1✔
60
            .map(pid -> new KnownPid(pid, unknownTime, unknownTime))
1✔
61
            .forEach(known -> {
1✔
62
                // store PIDs in the local database of known PIDs
63
                LOG.info("Store PID {} in the local database of known PIDs.", known.getPid());
1✔
64
                boolean exists = knownPids.findByPid(known.getPid()).isPresent();
1✔
65
                if (!exists) {
1✔
66
                    knownPids.save(known);
1✔
67
                }
68
                // send to message broker
69
                PidRecordMessage message = PidRecordMessage.creation(
1✔
70
                    known.getPid(),
1✔
71
                    "",
72
                    AuthenticationHelper.getPrincipal(),
1✔
73
                    ControllerUtils.getLocalHostname()
1✔
74
                );
75
                LOG.info("Send PID {} to message broker.", known.getPid());
1✔
76
                messagingService.send(message);
1✔
77
                // store in Elasticsearch
78
                elastic.ifPresent(elastic -> {
1✔
79
                    try {
80
                        PIDRecord rec = typingService.queryAllProperties(known.getPid());
×
81
                        LOG.info("Store PID {} in Elasticsearch.", known.getPid());
×
82
                        PidRecordElasticWrapper wrapper = new PidRecordElasticWrapper(rec, typingService.getOperations());
×
83
                        elastic.save(wrapper);
×
NEW
84
                    } catch (PidNotFoundException | ExternalServiceException e) {
×
85
                        LOG.error("Failed to query PID {}.", known.getPid(), e);
×
86
                    }
×
87
                });
×
88
            });
1✔
89
        knownPids.flush();
1✔
90
        return false;
1✔
91
    }
92

93
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc