/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.isis.core.specsupport.specs;
import cucumber.api.Transformer;
import org.joda.time.format.DateTimeFormat;
/**
* A set of converters for built-in value types; for use in Cucumber step definitions.
*/
public class V {
private V() {
}
/**
* Converts {@link java.lang.String}s to {@link java.lang.Byte}, but also recognizing the
* keyword 'null'.
*/
public static class Byte extends Transformer<java.lang.Byte> {
@Override
public java.lang.Byte transform(java.lang.String value) {
return value == null || "null".equals(value)
? null
: java.lang.Byte.parseByte(value);
}
public static java.lang.Byte as(Object value) {
return value != null && value instanceof java.lang.String
? new Byte().transform((java.lang.String) value)
: null;
}
}
/**
* Converts {@link java.lang.String}s to {@link java.lang.Short}, but also recognizing the
* keyword 'null'.
*/
public static class Short extends Transformer<java.lang.Short> {
@Override
public java.lang.Short transform(java.lang.String value) {
return value == null || "null".equals(value)
? null
: java.lang.Short.parseShort(value);
}
public static java.lang.Short as(Object value) {
return value != null && value instanceof java.lang.String
? new Short().transform((java.lang.String) value)
: null;
}
}
/**
* Converts {@link java.lang.String}s to {@link java.lang.Integer}, but also recognizing the
* keyword 'null'.
*/
public static class Integer extends Transformer<java.lang.Integer> {
@Override
public java.lang.Integer transform(java.lang.String value) {
return value == null || "null".equals(value)
? null
: java.lang.Integer.parseInt(value);
}
public static java.lang.Integer as(Object value) {
return value != null && value instanceof java.lang.String
? new Integer().transform((java.lang.String) value)
: null;
}
}
/**
* Converts {@link java.lang.String}s to {@link java.lang.Long}, but also recognizing the
* keyword 'null'.
*/
public static class Long extends Transformer<java.lang.Long> {
@Override
public java.lang.Long transform(java.lang.String value) {
return value == null || "null".equals(value)
? null
: java.lang.Long.parseLong(value);
}
public static java.lang.Long as(Object value) {
return value != null && value instanceof java.lang.String
? new Long().transform((java.lang.String) value)
: null;
}
}
/**
* Converts {@link java.lang.String}s to {@link java.lang.Float}, but also recognizing the
* keyword 'null'.
*/
public static class Float extends Transformer<java.lang.Float> {
@Override
public java.lang.Float transform(java.lang.String value) {
return value == null || "null".equals(value)
? null
: java.lang.Float.parseFloat(value);
}
public static java.lang.Float as(Object value) {
return value != null && value instanceof java.lang.String
? new Float().transform((java.lang.String) value)
: null;
}
}
/**
* Converts {@link java.lang.String}s to {@link java.lang.Double}, but also recognizing the
* keyword 'null'.
*/
public static class Double extends Transformer<java.lang.Double> {
@Override
public java.lang.Double transform(java.lang.String value) {
return value == null || "null".equals(value)
? null
: java.lang.Double.parseDouble(value);
}
public static java.lang.Double as(Object value) {
return value != null && value instanceof java.lang.String
? new Double().transform((java.lang.String) value)
: null;
}
}
/**
* Converts {@link java.lang.String}s to {@link java.lang.BigInteger}, but also recognizing the
* keyword 'null'.
*/
public static class BigInteger extends Transformer<java.math.BigInteger> {
@Override
public java.math.BigInteger transform(java.lang.String value) {
return value == null || "null".equals(value)
? null
: new java.math.BigInteger(value);
}
public static java.math.BigInteger as(Object value) {
return value != null && value instanceof java.lang.String
? new BigInteger().transform((java.lang.String) value)
: null;
}
}
/**
* Converts {@link java.lang.String}s to {@link java.lang.BigDecimal}, but also recognizing the
* keyword 'null'.
*/
public static class BigDecimal extends Transformer<java.math.BigDecimal> {
@Override
public java.math.BigDecimal transform(java.lang.String value) {
return value == null || "null".equals(value)
? null
: new java.math.BigDecimal(value);
}
public static java.math.BigDecimal as(Object value) {
return value != null && value instanceof java.lang.String
? new BigDecimal().transform((java.lang.String) value)
: null;
}
}
/**
* Converts {@link java.lang.String}s to {@link java.lang.Character}, but also recognizing the
* keyword 'null'.
*/
public static class Character extends Transformer<java.lang.Character> {
@Override
public java.lang.Character transform(java.lang.String value) {
return value == null || "null".equals(value) || value.length() <1
? null
: value.charAt(0);
}
public static java.lang.Character as(Object value) {
return value != null && value instanceof java.lang.String
? new Character().transform((java.lang.String) value)
: null;
}
}
/**
* Converts {@link java.lang.String}s to {@link java.lang.String}, but also recognizing the
* keyword 'null'.
*/
public static class String extends Transformer<java.lang.String> {
@Override
public java.lang.String transform(java.lang.String value) {
return value == null || "null".equals(value)
? null
: value;
}
public static java.lang.String as(Object value) {
return value != null && value instanceof java.lang.String
? new String().transform((java.lang.String) value)
: null;
}
}
/**
* Converts {@link java.lang.String}s to {@link org.joda.time.LocalDate}, but also recognizing the
* keyword 'null'.
*/
public static class LyyyyMMdd extends Transformer<org.joda.time.LocalDate> {
@Override
public org.joda.time.LocalDate transform(java.lang.String value) {
return value == null || "null".equals(value)
? null
: DateTimeFormat.forPattern("yyyy-MM-dd").parseLocalDate(value);
}
public static org.joda.time.LocalDate as(Object value) {
return value != null && value instanceof java.lang.String
? new LyyyyMMdd().transform((java.lang.String) value)
: null;
}
}
/**
* Converts {@link java.lang.String}s to {@link org.joda.time.DateTime}, but also recognizing the
* keyword 'null'.
*/
public static class yyyyMMddHHmmss extends Transformer<org.joda.time.DateTime> {
@Override
public org.joda.time.DateTime transform(java.lang.String value) {
return value == null || "null".equals(value)
? null
: DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").parseDateTime(value);
}
public static org.joda.time.DateTime as(Object value) {
return value != null && value instanceof java.lang.String
? new yyyyMMddHHmmss().transform((java.lang.String) value)
: null;
}
}
/**
* Converts {@link java.lang.String}s to {@link org.joda.time.DateTime}, but also recognizing the
* keyword 'null'.
*/
public static class yyyyMMddHHmm extends Transformer<org.joda.time.DateTime> {
@Override
public org.joda.time.DateTime transform(java.lang.String value) {
return value == null || "null".equals(value)
? null
: DateTimeFormat.forPattern("yyyy-MM-dd HH:mm").parseDateTime(value);
}
public static org.joda.time.DateTime as(Object value) {
return value != null && value instanceof java.lang.String
? new yyyyMMddHHmmss().transform((java.lang.String) value)
: null;
}
}
/**
* Converts {@link java.lang.String}s to {@link org.joda.time.LocalDateTime}, but also recognizing the
* keyword 'null'.
*/
public static class LyyyyMMddHHmm extends Transformer<org.joda.time.LocalDateTime> {
@Override
public org.joda.time.LocalDateTime transform(java.lang.String value) {
return value == null || "null".equals(value)
? null
: DateTimeFormat.forPattern("yyyy-MM-dd HH:mm").parseLocalDateTime(value);
}
public static org.joda.time.DateTime as(Object value) {
return value != null && value instanceof java.lang.String
? new yyyyMMddHHmmss().transform((java.lang.String) value)
: null;
}
}
/**
* Converts {@link java.lang.String}s to {@link org.joda.time.LocalDateTime}, but also recognizing the
* keyword 'null'.
*/
public static class LyyyyMMddHHmmss extends Transformer<org.joda.time.LocalDateTime> {
@Override
public org.joda.time.LocalDateTime transform(java.lang.String value) {
return value == null || "null".equals(value)
? null
: DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").parseLocalDateTime(value);
}
public static org.joda.time.DateTime as(Object value) {
return value != null && value instanceof java.lang.String
? new yyyyMMddHHmmss().transform((java.lang.String) value)
: null;
}
}
}