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);
}
}
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;
}
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;
}
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);
}
}
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);
}
}
Aggregations