EMMA Coverage Report (generated Thu May 22 12:08:10 CDT 2014)
[all classes][org.springframework.batch.core.launch.support]

COVERAGE SUMMARY FOR SOURCE FILE [ScheduledJobParametersFactory.java]

nameclass, %method, %block, %line, %
ScheduledJobParametersFactory.java100% (1/1)100% (4/4)100% (152/152)100% (30/30)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ScheduledJobParametersFactory100% (1/1)100% (4/4)100% (152/152)100% (30/30)
ScheduledJobParametersFactory (): void 100% (1/1)100% (9/9)100% (2/2)
getJobParameters (Properties): JobParameters 100% (1/1)100% (74/74)100% (14/14)
getProperties (JobParameters): Properties 100% (1/1)100% (65/65)100% (12/12)
setDateFormat (DateFormat): void 100% (1/1)100% (4/4)100% (2/2)

1/*
2 * Copyright 2006-2013 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 */
16package org.springframework.batch.core.launch.support;
17 
18import java.text.DateFormat;
19import java.text.ParseException;
20import java.text.SimpleDateFormat;
21import java.util.Date;
22import java.util.Map;
23import java.util.Map.Entry;
24import java.util.Properties;
25 
26import org.springframework.batch.core.JobParameter;
27import org.springframework.batch.core.JobParameters;
28import org.springframework.batch.core.JobParametersBuilder;
29import org.springframework.batch.core.converter.JobParametersConverter;
30 
31/**
32 * @author Lucas Ward
33 *
34 */
35public class ScheduledJobParametersFactory implements JobParametersConverter {
36 
37        public static final String SCHEDULE_DATE_KEY = "schedule.date";
38 
39        private DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
40 
41        /*
42         * (non-Javadoc)
43         *
44         * @see org.springframework.batch.core.runtime.JobParametersFactory#getJobParameters(java.util.Properties)
45         */
46        @Override
47        public JobParameters getJobParameters(Properties props) {
48 
49                if (props == null || props.isEmpty()) {
50                        return new JobParameters();
51                }
52 
53                JobParametersBuilder propertiesBuilder = new JobParametersBuilder();
54 
55                for (Entry<Object, Object> entry : props.entrySet()) {
56                        if (entry.getKey().equals(SCHEDULE_DATE_KEY)) {
57                                Date scheduleDate;
58                                try {
59                                        scheduleDate = dateFormat.parse(entry.getValue().toString());
60                                } catch (ParseException ex) {
61                                        throw new IllegalArgumentException("Date format is invalid: [" + entry.getValue() + "]");
62                                }
63                                propertiesBuilder.addDate(entry.getKey().toString(), scheduleDate);
64                        } else {
65                                propertiesBuilder.addString(entry.getKey().toString(), entry.getValue().toString());
66                        }
67                }
68 
69                return propertiesBuilder.toJobParameters();
70        }
71 
72        /**
73         * Convert schedule date to Date, and assume all other parameters can be represented by their default string value.
74         *
75         * @see org.springframework.batch.core.converter.JobParametersConverter#getProperties(org.springframework.batch.core.JobParameters)
76         */
77        @Override
78        public Properties getProperties(JobParameters params) {
79 
80                if (params == null || params.isEmpty()) {
81                        return new Properties();
82                }
83 
84                Map<String, JobParameter> parameters = params.getParameters();
85                Properties result = new Properties();
86                for (Entry<String, JobParameter> entry : parameters.entrySet()) {
87                        String key = entry.getKey();
88                        JobParameter jobParameter = entry.getValue();
89                        if (key.equals(SCHEDULE_DATE_KEY)) {
90                                result.setProperty(key, dateFormat.format(jobParameter.getValue()));
91                        } else {
92                                result.setProperty(key, "" + jobParameter.getValue());
93                        }
94                }
95                return result;
96        }
97 
98        /**
99         * Public setter for injecting a date format.
100         *
101         * @param dateFormat a {@link DateFormat}, defaults to "yyyy/MM/dd"
102         */
103        public void setDateFormat(DateFormat dateFormat) {
104                this.dateFormat = dateFormat;
105        }
106}

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