package de.onyxbits.tradetrax.entities;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
/**
* Database utility functions for the {@link Name} and {@link Variant} classes.
* @author patrick
*
*/
public class IdentUtil {
/**
* For autocompletion using the name table
*
* @param session
* database session to use
* @param partial
* what the user entered so far
* @return list of matching labels
*/
@SuppressWarnings("unchecked")
public static <T> List<String> suggestNames(Session session, String partial) {
Vector<String> ret = new Vector<String>();
Criterion r = Restrictions.ilike("label", "%" + partial + "%");
Iterator<Name> it = session.createCriteria(Name.class).add(r).list().iterator();
while (it.hasNext()) {
ret.add(it.next().getLabel());
}
return ret;
}
/**
* For autocompletion using the variant table
*
* @param session
* database session to use
* @param partial
* what the user entered so far
* @return list of matching labels
*/
@SuppressWarnings("unchecked")
public static <T> List<String> suggestVariants(Session session, String partial) {
Vector<String> ret = new Vector<String>();
Criterion r = Restrictions.ilike("label", "%" + partial + "%");
Iterator<Variant> it = session.createCriteria(Variant.class).add(r).list().iterator();
while (it.hasNext()) {
ret.add(it.next().getLabel());
}
return ret;
}
/**
* Fetch a {@link Name} object from the database. Create it if necessary.
*
* @param session
* database session
* @param label
* the label of the {@link Name}
* @return a valid object for the given label or null if the label was null
*/
public static Name findName(Session session, String label) {
if (label == null) {
return null;
}
Name ret = (Name) session.createCriteria(Name.class).add(Restrictions.eq("label", label))
.uniqueResult();
if (ret == null) {
ret = new Name();
ret.setLabel(label);
}
return ret;
}
/**
* Fetch a {@link Variant} object from the database. Create it if necessary.
*
* @param session
* database session
* @param label
* the label of the {@link Variant}
* @return a valid object for the given label or null if the label was null
*/
public static Variant findVariant(Session session, String label) {
if (label == null) {
return null;
}
Variant ret = (Variant) session.createCriteria(Variant.class)
.add(Restrictions.eq("label", label)).uniqueResult();
if (ret == null) {
ret = new Variant();
ret.setLabel(label);
}
return ret;
}
}