
paa.coder.noodleCriteriaBuilder.NoodleFactory Maven / Gradle / Ivy
package paa.coder.noodleCriteriaBuilder;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.hibernate5.Hibernate5Module;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import paa.coder.noodleCriteriaBuilder.queryBuilder.DeleteQuery;
import paa.coder.noodleCriteriaBuilder.queryBuilder.SampleQuery;
import paa.coder.noodleCriteriaBuilder.queryBuilder.UpdateQuery;
import javax.persistence.Transient;
import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.*;
import java.util.stream.Collectors;
public interface NoodleFactory {
SessionFactory sessionFactory();
default Session getSession(){
return sessionFactory().getCurrentSession();
}
default ObjectMapper getObjectMapper(){
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Hibernate5Module());
return mapper;
}
default SampleQuery select(Class from){
return new SampleQuery<>(from, this);
}
default DeleteQuery delete(Class from){
return new DeleteQuery<>(from, this);
}
default UpdateQuery update(Class from){
return new UpdateQuery<>(from, this);
}
default void save(T entity){
getSession().saveOrUpdate(entity);
}
default T merge(T entity){
return (T) getSession().merge(entity);
}
default void delete(T entity){
getSession().delete(entity);
}
default T lazyLoad(Class entity, Serializable id){
return getSession().load(entity,id);
}
default Optional find(Class entity, Serializable id){
return Optional.ofNullable(getSession().get(entity,id));
}
default Collection> ignoreFieldAnnotation(){
return NoodleUtils.ignoreFieldAnnotation();
}
default T getValue(Class clazz, Object value) throws JsonProcessingException{
try{
return getObjectMapper().convertValue(value, clazz);
}catch(RuntimeException runtimeException){
throw runtimeException;
}
}
default Collection getValueCollection(Class clazz, Object value) throws JsonProcessingException{
if(value instanceof String){
return getObjectMapper().readValue((String) value, getObjectMapper().getTypeFactory().constructCollectionType(Set.class, clazz));
}else{
return getObjectMapper().convertValue(value, getObjectMapper().getTypeFactory().constructCollectionType(Set.class, clazz));
}
}
default Set getEntityColumnNames(Class> clazz){
return NoodleUtils.getEntityColumnNames(clazz);
}
default FetchStore fetchStore(){
return FetchStore.Sample.SingletonWrapper.getInstance(this);
}
default Set getEntityColumns(Class> clazz){
return NoodleUtils.getEntityColumns(clazz);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy