Summer.Batch.Core.Converter.DefaultJobParametersConverter.GetJobParameters C# (CSharp) Method

GetJobParameters() public method

Checks for suffix on keys and use those to decide how to convert the value.
  if a number or date is passed in that cannot be parsed, or cast to the correct type.
public GetJobParameters ( NameValueCollection props ) : JobParameters
props System.Collections.Specialized.NameValueCollection
return JobParameters
        public JobParameters GetJobParameters(NameValueCollection props)
        {
            if (props == null || props.Count == 0)
            {
                return new JobParameters();
            }

            JobParametersBuilder propertiesBuilder = new JobParametersBuilder();
            foreach (string pkey in props.Keys)
            {
                string key = pkey;
                string value = props[pkey];
                bool identifying = IsIdentifyingKey(key);
                if (!identifying)
                {
                    key = StringUtils.ReplaceFirst(key, NonIdentifyingFlag, "");
                }
                else if (key.StartsWith(IdentifyingFlag))
                {
                    key = StringUtils.ReplaceFirst(key, IdentifyingFlag, "");
                }

                if (key.EndsWith(DateType))
                {
                    DateTime? date;
                    try
                    {
                        date = DateTime.ParseExact(value, _dateFormat, CultureInfo.InvariantCulture);
                    }
                    catch (FormatException)
                    {
                        throw new ArgumentException(string.Format("Date Format is invalid :[{0}] {1}" ,value, _dateFormat));
                    }
                    propertiesBuilder.AddDate(key.Replace(DateType, string.Empty), date, identifying);
                }
                else if (key.EndsWith(LongType))
                {
                    long result = ParseLong(value);
                    propertiesBuilder.AddLong(key.Replace(LongType, string.Empty), result, identifying);
                }
                else if (key.EndsWith(DoubleType))
                {
                    double result = ParseDouble(value);
                    propertiesBuilder.AddDouble(key.Replace(DoubleType, string.Empty), result, identifying);
                }
                else if (StringUtils.EndsWithIgnoreCase(key, StringType))
                {
                    propertiesBuilder.AddString(key.Replace(StringType, string.Empty), value, identifying);
                }
                else
                {
                    propertiesBuilder.AddString(key, value, identifying);
                }
            }

            return propertiesBuilder.ToJobParameters();
        }

Usage Example

    public void GetJobParametersTest()
    {
        DefaultJobParametersConverter converter = new DefaultJobParametersConverter();
 
        NameValueCollection props2 = new NameValueCollection
        {
            {"+dateDebut(date)", "1970/07/31"},
            {"+everything(long)", "42"},
            {"-balance(double)", "1000.0"},
            {"+name(string)", "thierry"},
            {"-default", "default"},
            {"unmarked", "unmarked"}
        };
        JobParameters jobParameters2 = converter.GetJobParameters(props2);
        Assert.IsNotNull(jobParameters2);
        Assert.AreEqual(6,jobParameters2.GetParameters().Count);
        IDictionary<string, JobParameter> dico = jobParameters2.GetParameters();
        foreach (KeyValuePair<string, JobParameter> entry in dico)
        {
            string key = entry.Key;
            JobParameter value = entry.Value;
            Assert.IsFalse(key.StartsWith("-"));
            if ("dateDebut".Equals(key))
            {
                Assert.AreEqual(JobParameter.ParameterType.Date,value.Type);
                Assert.IsTrue(value.Identifying);
            }
            if ("everything".Equals(key))
            {
                Assert.AreEqual(JobParameter.ParameterType.Long, value.Type);
                Assert.IsTrue(value.Identifying);
            }
            if ("balance".Equals(key))
            {
                Assert.AreEqual(JobParameter.ParameterType.Double, value.Type);
                Assert.IsFalse(value.Identifying);
            }
            if ("name".Equals(key))
            {
                Assert.AreEqual(JobParameter.ParameterType.String, value.Type);
                Assert.IsTrue(value.Identifying);
            }
            if ("default".Equals(key))
            {
                Assert.AreEqual(JobParameter.ParameterType.String, value.Type);
                Assert.IsFalse(value.Identifying);
            }
            if ("unmarked".Equals(key))
            {
                Assert.AreEqual(JobParameter.ParameterType.String, value.Type);
                Assert.IsTrue(value.Identifying);
            }
        }
    }
All Usage Examples Of Summer.Batch.Core.Converter.DefaultJobParametersConverter::GetJobParameters