Subversion Repositories general

Compare Revisions

Ignore whitespace Rev 1027 → Rev 1028

/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">&lt;&lt;</list:firstpage></list:hasfirst>
<list:nofirst infoBean="listInfo">&lt;&lt;</list:nofirst>
 
<list:hasprev infoBean="listInfo"><list:prevpage infoBean="listInfo">&lt;</list:prevpage></list:hasprev>
<list:noprev infoBean="listInfo">&lt;</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">&gt;</list:nextpage></list:hasnext>
<list:nonext infoBean="listInfo">&gt;</list:nonext>
 
<list:haslast infoBean="listInfo"><list:lastpage infoBean="listInfo">&gt;&gt;</list:lastpage></list:haslast>
<list:nolast infoBean="listInfo">&gt;&gt;</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>
86,7 → 115,7
<br>
<backpath:backlink><bean:message key="ak.hostadmiral.page.user.system.list.back" /></backpath:backlink>
 
<p>
<p>
<bean:message key="ak.hostadmiral.page.general.version" />:
<bean:write name="projectVersion" />
</p>
/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">&lt;&lt;</list:firstpage></list:hasfirst>
<list:nofirst infoBean="listInfo">&lt;&lt;</list:nofirst>
 
<list:hasprev infoBean="listInfo"><list:prevpage infoBean="listInfo">&lt;</list:prevpage></list:hasprev>
<list:noprev infoBean="listInfo">&lt;</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">&gt;</list:nextpage></list:hasnext>
<list:nonext infoBean="listInfo">&gt;</list:nonext>
 
<list:haslast infoBean="listInfo"><list:lastpage infoBean="listInfo">&gt;&gt;</list:lastpage></list:haslast>
<list:nolast infoBean="listInfo">&gt;&gt;</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>
97,7 → 126,7
</logic:equal>
<backpath:backlink><bean:message key="ak.hostadmiral.page.user.list.back" /></backpath:backlink>
 
<p>
<p>
<bean:message key="ak.hostadmiral.page.general.version" />:
<bean:write name="projectVersion" />
</p>
/hostadmiral/trunk/webapp/mail/box/list.jsp
85,9 → 85,9
<list:hasprev infoBean="listInfo"><list:prevpage infoBean="listInfo">&lt;</list:prevpage></list:hasprev>
<list:noprev infoBean="listInfo">&lt;</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">&lt;&lt;</list:firstpage></list:hasfirst>
<list:nofirst infoBean="listInfo">&lt;&lt;</list:nofirst>
 
<list:hasprev infoBean="listInfo"><list:prevpage infoBean="listInfo">&lt;</list:prevpage></list:hasprev>
<list:noprev infoBean="listInfo">&lt;</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">&gt;</list:nextpage></list:hasnext>
<list:nonext infoBean="listInfo">&gt;</list:nonext>
 
<list:haslast infoBean="listInfo"><list:lastpage infoBean="listInfo">&gt;&gt;</list:lastpage></list:haslast>
<list:nolast infoBean="listInfo">&gt;&gt;</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>
84,7 → 113,7
<br>
<backpath:backlink><bean:message key="ak.hostadmiral.page.mail.alias.list.back" /></backpath:backlink>
 
<p>
<p>
<bean:message key="ak.hostadmiral.page.general.version" />:
<bean:write name="projectVersion" />
</p>
/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">&lt;&lt;</list:firstpage></list:hasfirst>
<list:nofirst infoBean="listInfo">&lt;&lt;</list:nofirst>
 
<list:hasprev infoBean="listInfo"><list:prevpage infoBean="listInfo">&lt;</list:prevpage></list:hasprev>
<list:noprev infoBean="listInfo">&lt;</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">&gt;</list:nextpage></list:hasnext>
<list:nonext infoBean="listInfo">&gt;</list:nonext>
 
<list:haslast infoBean="listInfo"><list:lastpage infoBean="listInfo">&gt;&gt;</list:lastpage></list:haslast>
<list:nolast infoBean="listInfo">&gt;&gt;</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,14 → 267,39
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)
{
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=?"
+ " union"
+ " select {mb.*}, {d.*}, {o.*}, {su.*}"
+ " 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),
+ " 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,15 → 305,39
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)
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,24 → 274,61
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) } ));
+ " left join fetch a.owner"
+ 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)
{
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,14 → 287,38
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,10 → 82,19
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);
request.setAttribute("users", list);
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);
request.setAttribute("users", list);
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);
request.setAttribute("domains", list);
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);
request.setAttribute("aliases", list);
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
{