package com.airbnb.epoxy;
import com.squareup.javapoet.ClassName;
import com.squareup.javapoet.TypeName;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import javax.lang.model.element.TypeElement;
import javax.lang.model.util.Elements;
class ControllerClassInfo {
private static final String GENERATED_HELPER_CLASS_SUFFIX = "_EpoxyHelper";
private final Elements elementUtils;
final Set<ControllerModelField> models = new HashSet<>();
final ClassName generatedClassName;
final TypeName controllerClassType;
final TypeElement controllerClassElement;
ControllerClassInfo(Elements elementUtils, TypeElement controllerClassElement) {
this.elementUtils = elementUtils;
generatedClassName = getGeneratedClassName(controllerClassElement);
controllerClassType = TypeName.get(controllerClassElement.asType());
this.controllerClassElement = controllerClassElement;
}
void addModel(ControllerModelField controllerModelField) {
models.add(controllerModelField);
}
void addModels(Collection<ControllerModelField> controllerModelFields) {
models.addAll(controllerModelFields);
}
private ClassName getGeneratedClassName(TypeElement controllerClass) {
String packageName = elementUtils.getPackageOf(controllerClass).getQualifiedName().toString();
int packageLen = packageName.length() + 1;
String className =
controllerClass.getQualifiedName().toString().substring(packageLen).replace('.', '$');
return ClassName.get(packageName, className + GENERATED_HELPER_CLASS_SUFFIX);
}
@Override
public String toString() {
return "ControllerClassInfo{"
+ "models=" + models
+ ", generatedClassName=" + generatedClassName
+ ", controllerClassType=" + controllerClassType
+ '}';
}
}