Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package beer.persistence;
- import beer.helper.Utils;
- import beer.model.Comment;
- import beer.model.Organization;
- import beer.model.Stats;
- import beer.model.User;
- import beer.model.forum.Category;
- import beer.model.forum.Forum;
- import beer.model.forum.Reply;
- import beer.model.forum.Topic;
- import beer.model.message.has.Folder;
- import beer.model.user.has.Box;
- import beer.model.user.has.Group;
- import beer.model.user.has.GroupMembership;
- import beer.model.user.has.Theme;
- import java.io.Serializable;
- import java.util.ArrayList;
- import java.util.List;
- import org.hibernate.Criteria;
- import org.hibernate.criterion.Expression;
- import org.hibernate.criterion.Order;
- import org.hibernate.criterion.Restrictions;
- /**
- *
- * @author Ulisses
- */
- public class Query extends Base implements Serializable {
- private Query() {
- }
- private static Query uniqueInstance;
- public static final long ALL_FORUMS = 0;
- public static Query getInstance() {
- synchronized (Query.class) {
- if (uniqueInstance == null) {
- uniqueInstance = new Query();
- }
- return uniqueInstance;
- }
- }
- /**
- * Gets the 5 more recent changes posted on the Changelog Topic by the Webmaster.
- * @return
- */
- public List getChangelog() {
- try {
- org.hibernate.Query query = session.createQuery(
- "FROM Reply " +
- "WHERE cd_topic = 10 AND " +
- "cd_reply_user = 1 " +
- "ORDER BY cd_reply DESC");
- query.setMaxResults(5);
- List changelogs = query.list();
- return changelogs;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets the 10 latest News.
- * "News" are any Topics with a "News" section value.
- * @return The latest 10 News Topics.
- */
- public List getNews() {
- try {
- org.hibernate.Query query = session.createQuery(
- "FROM Topic " +
- "WHERE nm_topic_section = 'News' " +
- "ORDER BY cd_topic DESC");
- query.setMaxResults(10);
- return query.list();
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets all the Forums within a Category
- * @param category
- * @return
- */
- public List getForums(Category category) {
- try {
- org.hibernate.Query query = session.createQuery(
- "FROM Forum " +
- "WHERE cd_forum_category =:CATEGORY " +
- "ORDER BY dt_forum_created DESC");
- query.setLong("CATEGORY", category.getId());
- List forums = query.list();
- return forums;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets the latest replied Topics.
- * @param maxResults The number of results you want.
- * @return Topics List.
- */
- public List getRecentActiveTopics(int maxResults) {
- try {
- org.hibernate.Query query = session.createQuery(
- "FROM Topic " +
- "ORDER BY " +
- "lastReply.dateReplied DESC, " +
- "dateCreated DESC");
- query.setMaxResults(maxResults);
- return query.list();
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets the latest created Topics.
- * @param maxResults The number of results you want.
- * @param forumId If you want the topics from a specific Forum, you can pass it's id,
- * otherwise you need to pass in a Query.ALL_FORUMS value.
- * @return A Topic List.
- */
- public List getRecentCreatedTopics(int maxResults, long forumId) {
- try {
- org.hibernate.Query query;
- if (forumId == ALL_FORUMS) {
- query = session.createQuery(
- "FROM Topic " +
- "ORDER BY id DESC");
- } else {
- query = session.createQuery(
- "FROM Topic " +
- "WHERE forum =:ID " +
- "ORDER BY id DESC");
- query.setLong("ID", forumId);
- }
- query.setMaxResults(maxResults);
- return query.list();
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets the Topics with the highest view count.
- * @param maxResults Number of results you want.
- * @return Topic List.
- */
- public List getMostViewedTopics(int maxResults) {
- try {
- org.hibernate.Query query = session.createQuery(
- "FROM Topic " +
- "ORDER BY vl_topic_times_viewed DESC");
- query.setMaxResults(maxResults);
- return query.list();
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets the most viewed <code>Topic</code>.
- * You can pass in a specific <code>Forum</code> id, or pass a <code>Query.ALL_FORUMS</code> value.
- * @param forumId The <code>Forum</code> id, or Query.ALL_FORUMS.
- * @return A <code>Topic</code>.
- */
- public Topic getMostViewedTopic(long forumId) {
- try {
- org.hibernate.Query query;
- if (forumId == ALL_FORUMS) {
- query = session.createQuery(
- "FROM Topic " +
- "ORDER BY vl_topic_times_viewed DESC");
- } else {
- query = session.createQuery(
- "FROM Topic " +
- "WHERE cd_topic_forum =:ID " +
- "ORDER BY vl_topic_times_viewed DESC");
- query.setLong("ID", forumId);
- }
- query.setMaxResults(1);
- Topic topic = (Topic) query.uniqueResult();
- return topic;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets all replies in a <code>Topic</code>.
- * @param userTopic The <code>Topic</code>.
- * @return <code>Reply</code> <code>List</code>.
- */
- public List getReplies(Topic userTopic) {
- try {
- org.hibernate.Query query = session.createQuery(
- "FROM Reply " +
- "WHERE cd_topic =:TOPIC");
- query.setLong("TOPIC", userTopic.getId());
- List replies = query.list();
- return replies;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets specific <code>Stats</code>.
- * @param statsName The name of the stat you want.
- * @return A <code>Stats</code> object.
- */
- public Stats getStats(String statsName) {
- try {
- Stats stats = (Stats) session.createQuery(
- "FROM Stats " +
- "WHERE nm_stats='" + statsName + "'").uniqueResult();
- return stats;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets a <code>User</code> from a <code>String</code> that
- * represents an E-Mail from a dvlCUBE User.
- * @param mail A <code>String</code> containing and E-Mail address
- * @return
- */
- public User getExistingEmail(String mail) {
- try {
- User user = (User) session.createQuery(
- "FROM User " +
- "WHERE cd_user_mail = '" + mail + "'").uniqueResult();
- return user;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets all Topics in the specified Forum ordered by the date of the last reply on that topic.
- * @param forumId Forum Id
- * @return List containing all the Topics in the specified Forum
- */
- public List getTopics(long forumId) {
- try {
- org.hibernate.Query query = session.createQuery(
- "FROM Topic " +
- "WHERE forum =:ID " +
- "ORDER BY " +
- "lastReply.dateReplied DESC, " +
- "dateCreated DESC");
- query.setLong("ID", forumId);
- /*Criteria criteria = session.createCriteria(Topic.class);
- criteria.add(Restrictions.eq("forum", forumId));
- criteria.addOrder(Order.desc("lastReply"));
- criteria.addOrder(Order.desc("dateCreated"));*/
- List topics = query.list();
- //List topics = criteria.list();
- return topics;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets the most recent reply made on the Topic provided.
- * @param topicId The id of Topic desired.
- * @return Returns the most recent reply found. If there's no Reply in the Topic, it returns a default placeholder Reply.
- */
- public Reply getLastReply(long topicId, boolean dummy) {
- try {
- org.hibernate.Query query = session.createQuery(
- "FROM Reply " +
- "WHERE cd_topic =:ID " +
- "ORDER BY dt_replied DESC");
- query.setLong("ID", topicId);
- query.setMaxResults(1);
- Reply reply = (Reply) query.uniqueResult();
- if (dummy == true && reply == null) {
- reply = (Reply) get("beer.model.forum.Reply@1");
- }
- return reply;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets the last Reply made in a Topic.
- * @param topicId Id of the Topic.
- * @return The Reply.
- */
- public Reply getLastReply(long topicId) {
- try {
- org.hibernate.Query query = session.createQuery(
- "FROM Reply " +
- "WHERE cd_topic =:ID " +
- "ORDER BY dt_replied DESC");
- query.setLong("ID", topicId);
- query.setMaxResults(1);
- Reply reply = (Reply) query.uniqueResult();
- return reply;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- @Deprecated
- public Topic getLastTopic() {
- try {
- org.hibernate.Query query = session.createQuery(
- "FROM Topic " +
- "WHERE cd_topic_forum =:ID " +
- "ORDER BY dt_topic_created DESC");
- query.setMaxResults(1);
- Topic topic = (Topic) query.uniqueResult();
- return topic;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets all Users whose name or mail address matches the String[] item.
- * @param nameOrAddress An array containing names or e-mails from dvlCUBE Users.
- * @return A <code>User List</code>.
- */
- public List getUsers(String[] nameOrAddress) {
- try {
- List<User> users = new ArrayList<User>();
- for (int i = 0; i < nameOrAddress.length; i++) {
- User user = (User) session.createQuery(
- "FROM User " +
- "WHERE " +
- "cd_user_mail = '" + nameOrAddress[i] + "' OR " +
- "nm_user = '" + nameOrAddress[i] + "'").uniqueResult();
- if (user != null) {
- users.add(user);
- }
- }
- if (users.size() > 0) {
- return users;
- } else {
- return null;
- }
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Searches for a single <code>User</code> with the given name.
- * @param nickname
- * @return
- */
- public User getExistingNickname(String nickname) {
- try {
- User user = (User) session.createQuery(
- "FROM User " +
- "WHERE nm_user = '" + nickname + "'").uniqueResult();
- return user;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets a single <code>User</code> with the given e-mail and password.
- * @param login A <code>String</code> array containing the e-mail [0] and password [1].
- * @return A <code>User</code> object.
- */
- public User getRegisteredUser(String[] login) {
- try {
- User user = (User) session.createQuery(
- "FROM User " +
- "WHERE " +
- "cd_user_mail = '" + login[0] + "' AND " +
- "cd_user_password = '" + login[1] + "'").uniqueResult();
- return user;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets an <code>Organization</code> object that matches the given name <code>String</code>.
- * @param organizationName
- * @return
- */
- public Organization getOrganization(String organizationName) {
- try {
- Organization organization = (Organization) session.createQuery(
- "FROM Organization " +
- "WHERE nm_organization = '" + organizationName + "'").uniqueResult();
- return organization;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets a single file from a specific <code>User</code>.
- * The user must own the file.
- * @param id The file id;
- * @param userId The <code>User</code> id.
- * @return A <code>Box</code> object.
- */
- public Box getFileFromBox(long id, long userId) {
- try {
- Box box = (Box) session.createQuery(
- "FROM Box " +
- "WHERE " +
- "cd_file = " + id + " AND " +
- "cd_file_user = " + userId).uniqueResult();
- return box;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * get all boxes from a user.
- * @param user
- * @return
- */
- public List getBoxes(User user) {
- try {
- org.hibernate.Query query = session.createQuery(
- "SELECT DISTINCT(folder) " +
- "FROM Box " +
- "WHERE user = " + user.getId() +
- " ORDER BY dateCreated DESC");
- List boxes = query.list();
- return boxes;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets all shared boxes from a <code>User</code>.
- * @param user
- * @return
- */
- public List getSharedBoxes(long user) {
- try {
- org.hibernate.Query query = session.createQuery(
- "SELECT DISTINCT(folder) " +
- "FROM Box " +
- "WHERE user = :USER " +
- "AND publicFile = true" +
- " ORDER BY dateCreated DESC");
- query.setLong("USER", user);
- List boxes = query.list();
- return boxes;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Get all files from a private folder.
- * @param user
- * @param folder
- * @return
- */
- public List getFilesFrom(User user, String folder) {
- try {
- List files = session.createQuery(
- "FROM Box " +
- "WHERE " +
- "user = " + user.getId() + "AND " +
- "folder = '" + folder + "' " +
- "ORDER BY dateCreated DESC").list();
- return files;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets all files in a shared folder.
- * Not constrained to a specific <code>User</code>.
- * @param folder <code>Box</code> name.
- * @return All files in a shared folder.
- */
- public List getPublicFilesFrom(String folder) {
- try {
- List files = session.createQuery(
- "FROM Box " +
- "WHERE " +
- "nm_file_folder = '" + folder + "' " +
- "AND ic_public = 1 " +
- "ORDER BY dt_file_created DESC").list();
- return files;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets all files in a shared <code>User</code> folder.
- * @param user The <code>User</code> you want to browse files from.
- * @param folder <code>Box</code> name.
- * @return All files in a shared folder.
- */
- public List getPublicFilesFrom(long user) {
- try {
- Criteria criteria = session.createCriteria(Box.class);
- criteria.add(Expression.eq("user", user)).add(Expression.eq("publicFile", true)).addOrder(Order.desc("dateCreated"));
- return criteria.list();
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets all files in a shared <code>User</code> folder.
- * @param user The <code>User</code> you want to browse files from.
- * @param folder <code>Box</code> name.
- * @return All files in a shared folder.
- */
- public List getPublicFilesFrom(User user, String folder) {
- try {
- Criteria criteria = session.createCriteria(Box.class);
- criteria.add(Expression.eq("user", user)).add(Expression.eq("folder", folder)).add(Expression.eq("publicFile", true)).addOrder(Order.desc("dateCreated"));
- return criteria.list();
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * populate a list of images a user has previously uploaded to a box.
- * @param user
- * @return
- */
- public List getBoxImages(User user) {
- try {
- org.hibernate.Query query = session.createQuery(
- "SELECT name " +
- "FROM Box " +
- "WHERE " +
- "name = 'default-user.png' OR " +
- "(type like 'image%' AND " +
- "user = " + user.getId() + ")" +
- " ORDER BY name");
- List pictures = query.list();
- return pictures;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets the default site <code>Theme</code>
- * @return
- */
- public Theme getDefaultTheme() {
- try {
- Theme defaultTheme = (Theme) session.createQuery(
- "FROM Theme " +
- "WHERE id = 2").uniqueResult();
- return defaultTheme;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- public User getUserById(long id) {
- try {
- User user = (User) session.createQuery(
- "FROM User " +
- "WHERE id = " + id).uniqueResult();
- return user;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Creates a list that can be divided into n pages.
- * @param listStart
- * @param listMaxResults
- * @return
- */
- public List getUsers(int listStart, int listMaxResults) {
- try {
- Criteria criteria = session.createCriteria(User.class).addOrder(Order.desc("totalPosts"));
- criteria.setFirstResult(listStart);
- criteria.setMaxResults(listMaxResults);
- List user = criteria.list();
- return user;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Creates a list that can be divided into n pages.
- * @param listStart The List will start from this row;
- * @param listMaxResults The list will return this (max) ammount of results;
- * @param order The desired <code>Order</code> object.
- * @return A <code>User List</code>.
- */
- public List getUsers(int listStart, int listMaxResults, Order order) {
- try {
- Criteria criteria = session.createCriteria(User.class).addOrder(order);
- criteria.setFirstResult(listStart);
- criteria.setMaxResults(listMaxResults);
- List user = criteria.list();
- return user;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * This method takes a String and return all beer.model.User's who met the search String.
- * @param search Search string (name attribute).
- * @return Returns a List of users that met the search String.
- */
- public List getUsers(String search) {
- try {
- Criteria criteria = session.createCriteria(User.class);
- criteria.add(Expression.like("name", "%" + search + "%"));
- List users = criteria.list();
- return users;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * A lighter version for getting existing names in a given Entity. Intended for use in an ajax application.
- * @param param The String to search for.
- * @param entity The Entity.
- * @return A List containing only the String names found.
- */
- public List getNames(String param, String entity) {
- try {
- org.hibernate.Query query = session.createQuery(
- "SELECT name " +
- "FROM " + entity +
- " WHERE name like :PARAM");
- query.setString("PARAM", "%" + param + "%");
- return query.list();
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * This heavier version of <code>getNames()</code> gives more freedom, since it returns the whole Object.
- * Constraint: the Entity must have a <code>name</code> or <code>subject</code> property in its bean.
- * (Currently not working).
- * @param param The String to search for.
- * @param entity The Entity.
- * @return A List that can be cast to whatever type the Entity is.
- */
- public List getNamesLike(String param, String entity) {
- try {
- org.hibernate.Query query;
- if (entity.equals("Forum")) {
- query = session.createQuery(
- "FROM Forum " +
- "WHERE name LIKE :PARAM");
- } else if (entity.equals("Topic")) {
- query = session.createQuery(
- "FROM Topic " +
- "WHERE subject LIKE :PARAM");
- } else if (entity.equals("Mail")) {
- query = session.createQuery(
- "FROM User " +
- "WHERE " +
- "name LIKE :PARAM OR " +
- "mail LIKE :PARAM");
- } else {
- return null;
- }
- query.setString("PARAM", "%" + param + "%");
- return query.list();
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * This heavier version of <code>getNames()</code> gives more freedom, since it returns the whole Object.
- * This overloaded version doesn't return results that are already in the collection provided.
- * @param param The String to search for.
- * @param entity The Entity.
- * @param collection A <code>String Array</code> containing the values you don't want
- * this query to return again.
- * @return A List that can be cast according to the Entity name.
- * Returns only the first 35 results.
- */
- public List getNamesLike(String param, String entity, String[] collectionArray) {
- try {
- String collection = Utils.arrayToString(collectionArray);
- org.hibernate.Query query;
- if (entity.equals("Mail")) {
- query = session.createQuery(
- "FROM User " +
- "WHERE " +
- "name LIKE :PARAM OR " +
- "mail LIKE :PARAM " +
- "AND mail NOT IN(:COLLECTION)");
- } else {
- return null;
- }
- query.setString("PARAM", "%" + param + "%");
- query.setString("COLLECTION", collection);
- query.setMaxResults(35);
- return query.list();
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Tentativa usando criteria. Currently not fully working.
- * @param param
- * @param entity
- * @param collectionArray
- * @return
- */
- public List getNamesLike2(String param, String entity, String[] collectionArray) {
- try {
- Criteria criteria = session.createCriteria(User.class);
- criteria.add(Expression.ilike("name", "%" + param + "%")).add(Expression.ilike("mail", "%" + param + "%")).add(Restrictions.not(Expression.in("mail", collectionArray)));
- return criteria.list();
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Searches for content in Replies or Topics.
- * @param param
- * @param entity Can be Reply or Topic
- * @return
- */
- public List getContentLike(String param, String entity) {
- try {
- org.hibernate.Query query = session.createQuery(
- "FROM " + entity +
- " WHERE content like :PARAM");
- query.setString("PARAM", "%" + param + "%");
- return query.list();
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- public Comment getComment(long commentId, long userId) {
- try {
- Comment comment = (Comment) session.createQuery(
- "FROM Comment " +
- "WHERE cd_comment = " + commentId +
- " AND cd_user = " + userId).uniqueResult();
- return comment;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- public List getMessages(String folder, User user) {
- try {
- org.hibernate.Query query = session.createQuery(
- "FROM Message " +
- "WHERE cd_message_user =:USER AND " +
- "nm_message_folder =:FOLDER " +
- "ORDER BY dt_message_sent DESC");
- query.setLong("USER", user.getId());
- query.setString("FOLDER", folder);
- List messages = query.list();
- return messages;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- public Long getNewMessages(String folder, long userId) {
- try {
- Long newMessages = (Long) session.createQuery(
- "SELECT COUNT(read) " +
- "FROM Message " +
- "WHERE " +
- "cd_message_user = " + userId +
- " AND " +
- "nm_message_folder = '" + folder + "' " +
- "AND " +
- "ic_message_read < 1").uniqueResult();
- return newMessages;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- @Deprecated
- public List getMessages2(String folder, User user) {
- try {
- org.hibernate.Query query = session.createQuery(
- "SELECT " +
- "cd_message, " +
- "cd_message_user, " +
- "nm_message_content, " +
- "cd_message_sender, " +
- "cd_message_recipient, " +
- "nm_message_subject, " +
- "cd_message_folder, " +
- "ic_message_read, " +
- "dt_message_sent " +
- "FROM Message m, Folder f " +
- "WHERE " +
- "m.cd_message_user = f.cd_folder_user " +
- "AND " +
- "f.nm_folder = '" + folder + "' " +
- "AND " +
- "m.cd_message_user = " + user.getId());
- List messages = query.list();
- return messages;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- @Deprecated
- public Folder getFolder(Folder userFolder) {
- try {
- Folder folder = (Folder) session.createQuery(
- "FROM Folder " +
- "WHERE nm_folder = '" + userFolder.getName() + "' " +
- "AND cd_folder_user = " + userFolder.getUser().getId()).uniqueResult();
- return folder;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- public List getMailFolders(User user) {
- try {
- org.hibernate.Query query = session.createQuery(
- "SELECT DISTINCT(folder) " +
- "FROM Message " +
- "WHERE " +
- "cd_message_user = " + user.getId() +
- " ORDER BY nm_message_folder ASC");
- List folders = query.list();
- return folders;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- public Long getMailFolderSize(String folder, long userId) {
- try {
- Long size = (Long) session.createQuery(
- "SELECT COUNT(id) " +
- "FROM Message " +
- "WHERE " +
- "nm_message_folder = '" + folder + "' " +
- "AND " +
- "cd_message_user = " + userId).uniqueResult();
- return size;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets all the Forums created by the given User.
- * @param user The User object.
- * @return All the Forums that User has created.
- */
- public List getUserForums(User user) {
- try {
- Criteria criteria = session.createCriteria(Forum.class);
- criteria.add(Restrictions.eq("author", user));
- return criteria.list();
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- public List getUserContacts(User user) {
- try {
- List<User> contacts = new ArrayList<User>();
- org.hibernate.Query queryRecipients = session.createQuery(
- "SELECT DISTINCT(recipient) " +
- "FROM Message " +
- "WHERE cd_message_user = " + user.getId());
- org.hibernate.Query querySenders = session.createQuery(
- "SELECT DISTINCT(sender) " +
- "FROM Message " +
- "WHERE cd_message_user = " + user.getId());
- List<User> contactsA = queryRecipients.list();
- List<User> contactsB = querySenders.list();
- contacts.addAll(contactsA);
- for (int i = 0; i < contactsB.size(); i++) {
- if (!(contactsA.contains(contactsB.get(i)))) {
- contacts.add(contactsB.get(i));
- }
- }
- return contacts;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets the number of unread messages from a specific user Inbox.
- * @param user The user.
- * @return A Long with the number of unread messages.
- */
- public Long getNewMessages(long userId) {
- try {
- Long newMessages = (Long) session.createQuery(
- "SELECT COUNT(id) " +
- "FROM Message " +
- "WHERE " +
- "user.id =:ID AND " +
- "folder = 'Inbox' AND " +
- "read = false").setLong("ID", userId).uniqueResult();
- return newMessages;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets a <code>Group</code> with the given owner and name.
- * @param user The owner of the <code>Group</code>;
- * @param name The name of the <code>Group</code>.
- * @return The <code>Group</code>, if any.
- */
- public Group getGroup(User user, String name) {
- try {
- Criteria criteria = session.createCriteria(Group.class);
- criteria.add(Restrictions.eq("owner", user));
- criteria.add(Restrictions.eq("name", name));
- if (criteria != null) {
- return (Group) criteria.uniqueResult();
- } else {
- return null;
- }
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets all <code>Group</code>s created by the given <code>User</code>.
- * @param user The <code>User</code>.
- * @return <code>Group List</code>.
- */
- public List getGroups(User user) {
- try {
- Criteria criteria = session.createCriteria(Group.class);
- criteria.add(Restrictions.eq("owner", user));
- return criteria.list();
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets all <code>GroupMemberships</code> in the given <code>Group</code>.
- * @param group The <code>Group</code>.
- * @return <code>GroupMembership List</code>.
- */
- public List getMemberships(Group group) {
- try {
- Criteria criteria = session.createCriteria(GroupMembership.class);
- criteria.add(Restrictions.eq("group", group));
- return criteria.list();
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Gets all <code>GroupMemberships</code> in the given <code>Group</code>
- * that has the given <code>User</code> as a member.
- * @param group The <code>Group</code>.
- * @param user The <code>User</code> member.
- * @return <code>GroupMembership List</code>.
- */
- public List getMembership(Group group, User member) {
- try {
- Criteria criteria = session.createCriteria(GroupMembership.class);
- criteria.add(Restrictions.eq("group", group));
- criteria.add(Restrictions.eq("member", member));
- if (criteria.list().size() > 0) {
- return criteria.list();
- } else {
- return null;
- }
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * Checks if a <code>GroupMembership</code> already exists to avoid duplicates.
- * Deprecated. Use getMembership(Group, User) instead.
- * @param group The <code>Group</code>;
- * @param user The <code>User</code>.
- * @return Whether there's a membership beetween these two objects.
- */
- @Deprecated
- public boolean membershipExists(Group group, User user) {
- try {
- org.hibernate.Query query = session.createQuery(
- "FROM GroupMembership " +
- "WHERE " +
- "cd_group = :GROUPID AND " +
- "cd_member = :USERID");
- query.setLong("GROUPID", group.getId());
- query.setLong("USERID", user.getId());
- if (query.list() == null) {
- return false;
- } else {
- return true;
- }
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- /**
- * Gets the latest <code>Topic</code>s from the Tips section.
- * @param maxResults The number of <code>Topic</code>s to be returned.
- * @return A <code>Topic List</code>.
- */
- public List<Topic> getTips(int maxResults) {
- try {
- Criteria criteria = session.createCriteria(Topic.class);
- criteria.add(Restrictions.eq("section", "Tips"));
- criteria.setMaxResults(maxResults);
- return criteria.list();
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement