Search in sources :

Example 21 with Group

use of org.jbei.ice.storage.model.Group in project ice by JBEI.

the class MessageDAO method retrieveMessages.

public List<Message> retrieveMessages(Account account, List<Group> groups, int start, int count) {
    try {
        StringBuilder builder = new StringBuilder();
        builder.append("select id from message m where m.id in ").append("(select message_id from message_destination_accounts where account_id = ").append(account.getId()).append(")");
        if (groups != null && !groups.isEmpty()) {
            builder.append(" OR m.id in (select message_id from message_destination_groups where group_id in (");
            int size = groups.size();
            int i = 0;
            for (Group group : groups) {
                builder.append(group.getId());
                if (i < size - 1)
                    builder.append(", ");
                i += 1;
            }
            builder.append("))");
        }
        NativeQuery query = currentSession().createNativeQuery(builder.toString());
        query.setFirstResult(start);
        query.setMaxResults(count);
        List list = query.list();
        Set<Long> set = new HashSet<>();
        for (Object object : list) {
            Number number = (Number) object;
            set.add(number.longValue());
        }
        if (set.isEmpty())
            return new ArrayList<>();
        CriteriaQuery<Message> criteriaQuery = getBuilder().createQuery(Message.class);
        Root<Message> from = criteriaQuery.from(Message.class);
        criteriaQuery.where(from.get("id").in(set));
        criteriaQuery.orderBy(getBuilder().desc(from.get("dateSent")));
        return currentSession().createQuery(criteriaQuery).list();
    } catch (HibernateException he) {
        Logger.error(he);
        throw new DAOException(he);
    }
}
Also used : Group(org.jbei.ice.storage.model.Group) Message(org.jbei.ice.storage.model.Message) HibernateException(org.hibernate.HibernateException) DAOException(org.jbei.ice.storage.DAOException) NativeQuery(org.hibernate.query.NativeQuery) ArrayList(java.util.ArrayList) List(java.util.List) HashSet(java.util.HashSet)

Example 22 with Group

use of org.jbei.ice.storage.model.Group in project ice by JBEI.

the class FolderController method getPublicEntries.

/**
     * Retrieves entries that are made available publicly
     *
     * @param sort   order of retrieval for the entries
     * @param offset start of retrieval
     * @param limit  maximum number of entries to retrieve
     * @param asc    whether to retrieve the entries in ascending order
     * @return wrapper around the retrieved entries
     */
public FolderDetails getPublicEntries(ColumnField sort, int offset, int limit, boolean asc) {
    Group publicGroup = new GroupController().createOrRetrievePublicGroup();
    Set<Group> groups = new HashSet<>();
    groups.add(publicGroup);
    EntryDAO entryDAO = DAOFactory.getEntryDAO();
    List<Entry> results = entryDAO.retrieveVisibleEntries(null, groups, sort, asc, offset, limit, null);
    long visibleCount = entryDAO.visibleEntryCount(null, groups, null);
    FolderDetails details = new FolderDetails();
    details.setCount(visibleCount);
    for (Entry entry : results) {
        try {
            PartData info = ModelToInfoFactory.createTableViewData(null, entry, false);
            info.setPublicRead(true);
            details.getEntries().add(info);
        } catch (Exception e) {
            Logger.error(e);
        }
    }
    return details;
}
Also used : Group(org.jbei.ice.storage.model.Group) Entry(org.jbei.ice.storage.model.Entry) GroupController(org.jbei.ice.lib.group.GroupController) PartData(org.jbei.ice.lib.dto.entry.PartData) FolderDetails(org.jbei.ice.lib.dto.folder.FolderDetails) PermissionException(org.jbei.ice.lib.access.PermissionException) EntryDAO(org.jbei.ice.storage.hibernate.dao.EntryDAO)

Example 23 with Group

use of org.jbei.ice.storage.model.Group in project ice by JBEI.

the class FolderController method getSharedUserFolders.

/**
     * Retrieves folders that have been shared with specified user as an individual or as part of a group.
     *
     * @param userId User whose shared folders are being retrieved
     * @return list of folders meeting the shared criteria
     */
public ArrayList<FolderDetails> getSharedUserFolders(String userId) {
    Account account = getAccount(userId);
    ArrayList<FolderDetails> folderDetails = new ArrayList<>();
    Set<Group> groups = account.getGroups();
    groups.remove(groupController.createOrRetrievePublicGroup());
    List<Folder> sharedFolders = DAOFactory.getPermissionDAO().retrieveFolderPermissions(account, groups);
    if (sharedFolders == null)
        return null;
    for (Folder folder : sharedFolders) {
        FolderDetails details = folder.toDataTransferObject();
        details.setType(folder.getType());
        long folderSize = dao.getFolderSize(folder.getId(), null, true);
        details.setCount(folderSize);
        if (folder.getCreationTime() != null)
            details.setCreationTime(folder.getCreationTime().getTime());
        folderDetails.add(details);
    }
    return folderDetails;
}
Also used : Account(org.jbei.ice.storage.model.Account) Group(org.jbei.ice.storage.model.Group) FolderDetails(org.jbei.ice.lib.dto.folder.FolderDetails) Folder(org.jbei.ice.storage.model.Folder)

Example 24 with Group

use of org.jbei.ice.storage.model.Group in project ice by JBEI.

the class GroupDAO method getMemberCount.

public long getMemberCount(String uuid) {
    try {
        CriteriaQuery<Long> query = getBuilder().createQuery(Long.class);
        Root<Group> from = query.from(Group.class);
        Join<Group, Account> member = from.join("members");
        query.select(getBuilder().countDistinct(member.get("id")));
        query.where(getBuilder().equal(from.get("uuid"), uuid));
        return currentSession().createQuery(query).uniqueResult();
    } catch (HibernateException e) {
        Logger.error(e);
        throw new DAOException(e);
    }
}
Also used : DAOException(org.jbei.ice.storage.DAOException) Group(org.jbei.ice.storage.model.Group) Account(org.jbei.ice.storage.model.Account) HibernateException(org.hibernate.HibernateException)

Example 25 with Group

use of org.jbei.ice.storage.model.Group in project ice by JBEI.

the class GroupDAO method retrieveMemberGroups.

public List<Group> retrieveMemberGroups(Account account) {
    try {
        CriteriaQuery<Group> query = getBuilder().createQuery(Group.class).distinct(true);
        Root<Group> from = query.from(Group.class);
        Join<Group, Account> members = from.join("members", JoinType.LEFT);
        query.where(getBuilder().or(getBuilder().equal(from.get("owner"), account), getBuilder().equal(members.get("email"), account.getEmail())));
        return currentSession().createQuery(query).list();
    } catch (HibernateException he) {
        Logger.error(he);
        throw new DAOException(he);
    }
}
Also used : DAOException(org.jbei.ice.storage.DAOException) Group(org.jbei.ice.storage.model.Group) Account(org.jbei.ice.storage.model.Account) HibernateException(org.hibernate.HibernateException)

Aggregations

Group (org.jbei.ice.storage.model.Group)50 Account (org.jbei.ice.storage.model.Account)24 UserGroup (org.jbei.ice.lib.dto.group.UserGroup)16 HibernateException (org.hibernate.HibernateException)14 DAOException (org.jbei.ice.storage.DAOException)14 GroupController (org.jbei.ice.lib.group.GroupController)10 ArrayList (java.util.ArrayList)7 Entry (org.jbei.ice.storage.model.Entry)7 HashSet (java.util.HashSet)6 PermissionException (org.jbei.ice.lib.access.PermissionException)6 PartData (org.jbei.ice.lib.dto.entry.PartData)4 Folder (org.jbei.ice.storage.model.Folder)4 RemoteClientModel (org.jbei.ice.storage.model.RemoteClientModel)4 NativeQuery (org.hibernate.query.NativeQuery)3 AccountTransfer (org.jbei.ice.lib.account.AccountTransfer)3 AccessPermission (org.jbei.ice.lib.dto.access.AccessPermission)3 Results (org.jbei.ice.lib.dto.common.Results)3 FolderDetails (org.jbei.ice.lib.dto.folder.FolderDetails)3 Message (org.jbei.ice.storage.model.Message)3 AccountController (org.jbei.ice.lib.account.AccountController)2