package models; import java.util.ArrayList; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table; import play.data.validation.Constraints.Required; import play.db.ebean.Model; import uk.bl.Const; import com.avaje.ebean.ExpressionList; /** * This class allows archivist to log if crawl permission is refused * (usually outside ACT), and why. */ @Entity @Table(name = "permission_refusal") public class PermissionRefusal extends ActModel { /** * file id */ private static final long serialVersionUID = -2257699575463302989L; /** * The name of the refusal. */ @Required(message="Name is required") @Column(columnDefinition = "text") public String name; /** * The date of refusal in format (dd/mm/yyyy). */ @Column(columnDefinition = "text") public String date; /** * Refusal type: 3rd party content, Impracticality, Internal reasons, * Legalistic form, No reason, Privacy, Other. */ @Column(columnDefinition = "text") public String ttype; /** * Allows the addition of further notes regarding refusal reason. */ @Column(columnDefinition = "text") public String reason; public static final Model.Finder<Long, PermissionRefusal> find = new Model.Finder<Long, PermissionRefusal>(Long.class, PermissionRefusal.class); public static PermissionRefusal findByName(String name) { return find.where() .eq("name", name) .findUnique(); } /** * Retrieve an object by Id (id). * @param nid * @return object */ public static PermissionRefusal findById(Long id) { PermissionRefusal res = find.where().eq(Const.ID, id).findUnique(); return res; } /** * Retrieve a permission refusal by URL. * @param url * @return permission refusal name */ public static PermissionRefusal findByUrl(String url) { PermissionRefusal res = new PermissionRefusal(); if (url != null && url.length() > 0 && !url.equals(Const.NONE)) { res = find.where().eq(Const.URL, url).findUnique(); } else { res.name = Const.NONE; } return res; } /** * This method filters permission refusals by name and returns a list * of filtered PermissionRefusal objects. * @param name * @return */ public static List<PermissionRefusal> filterByName(String name) { List<PermissionRefusal> res = new ArrayList<PermissionRefusal>(); ExpressionList<PermissionRefusal> ll = find.where().icontains(Const.NAME, name); res = ll.findList(); return res; } /** * Retrieve all permission refusals. */ public static List<PermissionRefusal> findAll() { return find.all(); } @Override public String toString() { return "PermissionRefusal(" + name + ")" + ", id:" + id; } }