package com.celements.model.classes.fields;
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.PropertyClass;
import com.xpn.xwiki.objects.classes.StringClass;
@Immutable
public final class StringField extends AbstractClassField<String> {
private final Integer size;
public static class Builder extends AbstractClassField.Builder<Builder, String> {
private Integer size;
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();
}
@Override
public StringField build() {
return new StringField(getThis());
}
}
protected StringField(@NotNull Builder builder) {
super(builder);
this.size = builder.size;
}
@Override
public Class<String> getType() {
return String.class;
}
public Integer getSize() {
return size;
}
@Override
protected PropertyClass getPropertyClass() {
StringClass element = new StringClass();
if (size != null) {
element.setSize(size);
}
return element;
}
}