package com.celements.model.classes.fields; import java.util.Date; import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; import javax.validation.constraints.NotNull; import org.xwiki.model.reference.DocumentReference; import com.xpn.xwiki.objects.classes.DateClass; import com.xpn.xwiki.objects.classes.PropertyClass; @Immutable public final class DateField extends AbstractClassField<Date> { private final Integer size; private final Integer emptyIsToday; private final String dateFormat; public static class Builder extends AbstractClassField.Builder<Builder, Date> { private Integer size; private Integer emptyIsToday; private String dateFormat; public Builder(@NotNull DocumentReference classRef, @NotNull String name) { super(classRef, name); } @Override public Builder getThis() { return this; } public Builder size(@Nullable Integer val) { size = val; return getThis(); } public Builder emptyIsToday(@Nullable Integer val) { emptyIsToday = val; return getThis(); } public Builder dateFormat(@Nullable String val) { dateFormat = val; return getThis(); } @Override public DateField build() { return new DateField(getThis()); } } protected DateField(@NotNull Builder builder) { super(builder); this.size = builder.size; this.emptyIsToday = builder.emptyIsToday; this.dateFormat = builder.dateFormat; } @Override public Class<Date> getType() { return Date.class; } public Integer getSize() { return size; } public Integer getEmptyIsToday() { return emptyIsToday; } public String getDateFormat() { return dateFormat; } @Override protected PropertyClass getPropertyClass() { DateClass element = new DateClass(); if (size != null) { element.setSize(size); } if (emptyIsToday != null) { element.setEmptyIsToday(emptyIsToday); } if (dateFormat != null) { element.setDateFormat(dateFormat); } return element; } }