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

it.amattioli.dominate.hibernate.CollectionHibernateRepository Maven / Gradle / Ivy

The newest version!
package it.amattioli.dominate.hibernate;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

import org.hibernate.Query;

import it.amattioli.dominate.Entity;
import it.amattioli.dominate.Specification;
import it.amattioli.dominate.hibernate.specifications.HqlAssembler;

public class CollectionHibernateRepository> extends AbstractHibernateRepository {
	private Collection content;

    public CollectionHibernateRepository(Collection content) {
        this.content = content;
    }
    
    public T get(I id) {
    	for (T curr : content) {
            if (curr.getId().equals(id)) {
                return curr;
            }
        }
        return null;
    }

    public void put(T object) {
        content.add(object);
    }

    public void refresh(I objectId) {
		// Non fa nulla, il contenuto del repository ? fissato in fase di 
    	// costruzione e non pu? essere riletto
	}

	public void refresh(T object) {
		// Non fa nulla, il contenuto del repository ? fissato in fase di 
    	// costruzione e non pu? essere riletto
	}

	@Override
	public boolean isRemoveAllowed() {
		return true;
	}

	@Override
	public void remove(I objectId) {
		remove(get(objectId));
	}

	@Override
	public void remove(T object) {
		content.remove(object);
	}

	@SuppressWarnings("unchecked")
	public List list() {
        String hqlQuery = "";
        if (getOrderProperty() != null) {
            hqlQuery = hqlQuery + getHqlOrder();
        }
        Query query = getHibernateSession().createFilter(content,hqlQuery);
        if (getFirst() != 0) {
        	query.setFirstResult(getFirst());
        }
        if (getLast() != 0) {
        	query.setMaxResults(getLast());
        }
        List result = query.list();
        return result;
    }
	
	@Override
	public List list(Specification spec) {
    	List result;
    	//int first = criteria.getFirst() == 0 ? getFirst() : criteria.getFirst();
    	int first = getFirst();
        //int last = criteria.getLast() == 0 ? getLast() : criteria.getLast();
    	int last = getLast();
		HqlAssembler hAssembler = new HqlAssembler("", getOrders(), false);
    	if (spec.supportsAssembler(hAssembler)) {
    		spec.assembleQuery(hAssembler);
    		Query query = hAssembler.assembledHqlFilter(getHibernateSession(), content);
    		if (first != 0) {
                query.setFirstResult(first);
            }
            if (last != 0) {
                query.setMaxResults(last);
            }
            result = query.list();
    	} else {
    		throw new IllegalArgumentException("Unsupported specification");
    	}
		return result;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy