
hope.kola.contract.assertj.model.ObjectFragmentTrait Maven / Gradle / Ivy
package hope.kola.contract.assertj.model;
import com.squareup.javapoet.CodeBlock;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.UUID;
/** This is to transform the runtime Object to defined value */
public interface ObjectFragmentTrait {
default CodeBlock.Builder ofBigInteger(final BigInteger value) {
return CodeBlock.builder().add("new $T($S)", BigInteger.class, value.toString());
}
default CodeBlock.Builder ofBigInteger(final String value) {
return CodeBlock.builder().add("new $T($S)", BigInteger.class, value);
}
default CodeBlock.Builder ofBigDecimal(final BigDecimal value) {
return CodeBlock.builder().add("new $T($S)", BigDecimal.class, value.toPlainString());
}
default CodeBlock.Builder ofBigDecimal(final String value) {
return CodeBlock.builder().add("new $T($S)", BigDecimal.class, value);
}
/**
* From runtime to definition
*
* @param value runtime {@link LocalDate}
* @return {@link CodeBlock.Builder}
*/
default CodeBlock.Builder ofLocalDate(final LocalDate value) {
return CodeBlock.builder()
.add(
"$T.of($L, $L, $L)",
LocalDate.class,
value.getYear(),
// 1~12
value.getMonth().getValue(),
value.getDayOfMonth());
}
/**
* {@link LocalDate#parse(CharSequence)}
*
* @param value {@link LocalDate} style string
* @return {@link CodeBlock.Builder}
*/
default CodeBlock.Builder ofLocalDate(final String value) {
return CodeBlock.builder().add("$T.parse($S)", LocalDate.class, value);
}
/**
* {@link LocalDate#parse(CharSequence, DateTimeFormatter)}
*
* @param value {@link LocalDate} style string
* @param pattern customized pattern
* @return {@link CodeBlock.Builder}
*/
default CodeBlock.Builder ofLocalDate(final String value, final String pattern) {
return CodeBlock.builder()
.add(
"$T.parse($S, $T.ofPattern($S))",
LocalDate.class,
value,
DateTimeFormatter.class,
pattern);
}
/**
* @see {@link LocalDateTime#of(int, int, int, int, int, int, int)}
* @param value
* @return
*/
default CodeBlock.Builder ofLocalDateTime(final LocalDateTime value) {
return CodeBlock.builder()
.add(
"$T.of($L, $L, $L, $L, $L, $L, $L)",
LocalDateTime.class,
value.getYear(),
value.getMonth().getValue(),
value.getDayOfMonth(),
value.getHour(),
value.getMinute(),
value.getSecond(),
value.getNano());
}
/**
* {@link LocalDateTime#parse(CharSequence)}
*
* @param value {@link LocalDateTime} style string
* @return {@link CodeBlock.Builder}
*/
default CodeBlock.Builder ofLocalDateTime(final String value) {
return CodeBlock.builder().add("$T.parse($S)", LocalDateTime.class, value);
}
/**
* {@link LocalDateTime#parse(CharSequence, DateTimeFormatter)}
*
* @param value {@link LocalDateTime} style string
* @param pattern customized pattern
* @return {@link CodeBlock.Builder}
*/
default CodeBlock.Builder ofLocalDateTime(final String value, final String pattern) {
return CodeBlock.builder()
.add(
"$T.parse($S, $T.ofPattern($S))",
LocalDateTime.class,
value,
DateTimeFormatter.class,
pattern);
}
/**
* Converter runtime {@link LocalTime} to definition
*
* @param value the {@link LocalTime}
* @return {@link CodeBlock.Builder}
*/
default CodeBlock.Builder ofLocalTime(final LocalTime value) {
return CodeBlock.builder()
// LocalTime.of(int hour, int minute, int second, int nanoOfSecond)
.add(
"$T.of($L, $L, $L, $L)",
LocalTime.class,
value.getHour(),
value.getMinute(),
value.getSecond(),
value.getNano());
}
/**
* {@link LocalTime#parse(CharSequence)}
*
* @param value given local time value present
* @return
*/
default CodeBlock.Builder ofLocalTime(final String value) {
return CodeBlock.builder().add("$T.parse($S)", LocalTime.class, value);
}
/**
* {@link LocalTime#parse(CharSequence, DateTimeFormatter)}
*
* @param value given local time value present
* @param pattern, the time pattern
* @return {@link CodeBlock.Builder}
*/
default CodeBlock.Builder ofLocalTime(final String value, final String pattern) {
return CodeBlock.builder()
.add(
"$T.parse($S, $T.ofPattern($S))",
LocalTime.class,
value,
DateTimeFormatter.class,
pattern);
}
default CodeBlock.Builder ofUUID(final UUID value) {
return CodeBlock.builder().add("$T.fromString($S)", UUID.class, value.toString());
}
default CodeBlock.Builder ofUUID(final String value) {
return CodeBlock.builder().add("$T.from($S)", UUID.class, value);
}
default CodeBlock.Builder ofInstant(final Instant value) {
return CodeBlock.builder().add("$T.ofEpochMilli($L)", Instant.class, value.toEpochMilli());
}
default CodeBlock.Builder ofInstant(final Long value) {
return CodeBlock.builder().add("$T.ofEpochMilli($L)", Instant.class, value);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy