24,6 → 24,7 |
import ak.backpath.BackPath; |
|
import ak.hostcaptain.util.StringConverter; |
import ak.hostcaptain.util.UserException; |
import ak.hostcaptain.core.model.User; |
import ak.hostcaptain.core.model.UserManager; |
import ak.hostcaptain.core.model.Mailbox; |
75,11 → 76,11 |
} |
else { |
MailAlias alias = MailAliasManager.getInstance().get(user, aliasId); |
List dests = new ArrayList(MailAliasDestinationManager.getInstance() |
.listMailAliasesDestination(alias)); |
List dests = new ArrayList(MailAliasDestinationManager.getInstance() |
.listMailAliasesDestination(alias)); |
MailAliasDestBean[] d = new MailAliasDestBean[dests.size()]; |
|
// FIXME: sort dests here |
// FIXME: sort dests here |
|
for(int i = 0; i < dests.size(); i++) { |
d[i] = new MailAliasDestBean((MailAliasDestination)dests.get(i)); |
86,11 → 87,11 |
} |
showForm.set("dests", d); |
|
showForm.set("address", alias.getAddress()); |
if(alias.getDomain() != null) |
showForm.set("domain", StringConverter.toString(alias.getDomain().getId())); |
if(alias.getOwner() != null) |
showForm.set("owner", StringConverter.toString(alias.getOwner().getId())); |
showForm.set("address", alias.getAddress()); |
if(alias.getDomain() != null) |
showForm.set("domain", StringConverter.toString(alias.getDomain().getId())); |
if(alias.getOwner() != null) |
showForm.set("owner", StringConverter.toString(alias.getOwner().getId())); |
showForm.set("enabled", alias.getEnabled()); |
showForm.set("comment", alias.getComment()); |
} |
111,11 → 112,22 |
DynaActionForm theForm = (DynaActionForm)form; |
Long aliasId = StringConverter.parseLong(theForm.get("id")); |
MailAlias alias = (aliasId == null) ? null |
: MailAliasManager.getInstance().get(user, aliasId); |
: MailAliasManager.getInstance().get(user, aliasId); |
MailAliasDestBean[] dests = (MailAliasDestBean[])theForm.get("dests"); |
|
// submit |
// submit |
if(request.getParameter("submit") != null) { |
// FIXME: if empty element of select box is active, it will be changed |
// by submit |
|
// validate required fields, because it cannot be done in general case |
if(StringConverter.isEmpty(theForm.get("address"))) |
throw new UserException("ak.hostcaptain.core.mail.alias.edit.address.empty"); |
if(StringConverter.isEmpty(theForm.get("domain"))) |
throw new UserException("ak.hostcaptain.core.mail.alias.edit.domain.wrong"); |
if(StringConverter.isEmpty(theForm.get("owner"))) |
throw new UserException("ak.hostcaptain.core.mail.alias.edit.owner.wrong"); |
|
if(alias == null) |
alias = MailAliasManager.getInstance().create(user); |
|
128,35 → 140,38 |
&& (dests[i].getEmail() == null || dests[i].getEmail().equals(""))) |
continue; |
|
// get bean |
Long destId = StringConverter.parseLong(dests[i].getId()); |
Long mailboxId = StringConverter.parseLong(dests[i].getMailbox()); |
// get bean |
Long destId = StringConverter.parseLong(dests[i].getId()); |
Long mailboxId = StringConverter.parseLong(dests[i].getMailbox()); |
MailAliasDestination dest; |
if(destId == null) |
dest = MailAliasDestinationManager.getInstance().create(); |
else |
dest = MailAliasDestinationManager.getInstance().get(destId); |
dest = MailAliasDestinationManager.getInstance().create(user); |
else |
dest = MailAliasDestinationManager.getInstance().get(user, destId); |
|
// set mailbox or email |
// set mailbox or email |
if(mailboxId != null) { |
dest.setMailbox(MailboxManager.getInstance().get(user, mailboxId)); |
dest.setEmail(null); |
} |
else if(dests[i].getEmail() != null && !dests[i].getEmail().equals("")) { |
else if(dests[i].getEmail() != null && !dests[i].getEmail().equals("")) { |
dest.setMailbox(null); |
dest.setEmail(dests[i].getEmail()); |
} |
|
// connect |
dest.setAlias(alias); |
dest.setEnabled(dests[i].getEnabled()); |
dest.setComment(dests[i].getComment()); |
|
// connect |
dest.setAlias(alias); |
alias.getDestinations().add(dest); |
} |
|
alias.setAddress((String)theForm.get("address")); |
alias.setDomain(InetDomainManager.getInstance().get(user, |
StringConverter.parseLong(theForm.get("domain")))); |
alias.setOwner(UserManager.getInstance().get( |
StringConverter.parseLong(theForm.get("owner")))); |
alias.setAddress((String)theForm.get("address")); |
alias.setDomain(InetDomainManager.getInstance().get(user, |
StringConverter.parseLong(theForm.get("domain")))); |
alias.setOwner(UserManager.getInstance().get(user, |
StringConverter.parseLong(theForm.get("owner")))); |
alias.setEnabled((Boolean)theForm.get("enabled")); |
alias.setComment((String)theForm.get("comment")); |
|
169,9 → 184,13 |
|
// add |
else if(request.getParameter("add") != null) { |
// FIXME: if called when no entries defined two rows are created |
|
MailAliasDestBean[] newDests = new MailAliasDestBean[dests.length+1]; |
System.arraycopy(dests, 0, newDests, 0, dests.length); |
if(dests.length > 0) |
System.arraycopy(dests, 0, newDests, 0, dests.length); |
newDests[dests.length] = new MailAliasDestBean(); |
newDests[dests.length].setEnabled(new Boolean(true)); |
theForm.set("dests", newDests); |
|
initLists(request, user); |
192,20 → 211,13 |
if(n < 0 || n >= dests.length) break; |
|
MailAliasDestBean[] newDests; |
if(dests.length <= 1) { |
newDests = new MailAliasDestBean[1]; |
newDests[0] = new MailAliasDestBean(); |
} |
else { |
newDests = new MailAliasDestBean[dests.length-1]; |
if(n > 0) |
System.arraycopy(dests, 0, newDests, 0, n); |
if(n < dests.length-1) |
System.arraycopy(dests, n+1, newDests, |
n, dests.length-n-1); |
} |
newDests = new MailAliasDestBean[dests.length-1]; |
if(n > 0) |
System.arraycopy(dests, 0, newDests, 0, n); |
if(n < dests.length-1) |
System.arraycopy(dests, n+1, newDests, |
n, dests.length-n-1); |
theForm.set("dests", newDests); |
|
break; |
} |
catch(NumberFormatException ex) { |
226,12 → 238,12 |
private void initLists(HttpServletRequest request, User user) |
throws Exception |
{ |
// list of mailboxes to redirect to |
// list of mailboxes to redirect to |
List mailboxes = new ArrayList(MailboxManager.getInstance().listMailboxes(user)); |
Collections.sort(mailboxes, MailboxManager.LOGIN_COMPARATOR); |
request.setAttribute("mailboxes", mailboxes); |
|
List users = new ArrayList(UserManager.getInstance().listUsers()); |
List users = new ArrayList(UserManager.getInstance().listUsers(user)); |
Collections.sort(users, UserManager.LOGIN_COMPARATOR); |
request.setAttribute("users", users); |
|