/hostadmiral/trunk/webapp/user/system/list.jsp |
---|
5,6 → 5,8 |
<%@ taglib uri="/WEB-INF/ak-backpath.tld" prefix="backpath" %> |
<%@ taglib uri="/WEB-INF/ak-strutsx.tld" prefix="strutsx" %> |
<%@ taglib uri="/WEB-INF/hostadmiral-core.tld" prefix="core" %> |
<%@ taglib uri="/WEB-INF/hostadmiral-list.tld" prefix="list" %> |
<backpath:init backPathIgnore="pg" /> |
<html> |
<head> |
79,6 → 81,33 |
</logic:iterate> |
</table> |
<p> |
List size: <bean:write name="listInfo" property="size" /> |
Page: <list:currentpage infoBean="listInfo" /> of <bean:write name="listInfo" property="totalPages" /> |
</p> |
<p> |
<list:hasfirst infoBean="listInfo"><list:firstpage infoBean="listInfo"><<</list:firstpage></list:hasfirst> |
<list:nofirst infoBean="listInfo"><<</list:nofirst> |
<list:hasprev infoBean="listInfo"><list:prevpage infoBean="listInfo"><</list:prevpage></list:hasprev> |
<list:noprev infoBean="listInfo"><</list:noprev> |
<list:iterate infoBean="listInfo" max="20"> |
<list:iscurrent> |
<list:displaypage /> |
</list:iscurrent> |
<list:notcurrent> |
<list:pagelink><list:displaypage /></list:pagelink> |
</list:notcurrent> |
</list:iterate> |
<list:hasnext infoBean="listInfo"><list:nextpage infoBean="listInfo">></list:nextpage></list:hasnext> |
<list:nonext infoBean="listInfo">></list:nonext> |
<list:haslast infoBean="listInfo"><list:lastpage infoBean="listInfo">>></list:lastpage></list:haslast> |
<list:nolast infoBean="listInfo">>></list:nolast> |
</p> |
<logic:equal name="allowedToCreate" value="true"> |
<backpath:link action="/user/system/edit"><bean:message key="ak.hostadmiral.page.user.system.list.add" /></backpath:link> |
</logic:equal> |
/hostadmiral/trunk/webapp/user/list.jsp |
---|
5,6 → 5,8 |
<%@ taglib uri="/WEB-INF/ak-backpath.tld" prefix="backpath" %> |
<%@ taglib uri="/WEB-INF/ak-strutsx.tld" prefix="strutsx" %> |
<%@ taglib uri="/WEB-INF/hostadmiral-core.tld" prefix="core" %> |
<%@ taglib uri="/WEB-INF/hostadmiral-list.tld" prefix="list" %> |
<backpath:init backPathIgnore="pg" /> |
<html> |
<head> |
87,6 → 89,33 |
</logic:iterate> |
</table> |
<p> |
List size: <bean:write name="listInfo" property="size" /> |
Page: <list:currentpage infoBean="listInfo" /> of <bean:write name="listInfo" property="totalPages" /> |
</p> |
<p> |
<list:hasfirst infoBean="listInfo"><list:firstpage infoBean="listInfo"><<</list:firstpage></list:hasfirst> |
<list:nofirst infoBean="listInfo"><<</list:nofirst> |
<list:hasprev infoBean="listInfo"><list:prevpage infoBean="listInfo"><</list:prevpage></list:hasprev> |
<list:noprev infoBean="listInfo"><</list:noprev> |
<list:iterate infoBean="listInfo" max="20"> |
<list:iscurrent> |
<list:displaypage /> |
</list:iscurrent> |
<list:notcurrent> |
<list:pagelink><list:displaypage /></list:pagelink> |
</list:notcurrent> |
</list:iterate> |
<list:hasnext infoBean="listInfo"><list:nextpage infoBean="listInfo">></list:nextpage></list:hasnext> |
<list:nonext infoBean="listInfo">></list:nonext> |
<list:haslast infoBean="listInfo"><list:lastpage infoBean="listInfo">>></list:lastpage></list:haslast> |
<list:nolast infoBean="listInfo">>></list:nolast> |
</p> |
<logic:equal name="allowedToCreate" value="true"> |
<backpath:link action="/user/edit"><bean:message key="ak.hostadmiral.page.user.list.add" /></backpath:link> |
<br> |
/hostadmiral/trunk/webapp/mail/box/list.jsp |
---|
85,9 → 85,9 |
<list:hasprev infoBean="listInfo"><list:prevpage infoBean="listInfo"><</list:prevpage></list:hasprev> |
<list:noprev infoBean="listInfo"><</list:noprev> |
<list:iterate infoBean="listInfo"> |
<list:iterate infoBean="listInfo" max="20"> |
<list:iscurrent> |
<list:pagelink>[<list:displaypage />]</list:pagelink> |
<list:displaypage /> |
</list:iscurrent> |
<list:notcurrent> |
<list:pagelink><list:displaypage /></list:pagelink> |
/hostadmiral/trunk/webapp/mail/alias/list.jsp |
---|
5,6 → 5,8 |
<%@ taglib uri="/WEB-INF/ak-backpath.tld" prefix="backpath" %> |
<%@ taglib uri="/WEB-INF/ak-strutsx.tld" prefix="strutsx" %> |
<%@ taglib uri="/WEB-INF/hostadmiral-core.tld" prefix="core" %> |
<%@ taglib uri="/WEB-INF/hostadmiral-list.tld" prefix="list" %> |
<backpath:init backPathIgnore="pg" /> |
<html> |
<head> |
77,6 → 79,33 |
</logic:iterate> |
</table> |
<p> |
List size: <bean:write name="listInfo" property="size" /> |
Page: <list:currentpage infoBean="listInfo" /> of <bean:write name="listInfo" property="totalPages" /> |
</p> |
<p> |
<list:hasfirst infoBean="listInfo"><list:firstpage infoBean="listInfo"><<</list:firstpage></list:hasfirst> |
<list:nofirst infoBean="listInfo"><<</list:nofirst> |
<list:hasprev infoBean="listInfo"><list:prevpage infoBean="listInfo"><</list:prevpage></list:hasprev> |
<list:noprev infoBean="listInfo"><</list:noprev> |
<list:iterate infoBean="listInfo" max="20"> |
<list:iscurrent> |
<list:displaypage /> |
</list:iscurrent> |
<list:notcurrent> |
<list:pagelink><list:displaypage /></list:pagelink> |
</list:notcurrent> |
</list:iterate> |
<list:hasnext infoBean="listInfo"><list:nextpage infoBean="listInfo">></list:nextpage></list:hasnext> |
<list:nonext infoBean="listInfo">></list:nonext> |
<list:haslast infoBean="listInfo"><list:lastpage infoBean="listInfo">>></list:lastpage></list:haslast> |
<list:nolast infoBean="listInfo">>></list:nolast> |
</p> |
<logic:equal name="allowedToCreate" value="true"> |
<backpath:link action="/mail/alias/edit"><bean:message key="ak.hostadmiral.page.mail.alias.list.add" /></backpath:link> |
</logic:equal> |
/hostadmiral/trunk/webapp/WEB-INF/validation.xml |
---|
30,6 → 30,12 |
</field> |
</form> |
<form name="UserListForm"> |
<field property="pg" depends="integer"> |
<msg name="integer" key="ak.hostadmiral.page.general.page.wrong" /> |
</field> |
</form> |
<form name="UserForm"> |
<field property="id" depends="long"> |
<msg name="long" key="ak.hostadmiral.core.user.id.wrong" /> |
68,6 → 74,12 |
</field> |
</form> |
<form name="SystemUserListForm"> |
<field property="pg" depends="integer"> |
<msg name="integer" key="ak.hostadmiral.page.general.page.wrong" /> |
</field> |
</form> |
<form name="SystemUserForm"> |
<field property="id" depends="long"> |
<msg name="long" key="ak.hostadmiral.core.user.system.edit.id.wrong" /> |
90,6 → 102,12 |
</field> |
</form> |
<form name="InetDomainListForm"> |
<field property="pg" depends="integer"> |
<msg name="integer" key="ak.hostadmiral.page.general.page.wrong" /> |
</field> |
</form> |
<form name="InetDomainForm"> |
<field property="id" depends="long"> |
<msg name="long" key="ak.hostadmiral.core.domain.edit.id.wrong" /> |
110,8 → 128,8 |
</form> |
<form name="MailboxListForm"> |
<field property="pg" depends="long"> |
<msg name="long" key="ak.hostadmiral.page.general.page.wrong" /> |
<field property="pg" depends="integer"> |
<msg name="integer" key="ak.hostadmiral.page.general.page.wrong" /> |
</field> |
</form> |
141,6 → 159,12 |
</field> |
</form> |
<form name="MailAliasListForm"> |
<field property="pg" depends="integer"> |
<msg name="integer" key="ak.hostadmiral.page.general.page.wrong" /> |
</field> |
</form> |
<form name="MailAliasForm"> |
<field property="id" depends="long"> |
<msg name="long" key="ak.hostadmiral.core.mail.alias.edit.id.wrong" /> |
/hostadmiral/trunk/webapp/WEB-INF/hostadmiral-list.tld |
---|
660,6 → 660,11 |
<required>false</required> |
<rtexprvalue>true</rtexprvalue> |
</attribute> |
<attribute> |
<name>max</name> |
<required>false</required> |
<rtexprvalue>true</rtexprvalue> |
</attribute> |
</tag> |
<tag> |
/hostadmiral/trunk/webapp/WEB-INF/struts-config.xml |
---|
22,6 → 22,12 |
</form-bean> |
<form-bean |
name="UserListForm" |
type="org.apache.struts.validator.DynaValidatorForm"> |
<form-property name="pg" type="java.lang.String" /> |
</form-bean> |
<form-bean |
name="UserForm" |
type="org.apache.struts.validator.DynaValidatorForm"> |
<form-property name="id" type="java.lang.String" /> |
55,6 → 61,12 |
</form-bean> |
<form-bean |
name="SystemUserListForm" |
type="org.apache.struts.validator.DynaValidatorForm"> |
<form-property name="pg" type="java.lang.String" /> |
</form-bean> |
<form-bean |
name="SystemUserForm" |
type="org.apache.struts.validator.DynaValidatorForm"> |
<form-property name="id" type="java.lang.String" /> |
72,6 → 84,12 |
</form-bean> |
<form-bean |
name="InetDomainListForm" |
type="org.apache.struts.validator.DynaValidatorForm"> |
<form-property name="pg" type="java.lang.String" /> |
</form-bean> |
<form-bean |
name="InetDomainForm" |
type="org.apache.struts.validator.DynaValidatorForm"> |
<form-property name="id" type="java.lang.String" /> |
116,6 → 134,12 |
</form-bean> |
<form-bean |
name="MailAliasListForm" |
type="org.apache.struts.validator.DynaValidatorForm"> |
<form-property name="pg" type="java.lang.String" /> |
</form-bean> |
<form-bean |
name="MailAliasForm" |
type="org.apache.struts.validator.DynaValidatorForm"> |
<form-property name="id" type="java.lang.String" /> |
236,6 → 260,9 |
path="/user/list" |
type="ak.hostadmiral.core.action.UserAction" |
parameter="list" |
name="UserListForm" |
validate="true" |
scope="request" |
> |
<forward name="default" path="/user/list.jsp" /> |
</action> |
312,6 → 339,9 |
path="/user/system/list" |
type="ak.hostadmiral.core.action.SystemUserAction" |
parameter="list" |
name="SystemUserListForm" |
validate="true" |
scope="request" |
> |
<forward name="default" path="/user/system/list.jsp" /> |
</action> |
366,6 → 396,9 |
path="/domain/list" |
type="ak.hostadmiral.core.action.InetDomainAction" |
parameter="list" |
name="InetDomainListForm" |
validate="true" |
scope="request" |
> |
<forward name="default" path="/domain/list.jsp" /> |
</action> |
477,6 → 510,9 |
path="/mail/alias/list" |
type="ak.hostadmiral.core.action.MailAliasAction" |
parameter="list" |
name="MailAliasListForm" |
validate="true" |
scope="request" |
> |
<forward name="default" path="/mail/alias/list.jsp" /> |
</action> |
/hostadmiral/trunk/webapp/domain/list.jsp |
---|
5,6 → 5,8 |
<%@ taglib uri="/WEB-INF/ak-backpath.tld" prefix="backpath" %> |
<%@ taglib uri="/WEB-INF/ak-strutsx.tld" prefix="strutsx" %> |
<%@ taglib uri="/WEB-INF/hostadmiral-core.tld" prefix="core" %> |
<%@ taglib uri="/WEB-INF/hostadmiral-list.tld" prefix="list" %> |
<backpath:init backPathIgnore="pg" /> |
<html> |
<head> |
70,6 → 72,33 |
</logic:iterate> |
</table> |
<p> |
List size: <bean:write name="listInfo" property="size" /> |
Page: <list:currentpage infoBean="listInfo" /> of <bean:write name="listInfo" property="totalPages" /> |
</p> |
<p> |
<list:hasfirst infoBean="listInfo"><list:firstpage infoBean="listInfo"><<</list:firstpage></list:hasfirst> |
<list:nofirst infoBean="listInfo"><<</list:nofirst> |
<list:hasprev infoBean="listInfo"><list:prevpage infoBean="listInfo"><</list:prevpage></list:hasprev> |
<list:noprev infoBean="listInfo"><</list:noprev> |
<list:iterate infoBean="listInfo" max="20"> |
<list:iscurrent> |
<list:displaypage /> |
</list:iscurrent> |
<list:notcurrent> |
<list:pagelink><list:displaypage /></list:pagelink> |
</list:notcurrent> |
</list:iterate> |
<list:hasnext infoBean="listInfo"><list:nextpage infoBean="listInfo">></list:nextpage></list:hasnext> |
<list:nonext infoBean="listInfo">></list:nonext> |
<list:haslast infoBean="listInfo"><list:lastpage infoBean="listInfo">>></list:lastpage></list:haslast> |
<list:nolast infoBean="listInfo">>></list:nolast> |
</p> |
<logic:equal name="allowedToCreate" value="true"> |
<backpath:link action="/domain/edit"><bean:message key="ak.hostadmiral.page.domain.list.add" /></backpath:link> |
</logic:equal> |
/hostadmiral/trunk/src/ak/hostadmiral/core/model/InetDomainManager.java |
---|
3,6 → 3,7 |
import java.util.*; |
import net.sf.hibernate.*; |
import net.sf.hibernate.type.Type; |
import ak.hostadmiral.util.CollectionInfo; |
import ak.hostadmiral.util.HibernateUtil; |
import ak.hostadmiral.util.ModelException; |
import ak.hostadmiral.util.ModelSecurityException; |
266,15 → 267,40 |
public Collection listInetDomains(User editor) |
throws ModelException |
{ |
return listInetDomains(null, 0, 0, null, editor); |
} |
public Collection listInetDomains(CollectionInfo info, int rowsPerPage, int pageNumber, |
Integer[] sortingKeys, User editor) |
throws ModelException |
{ |
try { |
if(editor.isSuperuser()) |
return HibernateUtil.currentSession().find( |
"select d from InetDomain d left join fetch d.owner"); |
else |
return HibernateUtil.currentSession().find( |
"select d from InetDomain d where d.owner=?", |
editor, Hibernate.entity(User.class)); |
if(editor.isSuperuser()) { |
if(info != null) { |
info.init(((Integer)HibernateUtil.currentSession().iterate( |
"select count(*) from InetDomain").next()).intValue(), |
pageNumber, rowsPerPage); |
} |
return HibernateUtil.pageableList(rowsPerPage, pageNumber, |
"select d from InetDomain d left join fetch d.owner" |
+ HibernateUtil.formOrderClause(sortingKeys, sortKeys), null, null); |
} |
else { |
if(info != null) { |
info.init(((Integer)HibernateUtil.currentSession().iterate( |
"select count(*) from InetDomain where d.owner=?", |
editor, Hibernate.entity(User.class)).next()).intValue(), |
pageNumber, rowsPerPage); |
} |
return HibernateUtil.pageableList(rowsPerPage, pageNumber, |
"select d from InetDomain d where d.owner=?" |
+ HibernateUtil.formOrderClause(sortingKeys, sortKeys), |
new Object[] { editor }, new Type[] { Hibernate.entity(User.class) } ); |
} |
} |
catch(HibernateException ex) |
{ |
throw new ModelException(ex); |
352,6 → 378,14 |
} |
} |
public static final Integer SORT_NAME = new Integer(1); |
protected static Map sortKeys = new HashMap(); |
static { |
sortKeys.put(SORT_NAME, "d.name"); |
} |
public static final Comparator NAME_COMPARATOR = new NameComparator(); |
private static class NameComparator |
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailboxManager.java |
---|
304,7 → 304,7 |
+ " 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), |
+ HibernateUtil.formOrderClause(sortingKeys, sortKeysSql), |
new String[] { "mb", "d", "o", "su" }, |
new Class[] { Mailbox.class, InetDomain.class, User.class, SystemUser.class }, |
null, |
328,20 → 328,20 |
} |
return HibernateUtil.pageableListSql(rowsPerPage, pageNumber, |
"select {mb.*}, {d.*}, {o.*}, {su.*}" |
"(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=?" |
+ " where mb.owner=?)" |
+ " union" |
+ " select {mb.*}, {d.*}, {o.*}, {su.*}" |
+ "(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), |
+ " where d.owner=?)" |
+ HibernateUtil.formOrderClause(sortingKeys, sortKeysSql), |
new String[] { "mb", "d", "o", "su" }, |
new Class[] { Mailbox.class, InetDomain.class, User.class, SystemUser.class }, |
new Object[] { editor, editor }, |
526,11 → 526,11 |
public static final Integer SORT_LOGIN = new Integer(1); |
public static final Integer SORT_DOMAIN = new Integer(2); |
protected static Map sortKeys = new HashMap(); |
protected static Map sortKeysSql = new HashMap(); |
static { |
sortKeys.put(SORT_LOGIN, "login0_"); |
sortKeys.put(SORT_DOMAIN, "name1_"); |
sortKeysSql.put(SORT_LOGIN, "login0_"); |
sortKeysSql.put(SORT_DOMAIN, "name1_"); |
} |
public static final Comparator LOGIN_COMPARATOR = new LoginComparator(); |
/hostadmiral/trunk/src/ak/hostadmiral/core/model/SystemUserManager.java |
---|
3,6 → 3,7 |
import java.util.*; |
import net.sf.hibernate.*; |
import net.sf.hibernate.type.Type; |
import ak.hostadmiral.util.CollectionInfo; |
import ak.hostadmiral.util.HibernateUtil; |
import ak.hostadmiral.util.ModelException; |
import ak.hostadmiral.util.ModelSecurityException; |
304,17 → 305,41 |
public Collection listSystemUsers(User editor) |
throws ModelException |
{ |
return listSystemUsers(null, 0, 0, null, editor); |
} |
public Collection listSystemUsers(CollectionInfo info, int rowsPerPage, int pageNumber, |
Integer[] sortingKeys, User editor) |
throws ModelException |
{ |
try { |
if(editor.isSuperuser()) { |
return HibernateUtil.currentSession().find( |
"select u from SystemUser u left join fetch u.owner"); |
if(info != null) { |
info.init(((Integer)HibernateUtil.currentSession().iterate( |
"select count(*) from SystemUser").next()).intValue(), |
pageNumber, rowsPerPage); |
} |
return HibernateUtil.pageableList(rowsPerPage, pageNumber, |
"select u from SystemUser u left join fetch u.owner" |
+ HibernateUtil.formOrderClause(sortingKeys, sortKeys), null, null); |
} |
else { |
return HibernateUtil.currentSession().find( |
"select u from SystemUser u left join u.owner o where o is null or o=?", |
editor, Hibernate.entity(User.class)); |
if(info != null) { |
info.init(((Integer)HibernateUtil.currentSession().iterate( |
"select count(*) from SystemUser where owner is null or owner = ?", |
editor, Hibernate.entity(User.class)) |
.next()).intValue(), |
pageNumber, rowsPerPage); |
} |
return HibernateUtil.pageableList(rowsPerPage, pageNumber, |
"select u from SystemUser u left join u.owner o" |
+ " where u.owner is null or u.owner = ?" |
+ HibernateUtil.formOrderClause(sortingKeys, sortKeys), |
new Object[] { editor }, new Type[] { Hibernate.entity(User.class) } ); |
} |
} |
catch(HibernateException ex) |
{ |
throw new ModelException(ex); |
392,6 → 417,16 |
} |
} |
public static final Integer SORT_UID = new Integer(1); |
public static final Integer SORT_NAME = new Integer(2); |
protected static Map sortKeys = new HashMap(); |
static { |
sortKeys.put(SORT_UID, "u.uid"); |
sortKeys.put(SORT_NAME, "u.name"); |
} |
public static final Comparator UID_COMPARATOR = new UidComparator(); |
public static final Comparator NAME_COMPARATOR = new NameComparator(); |
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailAliasManager.java |
---|
3,7 → 3,7 |
import java.util.*; |
import net.sf.hibernate.*; |
import net.sf.hibernate.type.Type; |
import ak.hostadmiral.util.CollectionUtils; |
import ak.hostadmiral.util.CollectionInfo; |
import ak.hostadmiral.util.HibernateUtil; |
import ak.hostadmiral.util.ModelException; |
import ak.hostadmiral.util.ModelSecurityException; |
274,25 → 274,62 |
public Collection listMailAliases(User editor) |
throws ModelException |
{ |
return listMailAliases(null, 0, 0, null, editor); |
} |
public Collection listMailAliases(CollectionInfo info, int rowsPerPage, int pageNumber, |
Integer[] sortingKeys, User editor) |
throws ModelException |
{ |
try { |
if(editor.isSuperuser()) |
return HibernateUtil.currentSession().find( |
if(editor.isSuperuser()) { |
if(info != null) { |
info.init(((Integer)HibernateUtil.currentSession().iterate( |
"select count(*) from MailAlias").next()).intValue(), |
pageNumber, rowsPerPage); |
} |
return HibernateUtil.pageableList(rowsPerPage, pageNumber, |
"select a from MailAlias a left join fetch a.domain as d" |
+ " left join fetch a.owner"); |
else |
// FIXME: any problems for big lists or by pages? |
return CollectionUtils.addUnique( |
HibernateUtil.currentSession().find( |
"select a from MailAlias a left join fetch a.domain as d" |
+ " left join fetch a.owner" |
+ " where d.owner=?", |
new Object[] { editor }, new Type[] { Hibernate.entity(User.class) } ), |
HibernateUtil.currentSession().find( |
"select a from MailAlias a left join fetch a.domain as d" |
+ " left join fetch a.owner" |
+ " where a.owner=?", |
new Object[] { editor }, new Type[] { Hibernate.entity(User.class) } )); |
+ HibernateUtil.formOrderClause(sortingKeys, sortKeys), null, null); |
} |
else { |
if(info != null) { |
List countlist = HibernateUtil.sqlQuery( |
"select count(*) from (" |
+ " select a.id from mailaliases a" |
+ " where a.owner=?" |
+ " union" |
+ " select a.id from mailaliases a" |
+ " left join domains as d on a.domain = d.id" |
+ " where d.owner=?" |
+ ") as count_table", |
new Object[] { editor.getId(), editor.getId() }); |
info.init(((Long)countlist.get(0)).intValue(), |
pageNumber, rowsPerPage); |
} |
return HibernateUtil.pageableListSql(rowsPerPage, pageNumber, |
"(select {a.*}, {d.*}, {o.*}" |
+ " from mailaliases as a" |
+ " left join domains as d on a.domain = d.id" |
+ " left join users as o on a.owner = o.id" |
+ " where a.owner=?)" |
+ " union " |
+ "(select {a.*}, {d.*}, {o.*}" |
+ " from mailaliases as a" |
+ " left join domains as d on a.domain = d.id" |
+ " left join users as o on a.owner = o.id" |
+ " where d.owner=?)" |
+ HibernateUtil.formOrderClause(sortingKeys, sortKeysSql), |
new String[] { "a", "d", "o" }, |
new Class[] { MailAlias.class, InetDomain.class, User.class }, |
new Object[] { editor, editor }, |
new Type[] { Hibernate.entity(User.class), Hibernate.entity(User.class) }); |
} |
} |
catch(HibernateException ex) |
{ |
throw new ModelException(ex); |
422,6 → 459,23 |
return cascade; |
} |
public static final Integer SORT_ADDRESS = new Integer(1); |
public static final Integer SORT_DOMAIN = new Integer(2); |
protected static Map sortKeys = new HashMap(); |
static { |
sortKeys.put(SORT_ADDRESS, "a.address"); |
sortKeys.put(SORT_DOMAIN, "d.name"); |
} |
protected static Map sortKeysSql = new HashMap(); |
static { |
sortKeysSql.put(SORT_ADDRESS, "address0_"); |
sortKeysSql.put(SORT_DOMAIN, "name1_"); |
} |
public static final Comparator ADDRESS_COMPARATOR = new AddressComparator(); |
private static class AddressComparator |
/hostadmiral/trunk/src/ak/hostadmiral/core/model/UserManager.java |
---|
3,6 → 3,7 |
import java.util.*; |
import net.sf.hibernate.*; |
import net.sf.hibernate.type.Type; |
import ak.hostadmiral.util.CollectionInfo; |
import ak.hostadmiral.util.HibernateUtil; |
import ak.hostadmiral.util.ModelException; |
import ak.hostadmiral.util.ModelSecurityException; |
286,15 → 287,39 |
public Collection listUsers(User editor) |
throws ModelException |
{ |
return listUsers(null, 0, 0, null, editor); |
} |
public Collection listUsers(CollectionInfo info, int rowsPerPage, int pageNumber, |
Integer[] sortingKeys, User editor) |
throws ModelException |
{ |
try { |
if(editor.isSuperuser()) { |
return HibernateUtil.currentSession().find( |
"select u from User u left join fetch u.boss"); |
if(info != null) { |
info.init(((Integer)HibernateUtil.currentSession().iterate( |
"select count(*) from User").next()).intValue(), |
pageNumber, rowsPerPage); |
} |
return HibernateUtil.pageableList(rowsPerPage, pageNumber, |
"select u from User u left join fetch u.boss" |
+ HibernateUtil.formOrderClause(sortingKeys, sortKeys), null, null); |
} |
else { |
return HibernateUtil.currentSession().find( |
"select u from User u where u = ? or u.boss = ?", |
if(info != null) { |
info.init(((Integer)HibernateUtil.currentSession().iterate( |
"select count(*) from User u where u = ? or u.boss = ?", |
new Object[] { editor, editor}, |
new Type[] { Hibernate.entity(User.class), Hibernate.entity(User.class) } |
).next()).intValue(), |
pageNumber, rowsPerPage); |
} |
return HibernateUtil.pageableList(rowsPerPage, pageNumber, |
"select u from User u left join fetch u.boss where u = ? or u.boss = ?" |
+ HibernateUtil.formOrderClause(sortingKeys, sortKeys), |
new Object[] { editor, editor}, |
new Type[] { Hibernate.entity(User.class), Hibernate.entity(User.class) } ); |
} |
} |
419,6 → 444,14 |
} |
} |
public static final Integer SORT_LOGIN = new Integer(1); |
protected static Map sortKeys = new HashMap(); |
static { |
sortKeys.put(SORT_LOGIN, "u.login"); |
} |
public static final Comparator LOGIN_COMPARATOR = new LoginComparator(); |
public static final Comparator LOGINS_TIME_COMPARATOR = new LoginsTimeComparator(); |
/hostadmiral/trunk/src/ak/hostadmiral/core/taglib/list/PageIterateTag.java |
---|
34,6 → 34,18 |
this.infoProperty = infoProperty; |
} |
protected int max = 0; |
public String getMax() |
{ |
return Integer.toString(this.max); |
} |
public void setMax(String max) |
{ |
this.max = Integer.parseInt(max); |
} |
protected int displayPage; |
public int getDisplayPage() |
50,8 → 62,9 |
public int doStartTag() throws JspException |
{ |
displayPage = 0; |
collectionInfo = findCollectionInfo(); |
displayPage = (max == 0) ? 0 |
: Math.max(0, collectionInfo.getCurrentPage() - max/2); |
if(collectionInfo == null) return SKIP_BODY; |
69,11 → 82,20 |
bodyContent.clearBody(); |
} |
if(++displayPage < collectionInfo.getTotalPages()) |
displayPage++; |
if(max == 0 && displayPage < collectionInfo.getTotalPages()) { |
return EVAL_BODY_TAG; |
else |
} |
else if(max > 0 && displayPage < collectionInfo.getTotalPages() |
&& displayPage < collectionInfo.getCurrentPage() + max/2) |
{ |
return EVAL_BODY_TAG; |
} |
else { |
return SKIP_BODY; |
} |
} |
public int doEndTag() throws JspException |
{ |
92,5 → 114,6 |
super.release(); |
infoBean = null; |
infoProperty = null; |
max = 0; |
} |
} |
/hostadmiral/trunk/src/ak/hostadmiral/core/action/UserAction.java |
---|
1,6 → 1,7 |
package ak.hostadmiral.core.action; |
import java.util.List; |
import java.util.Collection; |
import java.util.Collections; |
import java.util.ArrayList; |
import java.util.HashSet; |
23,6 → 24,7 |
import ak.hostadmiral.util.StringConverter; |
import ak.hostadmiral.util.UserException; |
import ak.hostadmiral.util.CollectionInfo; |
import ak.hostadmiral.core.CoreResources; |
import ak.hostadmiral.core.model.User; |
import ak.hostadmiral.core.model.UserManager; |
31,6 → 33,8 |
extends Action |
implements ErrorHandlerX |
{ |
public static final int PAGE_SIZE = 20; |
public void handleErrors(ActionMapping mapping, ActionForm form, |
HttpServletRequest request, HttpServletResponse response) |
throws Exception |
68,9 → 72,15 |
User user = (User)request.getSession().getAttribute("user"); |
if("list".equals(mapping.getParameter())) { |
List list = new ArrayList(UserManager.getInstance().listUsers(user)); |
Collections.sort(list, UserManager.LOGIN_COMPARATOR); |
DynaActionForm theForm = (DynaActionForm)form; |
Long page = StringConverter.parseLong(theForm.get("pg")); |
CollectionInfo listInfo = new CollectionInfo(); |
Collection list = UserManager.getInstance().listUsers( |
listInfo, PAGE_SIZE, (page == null) ? 0 : page.intValue(), |
new Integer[] { UserManager.SORT_LOGIN }, user); |
request.setAttribute("users", list); |
request.setAttribute("listInfo", listInfo); |
request.setAttribute("allowedToCreate", |
Boolean.valueOf(UserManager.getInstance().allowedToCreate(user))); |
request.setAttribute("mayViewAllLogins", Boolean.valueOf(user.mayViewAllLogins())); |
/hostadmiral/trunk/src/ak/hostadmiral/core/action/SystemUserAction.java |
---|
1,6 → 1,7 |
package ak.hostadmiral.core.action; |
import java.util.List; |
import java.util.Collection; |
import java.util.Collections; |
import java.util.ArrayList; |
import java.util.HashSet; |
23,6 → 24,7 |
import ak.hostadmiral.util.StringConverter; |
import ak.hostadmiral.util.UserException; |
import ak.hostadmiral.util.CollectionInfo; |
import ak.hostadmiral.core.CoreResources; |
import ak.hostadmiral.core.model.User; |
import ak.hostadmiral.core.model.UserManager; |
33,6 → 35,8 |
extends Action |
implements ErrorHandlerX |
{ |
public static final int PAGE_SIZE = 20; |
public void handleErrors(ActionMapping mapping, ActionForm form, |
HttpServletRequest request, HttpServletResponse response) |
throws Exception |
52,9 → 56,15 |
User user = (User)request.getSession().getAttribute("user"); |
if("list".equals(mapping.getParameter())) { |
List list = new ArrayList(SystemUserManager.getInstance().listSystemUsers(user)); |
Collections.sort(list, SystemUserManager.NAME_COMPARATOR); |
DynaActionForm theForm = (DynaActionForm)form; |
Long page = StringConverter.parseLong(theForm.get("pg")); |
CollectionInfo listInfo = new CollectionInfo(); |
Collection list = SystemUserManager.getInstance().listSystemUsers( |
listInfo, PAGE_SIZE, (page == null) ? 0 : page.intValue(), |
new Integer[] { SystemUserManager.SORT_NAME }, user); |
request.setAttribute("users", list); |
request.setAttribute("listInfo", listInfo); |
request.setAttribute("allowedToCreate", |
Boolean.valueOf(SystemUserManager.getInstance().allowedToCreate(user))); |
/hostadmiral/trunk/src/ak/hostadmiral/core/action/InetDomainAction.java |
---|
1,6 → 1,7 |
package ak.hostadmiral.core.action; |
import java.util.List; |
import java.util.Collection; |
import java.util.Collections; |
import java.util.ArrayList; |
import java.util.HashSet; |
23,6 → 24,7 |
import ak.hostadmiral.util.StringConverter; |
import ak.hostadmiral.util.UserException; |
import ak.hostadmiral.util.CollectionInfo; |
import ak.hostadmiral.core.CoreResources; |
import ak.hostadmiral.core.model.User; |
import ak.hostadmiral.core.model.UserManager; |
33,6 → 35,8 |
extends Action |
implements ErrorHandlerX |
{ |
public static final int PAGE_SIZE = 20; |
public void handleErrors(ActionMapping mapping, ActionForm form, |
HttpServletRequest request, HttpServletResponse response) |
throws Exception |
52,9 → 56,15 |
User user = (User)request.getSession().getAttribute("user"); |
if("list".equals(mapping.getParameter())) { |
List list = new ArrayList(InetDomainManager.getInstance().listInetDomains(user)); |
Collections.sort(list, InetDomainManager.NAME_COMPARATOR); |
DynaActionForm theForm = (DynaActionForm)form; |
Long page = StringConverter.parseLong(theForm.get("pg")); |
CollectionInfo listInfo = new CollectionInfo(); |
Collection list = InetDomainManager.getInstance().listInetDomains( |
listInfo, PAGE_SIZE, (page == null) ? 0 : page.intValue(), |
new Integer[] { InetDomainManager.SORT_NAME }, user); |
request.setAttribute("domains", list); |
request.setAttribute("listInfo", listInfo); |
request.setAttribute("allowedToCreate", |
Boolean.valueOf(InetDomainManager.getInstance().allowedToCreate(user))); |
/hostadmiral/trunk/src/ak/hostadmiral/core/action/MailAliasAction.java |
---|
1,6 → 1,7 |
package ak.hostadmiral.core.action; |
import java.util.List; |
import java.util.Collection; |
import java.util.Iterator; |
import java.util.Collections; |
import java.util.ArrayList; |
26,6 → 27,7 |
import ak.hostadmiral.util.StringConverter; |
import ak.hostadmiral.util.UserException; |
import ak.hostadmiral.util.CollectionInfo; |
import ak.hostadmiral.core.CoreResources; |
import ak.hostadmiral.core.model.User; |
import ak.hostadmiral.core.model.UserManager; |
42,6 → 44,8 |
extends Action |
implements ErrorHandlerX |
{ |
public static final int PAGE_SIZE = 20; |
public void handleErrors(ActionMapping mapping, ActionForm form, |
HttpServletRequest request, HttpServletResponse response) |
throws Exception |
60,9 → 64,16 |
ActionUtils.prepare(request, response); |
User user = (User)request.getSession().getAttribute("user"); |
if("list".equals(mapping.getParameter())) { |
List list = new ArrayList(MailAliasManager.getInstance().listMailAliases(user)); |
Collections.sort(list, MailAliasManager.ADDRESS_COMPARATOR); |
DynaActionForm theForm = (DynaActionForm)form; |
Long page = StringConverter.parseLong(theForm.get("pg")); |
CollectionInfo listInfo = new CollectionInfo(); |
Collection list = MailAliasManager.getInstance().listMailAliases( |
listInfo, PAGE_SIZE, (page == null) ? 0 : page.intValue(), |
new Integer[] { MailAliasManager.SORT_DOMAIN, MailAliasManager.SORT_ADDRESS }, |
user); |
request.setAttribute("aliases", list); |
request.setAttribute("listInfo", listInfo); |
request.setAttribute("allowedToCreate", |
Boolean.valueOf(MailAliasManager.getInstance().allowedToCreate(user))); |
/hostadmiral/trunk/src/ak/hostadmiral/util/HibernateUtil.java |
---|
216,6 → 216,31 |
} |
} |
public static List pageableList(int pageSize, int pageNumber, |
String query, Object[] values, Type[] types) |
throws ModelException |
{ |
try { |
Query hq = currentSession().createQuery(query); |
if(values != null && types != null) { |
for(int i = 0; i < values.length; i++) |
hq.setParameter(i, values[i], types[i]); |
} |
if(pageSize > 0) { |
hq.setFirstResult(pageSize * pageNumber); |
hq.setMaxResults(pageSize); |
} |
return hq.list(); |
} |
catch(HibernateException ex) |
{ |
throw new ModelException(ex); |
} |
} |
protected static List selectFirstClassColumn(List list) |
throws ModelException |
{ |