All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.pelle.mango.db.dao.AbstractEntityDAO Maven / Gradle / Ivy

The newest version!
package io.pelle.mango.db.dao;

import io.pelle.mango.client.base.vo.IBaseEntity;
import io.pelle.mango.client.base.vo.IBaseVO;
import io.pelle.mango.client.base.vo.LongAttributeDescriptor;
import io.pelle.mango.client.base.vo.query.AggregateQuery;
import io.pelle.mango.client.base.vo.query.CountQuery;
import io.pelle.mango.client.base.vo.query.DeleteQuery;
import io.pelle.mango.client.base.vo.query.SelectQuery;
import io.pelle.mango.db.voquery.VOClassQuery;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;

import com.google.common.base.Optional;

public abstract class AbstractEntityDAO implements IVOEntityDAO {

	@Autowired
	private BaseEntityDAO baseEntityDAO;

	private final Class voEntityClass;

	public AbstractEntityDAO(Class voEntityClass) {
		this.voEntityClass = voEntityClass;
	}

	@Override
	public T getNewEntity(String className, Map properties) {
		return baseEntityDAO.getNewVO(className, properties);
	}
	
	@Override
	public Class getVOEntityClass() {
		return voEntityClass;
	}

	@Override
	public T create(T entity) {
		return baseEntityDAO.create(entity);
	}

	@Override
	public T save(T entity) {
		return baseEntityDAO.save(entity);
	}

	@Override
	public T read(long id) {
		return baseEntityDAO.read(id, voEntityClass);
	}

	@Override
	public List filter(SelectQuery query) {
		return baseEntityDAO.filter(query);
	}

	@Override
	public Optional read(SelectQuery query) {
		return baseEntityDAO.read(query);
	}

	@Override
	public void deleteAll() {
		baseEntityDAO.deleteAll(voEntityClass);
	}

	@Override
	public void delete(T entity) {
		baseEntityDAO.delete(entity);
	}

	@Override
	public long count(CountQuery query) {
		return baseEntityDAO.count(query);
	}

	@Override
	public long aggregate(AggregateQuery query) {
		return baseEntityDAO.aggregate(query);
	}

	@Override
	public List getByNaturalKey(String naturalKey) {
		return baseEntityDAO.searchByNaturalKey(voEntityClass, naturalKey);
	}

	@Override
	public void deleteQuery(DeleteQuery query) {
		baseEntityDAO.deleteQuery(query);
	}

	@Override
	public List getAll() {
		SelectQuery query = SelectQuery.selectFrom(voEntityClass);
		return filter(query);
	}

	@Override
	public void delete(long id) {
		baseEntityDAO.delete(voEntityClass, id);
	}

	@Override
	public long count() {
		return baseEntityDAO.count(voEntityClass);
	}

	protected BaseEntityDAO getBaseEntityDAO() {
		return baseEntityDAO;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy