Index: trunk/calendar3/calCore/src/org/bedework/calcore/hibernate/AdminGroupsDbImpl.java =================================================================== --- trunk/calendar3/calCore/src/org/bedework/calcore/hibernate/AdminGroupsDbImpl.java (revision 2) +++ trunk/calendar3/calCore/src/org/bedework/calcore/hibernate/AdminGroupsDbImpl.java (revision 245) @@ -173,4 +173,7 @@ public void addGroup(BwGroup group) throws CalFacadeException { + if (findGroup(group.getAccount()) != null) { + throw new CalFacadeException(CalFacadeException.duplicateAdminGroup); + } getSess().save(group); } Index: trunk/calendar3/calFacade/src/org/bedework/calfacade/CalFacadeException.java =================================================================== --- trunk/calendar3/calFacade/src/org/bedework/calfacade/CalFacadeException.java (revision 99) +++ trunk/calendar3/calFacade/src/org/bedework/calfacade/CalFacadeException.java (revision 245) @@ -59,9 +59,17 @@ */ public class CalFacadeException extends Exception { - /** Property names used as message value. These should be used to + /* Property names used as message value. These should be used to * retrieve a localized message and can also be used to identify the * cause of the exception. */ + + /* ****************** Admin groups ****************************** */ + + /** The admin group already exists */ + public static final String duplicateAdminGroup = + "org.bedework.exception.duplicateadmingroup"; + /* ****************** Calendars ****************************** */ + /** Couldn't find calendar */ public static final String calendarNotFound = @@ -84,4 +92,6 @@ "org.bedework.exception.cannotdeletecalendarroot"; + /* ****************** Subscriptions ****************************** */ + /** Somebody tried to create a duplicate subscription */ public static final String duplicateSubscription = @@ -92,17 +102,22 @@ "org.bedework.exception.ical.endandduration"; - /** */ - public static final String illegalObjectClass = - "org.bedework.exception.illegalobjectclass"; - + /* ****************** Events ****************************** */ + /** The guid for this event already exists */ public static final String duplicateGuid = "org.bedework.exception.duplicateguid"; + /* ****************** Timezones ****************************** */ + /** Error reading timezones */ public static final String timezonesReadError = "org.bedework.error.timezones.readerror"; + /* ****************** Misc ****************************** */ + /** */ + public static final String illegalObjectClass = + "org.bedework.exception.illegalobjectclass"; + private String extra; Index: trunk/calendar3/webadmin/src/org/bedework/webadmin/admingroup/PEFetchAGAction.java =================================================================== --- trunk/calendar3/webadmin/src/org/bedework/webadmin/admingroup/PEFetchAGAction.java (revision 55) +++ trunk/calendar3/webadmin/src/org/bedework/webadmin/admingroup/PEFetchAGAction.java (revision 245) @@ -114,4 +114,5 @@ adgrps.getMembers(ag); form.setUpdAdminGroup(ag); + form.assignAddingAdmingroup(false); return "continue"; Index: trunk/calendar3/webadmin/src/org/bedework/webadmin/admingroup/PEUpdateAGAction.java =================================================================== --- trunk/calendar3/webadmin/src/org/bedework/webadmin/admingroup/PEUpdateAGAction.java (revision 165) +++ trunk/calendar3/webadmin/src/org/bedework/webadmin/admingroup/PEUpdateAGAction.java (revision 245) @@ -56,4 +56,5 @@ import org.bedework.calfacade.BwUser; +import org.bedework.calfacade.CalFacadeException; import org.bedework.calfacade.ifs.Groups; import org.bedework.calfacade.svc.BwAdminGroup; @@ -162,5 +163,17 @@ } - adgrps.addGroup(updgrp); + try { + adgrps.addGroup(updgrp); + } catch (CalFacadeException cfe) { + if (CalFacadeException.duplicateAdminGroup.equals(cfe.getMessage())) { + form.getErr().emit("org.bedework.error.duplicate.admingroup", + updgrp.getAccount()); + return "retry"; + } else { + throw cfe; + } + } + + form.assignAddingAdmingroup(false); } else { if (!validateAdminGroup(form)) {