290,33 → 290,69 |
Integer[] sortingKeys, User editor) |
throws ModelException |
{ |
if(editor.isSuperuser()) { |
return HibernateUtil.pageableList(info, pageSize, pageNumber, |
"select {mb.*}, {d.*}, {o.*}, {su.*}" |
+ " from Mailbox mb left join fetch mb.domain as d" |
+ " left join fetch mb.owner as o left join fetch mb.systemUser as su" |
+ HibernateUtil.formOrderClause(sortingKeys, sortKeys), |
new String[] { "mb", "d", "o", "su" }, |
new Class[] { Mailbox.class, InetDomain.class, User.class, SystemUser.class }, |
null, |
null); |
try { |
if(editor.isSuperuser()) { |
if(info != null) { |
info.setSize(((Integer)HibernateUtil.currentSession().iterate( |
"select count(*) from Mailbox").next()).intValue()); |
} |
|
return HibernateUtil.pageableList(pageSize, pageNumber, |
"select {mb.*}, {d.*}, {o.*}, {su.*}" |
+ " from mailboxes as mb" |
+ " left join domains as d on mb.domain = d.id" |
+ " left join users as o on mb.owner = o.id" |
+ " left join systemusers as su on mb.systemUser = su.id" |
+ HibernateUtil.formOrderClause(sortingKeys, sortKeys), |
Mailbox.class, |
new String[] { "mb", "d", "o", "su" }, |
new Class[] { Mailbox.class, InetDomain.class, User.class, SystemUser.class }, |
null, |
null); |
} |
else { |
if(info != null) { |
List countlist = HibernateUtil.sqlQuery( |
"select count(*) from (" |
+ " select mb.id from mailboxes mb" |
+ " where mb.owner=?" |
+ " union" |
+ " select mb.id from mailboxes mb" |
+ " left join domains as d on mb.domain = d.id" |
+ " where d.owner=?" |
+ ") as count_table", |
new Object[] { editor.getId(), editor.getId() }); |
|
info.setSize(((Long)countlist.get(0)).intValue()); |
} |
|
return HibernateUtil.pageableList(pageSize, pageNumber, |
"select {mb.*}, {d.*}, {o.*}, {su.*}" |
+ " from mailboxes as mb" |
+ " left join domains as d on mb.domain = d.id" |
+ " left join users as o on mb.owner = o.id" |
+ " left join systemusers as su on mb.systemUser = su.id" |
+ " where mb.owner=?" |
+ " union" |
+ " select {mb.*}, {d.*}, {o.*}, {su.*}" |
+ " from mailboxes as mb" |
+ " left join domains as d on mb.domain = d.id" |
+ " left join users as o on mb.owner = o.id" |
+ " left join systemusers as su on mb.systemUser = su.id" |
+ " where d.owner=?" |
+ HibernateUtil.formOrderClause(sortingKeys, sortKeys), |
Mailbox.class, |
new String[] { "mb", "d", "o", "su" }, |
new Class[] { Mailbox.class, InetDomain.class, User.class, SystemUser.class }, |
new Object[] { editor, editor }, |
new Type[] { Hibernate.entity(User.class), Hibernate.entity(User.class) }); |
} |
} |
else { |
return HibernateUtil.pageableList(info, pageSize, pageNumber, |
"select {mb.*}, {d.*}, {o.*}, {su.*}" |
+ " from Mailbox mb left join fetch mb.domain as d" |
+ " left join fetch mb.owner as o left join fetch mb.systemUser as su" |
+ " where mb.owner=?" |
+ " union" |
+ " select {mb.*}, {d.*}, {o.*}, {su.*}" |
+ " from Mailbox mb left join fetch mb.domain as d" |
+ " left join fetch mb.owner as o left join fetch mb.systemUser as su" |
+ " where d.owner=?" |
+ HibernateUtil.formOrderClause(sortingKeys, sortKeys), |
new String[] { "mb", "d", "o", "su" }, |
new Class[] { Mailbox.class, InetDomain.class, User.class, SystemUser.class }, |
new Object[] { editor, editor }, |
new Type[] { Hibernate.entity(User.class), Hibernate.entity(User.class) }); |
catch(HibernateException ex) |
{ |
ex.printStackTrace(); |
|
throw new ModelException(ex); |
} |
} |
|
493,8 → 529,8 |
protected static Map sortKeys = new HashMap(); |
|
static { |
sortKeys.put(SORT_LOGIN, "mb.login"); |
sortKeys.put(SORT_DOMAIN, "d.name"); |
sortKeys.put(SORT_LOGIN, "login0_"); |
sortKeys.put(SORT_DOMAIN, "name1_"); |
} |
|
public static final Comparator LOGIN_COMPARATOR = new LoginComparator(); |