EMMA Coverage Report (generated Thu Jan 24 13:37:04 CST 2013)
[all classes][org.springframework.batch.core.repository.dao]

COVERAGE SUMMARY FOR SOURCE FILE [MapJobInstanceDao.java]

nameclass, %method, %block, %line, %
MapJobInstanceDao.java100% (2/2)100% (10/10)99%  (184/185)99%  (32.7/33)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class MapJobInstanceDao100% (1/1)100% (8/8)99%  (169/170)99%  (31.7/32)
getJobInstance (Long): JobInstance 100% (1/1)95%  (20/21)92%  (3.7/4)
MapJobInstanceDao (): void 100% (1/1)100% (14/14)100% (3/3)
clear (): void 100% (1/1)100% (4/4)100% (2/2)
createJobInstance (String, JobParameters): JobInstance 100% (1/1)100% (29/29)100% (5/5)
getJobInstance (JobExecution): JobInstance 100% (1/1)100% (3/3)100% (1/1)
getJobInstance (String, JobParameters): JobInstance 100% (1/1)100% (26/26)100% (4/4)
getJobInstances (String, int, int): List 100% (1/1)100% (48/48)100% (8/8)
getJobNames (): List 100% (1/1)100% (25/25)100% (5/5)
     
class MapJobInstanceDao$1100% (1/1)100% (2/2)100% (15/15)100% (2/2)
MapJobInstanceDao$1 (MapJobInstanceDao): void 100% (1/1)100% (6/6)100% (1/1)
compare (JobInstance, JobInstance): int 100% (1/1)100% (9/9)100% (1/1)

1/*
2 * Copyright 2006-2007 the original author or authors.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 
17package org.springframework.batch.core.repository.dao;
18 
19import java.util.ArrayList;
20import java.util.Collection;
21import java.util.Collections;
22import java.util.Comparator;
23import java.util.List;
24import java.util.Set;
25 
26import java.util.concurrent.CopyOnWriteArraySet;
27 
28import java.util.concurrent.atomic.AtomicLong;
29 
30import org.springframework.batch.core.JobExecution;
31import org.springframework.batch.core.JobInstance;
32import org.springframework.batch.core.JobParameters;
33import org.springframework.util.Assert;
34 
35/**
36 * In-memory implementation of {@link JobInstanceDao}.
37 */
38public class MapJobInstanceDao implements JobInstanceDao {
39 
40        // JDK6 Make a ConcurrentSkipListSet: tends to add on end
41        private final Set<JobInstance> jobInstances = new CopyOnWriteArraySet<JobInstance>();
42 
43        private final AtomicLong currentId = new AtomicLong(0L);
44 
45        public void clear() {
46                jobInstances.clear();
47        }
48 
49        public JobInstance createJobInstance(String jobName, JobParameters jobParameters) {
50 
51                Assert.state(getJobInstance(jobName, jobParameters) == null, "JobInstance must not already exist");
52 
53                JobInstance jobInstance = new JobInstance(currentId.getAndIncrement(), jobParameters, jobName);
54                jobInstance.incrementVersion();
55                jobInstances.add(jobInstance);
56 
57                return jobInstance;
58        }
59 
60        public JobInstance getJobInstance(String jobName, JobParameters jobParameters) {
61 
62                for (JobInstance instance : jobInstances) {
63                        if (instance.getJobName().equals(jobName) && instance.getJobParameters().equals(jobParameters)) {
64                                return instance;
65                        }
66                }
67                return null;
68 
69        }
70 
71        public JobInstance getJobInstance(Long instanceId) {
72                for (JobInstance instance : jobInstances) {
73                        if (instance.getId().equals(instanceId)) {
74                                return instance;
75                        }
76                }
77                return null;
78        }
79 
80        public List<String> getJobNames() {
81                List<String> result = new ArrayList<String>();
82                for (JobInstance instance : jobInstances) {
83                        result.add(instance.getJobName());
84                }
85                Collections.sort(result);
86                return result;
87        }
88 
89        public List<JobInstance> getJobInstances(String jobName, int start, int count) {
90                List<JobInstance> result = new ArrayList<JobInstance>();
91                for (JobInstance instance : jobInstances) {
92                        if (instance.getJobName().equals(jobName)) {
93                                result.add(instance);
94                        }
95                }
96                Collections.sort(result, new Comparator<JobInstance>() {
97                        // sort by ID descending
98                        public int compare(JobInstance o1, JobInstance o2) {
99                                return Long.signum(o2.getId() - o1.getId());
100                        }
101                });
102 
103                int startIndex = Math.min(start, result.size());
104                int endIndex = Math.min(start + count, result.size());
105                return result.subList(startIndex, endIndex);
106        }
107 
108        public JobInstance getJobInstance(JobExecution jobExecution) {
109                return jobExecution.getJobInstance();
110        }
111 
112}

[all classes][org.springframework.batch.core.repository.dao]
EMMA 2.0.5312 (C) Vladimir Roubtsov