package com.ctp.cdi.query.meta.extractor;
import com.ctp.cdi.query.Dao;
import com.ctp.cdi.query.NonEntity;
import com.ctp.cdi.query.meta.DaoEntity;
import com.ctp.cdi.query.meta.verifier.EntityVerifier;
import com.ctp.cdi.query.meta.verifier.Verifier;
import com.ctp.cdi.query.util.EntityUtils;
public class AnnotationMetadataExtractor implements MetadataExtractor {
private final Verifier<Class<?>> verifier;
public AnnotationMetadataExtractor() {
this.verifier = new EntityVerifier();
}
@Override
public DaoEntity extract(Class<?> daoClass) {
Dao dao = daoClass.getAnnotation(Dao.class);
Class<?> daoEntity = dao.value();
boolean isEntityClass = !NonEntity.class.equals(daoEntity) && verifier.verify(daoEntity);
if (isEntityClass) {
return new DaoEntity(daoEntity, EntityUtils.primaryKeyClass(daoEntity));
}
return null;
}
}