59f12f4c5ccae682a09154b4bc71e776b0cee6c0
[vid.git] / vid-app-common / src / main / java / org / onap / vid / job / impl / JobAdapterImpl.java
1 package org.onap.vid.job.impl;
2
3 import com.google.common.collect.ImmutableMap;
4 import org.onap.vid.job.Job;
5 import org.onap.vid.job.JobAdapter;
6 import org.onap.vid.job.JobType;
7 import org.onap.vid.model.JobBulk;
8 import org.onap.vid.model.JobModel;
9 import org.springframework.stereotype.Component;
10
11 import javax.ws.rs.BadRequestException;
12 import java.util.ArrayList;
13 import java.util.List;
14 import java.util.Map;
15 import java.util.UUID;
16 import java.util.stream.Collectors;
17
18 @Component
19 public class JobAdapterImpl implements JobAdapter {
20
21     @Override
22     public JobModel toModel(Job job) {
23         JobModel jobModel = new JobModel();
24         jobModel.setUuid(job.getUuid());
25         jobModel.setStatus(job.getStatus());
26         jobModel.setTemplateId(job.getTemplateId());
27         return jobModel;
28     }
29
30     @Override
31     public JobBulk toModelBulk(List<Job> jobList) {
32         return new JobBulk(jobList.stream().map(this::toModel).collect(Collectors.toList()));
33     }
34
35     @Override
36     public Job createJob(JobType jobType, AsyncJobRequest request, UUID templateId, String userId, Integer indexInBulk) {
37         JobDaoImpl job = createJob(jobType, templateId, indexInBulk, ImmutableMap.of(
38                 "request", request,
39                 "userId", userId));
40         job.setUserId(userId);
41         return job;
42     }
43
44     @Override
45     public List<Job> createBulkOfJobs(Map<String, Object> bulkRequest) {
46         int count;
47         JobType jobType;
48
49         try {
50             count = (Integer) bulkRequest.get("count");
51             jobType = JobType.valueOf((String) bulkRequest.get("type"));
52         } catch (Exception exception) {
53             throw new BadRequestException(exception);
54         }
55         List<Job> jobList = new ArrayList<>(count + 1);
56         UUID templateId = UUID.randomUUID();
57         for (int i = 0; i < count; i++) {
58             jobList.add(createJob(jobType, templateId, i, bulkRequest));
59         }
60         return jobList;
61     }
62
63     private JobDaoImpl createJob(JobType jobType, UUID templateId, Integer indexInBulk, Map<String, Object> data) {
64         JobDaoImpl job = new JobDaoImpl();
65         job.setStatus(Job.JobStatus.PENDING);
66         job.setTypeAndData(jobType, data);
67         job.setTemplateId(templateId);
68         job.setIndexInBulk(indexInBulk);
69         return job;
70     }
71 }