package org.javers.core.metamodel.clazz;
import org.javers.common.collections.Lists;
import java.util.Optional;
import org.javers.common.validation.Validate;
import java.util.Collections;
import java.util.List;
/**
* @since 1.4
* @author bartosz.walacik
*/
public abstract class ClientsClassDefinitionBuilder<T extends ClientsClassDefinitionBuilder> {
private Class<?> clazz;
private List<String> ignoredProperties = Collections.emptyList();
private Optional<String> typeName = Optional.empty();
ClientsClassDefinitionBuilder(Class<?> clazz) {
this.clazz = clazz;
}
public T withIgnoredProperties(String... ignoredProperties) {
withIgnoredProperties(Lists.asList(ignoredProperties));
return (T) this;
}
public T withIgnoredProperties(List<String> ignoredProperties) {
Validate.argumentIsNotNull(ignoredProperties);
this.ignoredProperties = ignoredProperties;
return (T) this;
}
public T withTypeName(String typeName) {
Validate.argumentIsNotNull(typeName);
this.typeName = Optional.of(typeName);
return (T) this;
}
public ClientsClassDefinition build() {
throw new RuntimeException("not implemented");
}
public Class<?> getClazz() {
return clazz;
}
public List<String> getIgnoredProperties() {
return ignoredProperties;
}
public Optional<String> getTypeName() {
return typeName;
}
}