use of org.jbei.ice.storage.model.Account in project ice by JBEI.
the class EntryPermissionTask method removePermissions.
protected void removePermissions(Entry entry) {
for (AccessPermission access : permissions) {
// account or group
Account account = null;
Group group = null;
switch(access.getArticle()) {
case ACCOUNT:
default:
account = accountDAO.get(access.getArticleId());
break;
case GROUP:
group = groupDAO.get(access.getArticleId());
break;
}
permissionDAO.removePermission(entry, null, null, account, group, access.isCanRead(), access.isCanWrite());
}
}
use of org.jbei.ice.storage.model.Account in project ice by JBEI.
the class EntryPermissionTask method execute.
@Override
public void execute() {
// check if user has write privileges on entries
Account account = DAOFactory.getAccountDAO().getByEmail(userId);
List<Group> accountGroups = new GroupController().getAllGroups(account);
boolean checkIndividual = false;
if (account.getType() != AccountType.ADMIN && !permissionDAO.canWrite(account, accountGroups, entries)) {
checkIndividual = true;
}
EntryDAO entryDAO = DAOFactory.getEntryDAO();
EntryAuthorization entryAuthorization = new EntryAuthorization();
for (long entryId : entries) {
Entry entry = entryDAO.get(entryId);
if (entry == null)
continue;
// check permission on individual entries
if (checkIndividual && !entryAuthorization.canWrite(userId, entry)) {
continue;
}
// add or remove permissions
if (this.isAdd) {
addPermissions(entry);
} else {
removePermissions(entry);
}
}
}
use of org.jbei.ice.storage.model.Account in project ice by JBEI.
the class EntryHistory method get.
public Results<History> get(int limit, int offset, boolean asc, String sort) {
entryAuthorization.expectWrite(userId, entry);
List<Audit> list = dao.getAuditsForEntry(entry, limit, offset, asc, sort);
Results<History> results = new Results<>();
AccountDAO accountDAO = DAOFactory.getAccountDAO();
for (Audit audit : list) {
History history = audit.toDataTransferObject();
if (history.getPartner() == null) {
Account account = accountDAO.getByEmail(history.getUserId());
if (account != null)
history.setAccount(account.toDataTransferObject());
}
results.getData().add(history);
}
long count = dao.getHistoryCount(this.entry);
results.setResultCount(count);
return results;
}
use of org.jbei.ice.storage.model.Account in project ice by JBEI.
the class Messages method send.
/**
* Sends message contained in the MessageInfo to the specified recipients. It some of the
* recipients do not exist, the routine does its best to deliver as many as possible
*
* @param info details of message including recipient(s)
* @return false if the message fails to be sent to all the intended recipients
*/
public boolean send(MessageInfo info) {
if (info == null || info.getAccounts().isEmpty() && info.getUserGroups().isEmpty())
return false;
boolean success = true;
Message message = new Message();
message.setDateSent(new Date());
message.setFromEmail(this.userId);
message.setMessage(info.getMessage());
message.setTitle(info.getTitle());
if (info.getAccounts() != null) {
for (AccountTransfer accountTransfer : info.getAccounts()) {
Account account = accountDAO.getByEmail(accountTransfer.getEmail());
if (account == null) {
success = false;
continue;
}
message.getDestinationAccounts().add(account);
}
}
if (info.getUserGroups() != null) {
for (UserGroup userGroup : info.getUserGroups()) {
Group group = DAOFactory.getGroupDAO().get(userGroup.getId());
if (group == null) {
Logger.warn("Could not retrieve group with id " + userGroup.getId() + " to send message");
success = false;
continue;
}
message.getDestinationGroups().add(group);
}
}
if (!success)
return false;
if (message.getDestinationAccounts().isEmpty() && message.getDestinationGroups().isEmpty())
return false;
return dao.create(message) != null;
}
use of org.jbei.ice.storage.model.Account in project ice by JBEI.
the class Messages method get.
public Results<MessageInfo> get(int start, int limit) {
Account account = accountDAO.getByEmail(this.userId);
List<Group> groups = DAOFactory.getGroupDAO().retrieveMemberGroups(account);
List<Message> messages = new ArrayList<>(dao.retrieveMessages(account, groups, start, limit));
Results<MessageInfo> results = new Results<>();
for (Message message : messages) {
Account from = accountDAO.getByEmail(message.getFromEmail());
if (from == null)
continue;
MessageInfo info = new MessageInfo();
info.setId(message.getId());
info.setFrom(message.getFromEmail());
info.setTitle(message.getTitle());
info.setRead(message.isRead());
info.setSent(message.getDateSent().getTime());
results.getData().add(info);
}
int totalSize = dao.retrieveMessageCount(account, groups);
results.setResultCount(totalSize);
return results;
}
Aggregations