All Downloads are FREE. Search and download functionalities are using the official Maven repository.

hope.kola.contract.api.Body Maven / Gradle / Ivy

There is a newer version: 1.1.2-RELEASE
Show newest version
package hope.kola.contract.api;

import static hope.kola.contract.api.KolaTestFunctions.$V;

import com.squareup.javapoet.CodeBlock;
import groovy.lang.Closure;
import groovy.lang.DelegatesTo;
import hope.kola.contract.validation.Validatable;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.*;

public class Body implements Common, Validatable, ObjectFactory {

  protected Set values = new LinkedHashSet<>();

  /**
   * Complex property build 
* Framework will pass by the {@code res} as the instance of this complex property
* An example:
* *
* *
   *
   *     set('student.address', {
   *         addStatement('res.setCity("Shanghai")')
   *         addStatement('res.setZID(123)')
   *     })
   *
   * 
* *
* * @param property, the path of the property {@code student.address} * @param consumer manipulate the property update logic */ public void set(String property, @DelegatesTo(CodeBlock.Builder.class) Closure consumer) { final BodyValue hv = new BodyValue(property); CodeBlock.Builder code = CodeBlock.builder(); hv.code(code); consumer.setDelegate(code); consumer.call(); values.add(hv); } public Set values() { return values; } public boolean hasValues() { return !values.isEmpty(); } /** * Populate dynamic value from the global context by the key * * @param property the path of the body * @param key the key from the context */ public void fromGlobal(String property, final String key) { final BodyValue hv = new BodyValue(property); hv.code(CodeBlock.builder().add("$L($S)", $V, key)); values.add(hv); } public void set(String property, final Integer intValue) { final BodyValue hv = new BodyValue(property); hv.withInteger(intValue); values.add(hv); } public void set(String property, final Integer... intValues) { final BodyValue hv = new BodyValue(property); hv.withIntegerArray(intValues); values.add(hv); } public void set(String property, final Long longValue) { final BodyValue hv = new BodyValue(property); hv.withLong(longValue); values.add(hv); } public void set(String property, final Long... longValues) { final BodyValue hv = new BodyValue(property); hv.withLongArray(longValues); values.add(hv); } public void set(String property, final Float floatValue) { final BodyValue hv = new BodyValue(property); hv.withFloat(floatValue); values.add(hv); } public void set(String property, final Float... floatValues) { final BodyValue hv = new BodyValue(property); hv.withFloatArray(floatValues); values.add(hv); } public void set(String property, final Double doubleValue) { final BodyValue hv = new BodyValue(property); hv.withDouble(doubleValue); values.add(hv); } public void set(String property, final Double... doubleValues) { final BodyValue hv = new BodyValue(property); hv.withDoubleArray(doubleValues); values.add(hv); } public void set(String property, final BigDecimal bigDecimalValue) { final BodyValue hv = new BodyValue(property); hv.withBigDecimal(bigDecimalValue); values.add(hv); } public void set(String property, final BigDecimal... bigDecimalValues) { final BodyValue hv = new BodyValue(property); hv.withBigDecimalArray(bigDecimalValues); values.add(hv); } public void set(String property, final BigInteger bigIntegerValue) { final BodyValue hv = new BodyValue(property); hv.withBigInteger(bigIntegerValue); values.add(hv); } public void set(String property, final BigInteger... bigIntegerValues) { final BodyValue hv = new BodyValue(property); hv.withBigIntegerArray(bigIntegerValues); values.add(hv); } public void set(String property, final String stringValue) { final BodyValue hv = new BodyValue(property); hv.withString(stringValue); values.add(hv); } public void set(String property, final String... stringValues) { final BodyValue hv = new BodyValue(property); hv.withStringArray(stringValues); values.add(hv); } public void set(String property, final Enum eumValue) { final BodyValue hv = new BodyValue(property); hv.withString(eumValue.name()); values.add(hv); } public void set(String property, final Enum... eumValues) { final BodyValue hv = new BodyValue(property); final String[] got = new String[eumValues.length]; int id = 0; for (final Enum ev : eumValues) { got[id++] = ev.name(); } hv.withStringArray(got); values.add(hv); } // Date & Time: public void set(String property, final LocalDate date) { final BodyValue hv = new BodyValue(property); hv.withLocalDate(date); values.add(hv); } public void set(String property, final LocalDate... dates) { final BodyValue hv = new BodyValue(property); hv.withLocalDateArray(dates); values.add(hv); } public void set(String property, final LocalDateTime dateTime) { final BodyValue hv = new BodyValue(property); hv.withLocalDateTime(dateTime); values.add(hv); } public void set(String property, final LocalDateTime... dateTime) { final BodyValue hv = new BodyValue(property); hv.withLocalDateTimeArray(dateTime); values.add(hv); } public void set(String property, final LocalTime time) { final BodyValue hv = new BodyValue(property); hv.withLocalTime(time); values.add(hv); } public void set(String property, final LocalTime... times) { final BodyValue hv = new BodyValue(property); hv.withLocalTimeArray(times); values.add(hv); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy