1 118 package com.ivata.groupware.admin.setting.struts; 119 120 import java.util.Arrays ; 121 import java.util.HashMap ; 122 import java.util.Iterator ; 123 import java.util.List ; 124 import java.util.Locale ; 125 import java.util.Map ; 126 import java.util.ResourceBundle ; 127 import java.util.Set ; 128 129 import javax.servlet.http.HttpServletRequest ; 130 import javax.servlet.http.HttpSession ; 131 132 import org.apache.struts.Globals; 133 import org.apache.struts.action.ActionMapping; 134 135 import com.ivata.groupware.admin.security.server.SecuritySession; 136 import com.ivata.groupware.admin.setting.SettingConstants; 137 import com.ivata.groupware.admin.setting.Settings; 138 import com.ivata.mask.Mask; 139 import com.ivata.mask.util.StringHandling; 140 import com.ivata.mask.util.SystemException; 141 import com.ivata.mask.validation.ValidationError; 142 import com.ivata.mask.validation.ValidationErrors; 143 import com.ivata.mask.web.struts.DialogForm; 144 145 146 154 public class SettingForm extends DialogForm { 155 159 private String administrator; 160 165 private Map setting; 166 170 private String settingArea; 171 179 private Map settingOverride; 180 185 private Settings settings; 186 189 private Map settingSystem; 190 191 194 private Integer settingTab_activeTab; 195 199 private List settingTabSystem; 200 204 private List settingTabUser; 205 209 private Map settingType; 210 213 private Map settingUser; 214 218 private List tabName; 219 224 private Class baseClass; 225 230 private Mask mask; 231 232 241 public SettingForm(final Mask maskParam, 242 final Class baseClassParam, 243 final Settings settings) { 244 this.settings = settings; 245 clear(); 246 } 247 248 253 protected void clear() { 254 administrator = null; 255 setting = new HashMap (); 256 settingArea = "user"; 257 settingOverride = new HashMap (); 258 settingSystem = new HashMap (); 259 settingTab_activeTab = null; 260 settingTabSystem = null; 261 settingTabUser = null; 262 settingType = new HashMap (); 263 settingUser = new HashMap (); 264 tabName = null; 265 } 266 267 273 public final String getAdministrator() { 274 return administrator; 275 } 276 277 282 public final String getSetting(final String key) { 283 return ""; 284 } 285 286 291 public final String getSettingArea() { 292 return settingArea; 293 } 294 295 301 public final Set getSettingName() { 302 return settingType.keySet(); 303 } 304 305 312 public final boolean getSettingOverride(final String key) { 313 return ((Boolean ) settingOverride.get(key)).booleanValue(); 314 } 315 316 321 public final Object getSettingSystem(final String key) { 322 return settingSystem.get(key); 323 } 324 325 329 public final Integer getSettingTab_activeTab() { 330 return settingTab_activeTab; 331 } 332 333 339 public List getSettingTabSystem() { 340 return settingTabSystem; 341 } 342 343 350 public final String getSettingTabSystemFields() { 351 String returnString = ""; 352 353 for (Iterator i = 354 ((List ) settingTabSystem.get(settingTab_activeTab.intValue())).iterator(); 355 i.hasNext();) { 356 returnString += ("'" + (String ) i.next() + "'"); 357 if (i.hasNext()) { 358 returnString += ","; 359 } 360 } 361 return returnString; 362 } 363 364 370 public List getSettingTabUser() { 371 return settingTabUser; 372 } 373 374 381 public final String getSettingTabUserFields() { 382 String returnString = ""; 383 384 for (Iterator i = 385 ((List ) settingTabUser.get(settingTab_activeTab.intValue())).iterator(); 386 i.hasNext();) { 387 returnString += ("'" + (String ) i.next() + "'"); 388 if (i.hasNext()) { 389 returnString += ","; 390 } 391 } 392 return returnString; 393 } 394 395 400 public final Integer getSettingType(final String key) { 401 return (Integer ) settingType.get(key); 402 } 403 404 409 public final Object getSettingUser(final String key) { 410 return settingUser.get(key); 411 } 412 413 418 public List getTabName() { 419 return tabName; 420 } 421 422 432 public void reset(final ActionMapping mapping, 433 final HttpServletRequest request) { 434 435 if (settingTab_activeTab!=null) { 436 437 int activeTab = settingTab_activeTab.intValue(); 440 for (Iterator i = ((List ) getSettingTabSystem().get(activeTab)).iterator(); 441 i.hasNext();) { 442 String currentKey = (String ) i.next(); 443 settingOverride.put(currentKey, new Boolean (false)); 444 } 445 for (Iterator i = ((List ) getSettingTabUser().get(activeTab)).iterator(); 446 i.hasNext();) { 447 String currentKey = (String ) i.next(); 448 settingOverride.put(currentKey, new Boolean (false)); 449 } 450 if (((String ) tabName.get(activeTab)).equals("email")) { 452 if (settingType.containsKey("emailSignatureForward")) { 453 settingUser.put("emailSignatureForward","false"); 454 settingSystem.put("emailSignatureForward","false"); 455 } 456 if (settingType.containsKey("emailSignatureReply")) { 457 settingUser.put("emailSignatureReply","false"); 458 settingSystem.put("emailSignatureReply","false"); 459 } 460 } 461 } 462 463 setApply(null); 465 setOk(null); 466 467 } 468 469 475 public final void setAdministrator(final String administrator) { 476 this.administrator = administrator; 477 } 478 479 485 public final void setSetting(final String key, 486 final String value) { 487 } 488 489 494 public final void setSettingArea(final String settingArea) { 495 this.settingArea = settingArea; 496 } 497 498 505 public final void setSettingOverride(final String key, 506 final boolean overridable) { 507 settingOverride.put(key, new Boolean (overridable)); 508 } 509 510 515 public final void setSettingSystem(final String key, 516 final Object value) { 517 if ((key.equals("emailSignatureReply") || key.equals("emailSignatureForward")) 518 && !(value instanceof Boolean ) 519 && StringHandling.isNullOrEmpty((String ) value)) { 520 return; 521 } else { 522 settingSystem.put(key, value); 523 } 524 } 525 526 531 public final void setSettingTab_activeTab(final Integer settingTab_activeTab) { 532 this.settingTab_activeTab = settingTab_activeTab; 533 } 534 535 541 public final void setSettingTabSystem(final List settingTabSystem) { 542 this.settingTabSystem = settingTabSystem; 543 } 544 545 551 public final void setSettingTabUser(final List settingTabUser) { 552 this.settingTabUser = settingTabUser; 553 } 554 555 560 public final void setSettingType(final String key, 561 final Integer type) { 562 settingType.put(key, type); 563 } 564 565 570 public final void setSettingUser(final String key, 571 final Object value) { 572 if ((key.equals("emailSignatureReply") || key.equals("emailSignatureForward")) 573 && !(value instanceof Boolean ) 574 && StringHandling.isNullOrEmpty((String ) value)) { 575 return; 576 } else { 577 settingUser.put(key, value); 578 } 579 } 580 581 585 public final void setTabName(final List tabName) { 586 this.tabName = tabName; 587 } 588 589 599 public ValidationErrors validate(final HttpServletRequest request, 600 final HttpSession session) { 601 ValidationErrors validationErrors = new ValidationErrors(); 602 SecuritySession securitySession = (SecuritySession) 603 request.getSession().getAttribute("securitySession"); 604 605 606 if (!(getOk() == null && getApply() == null)) { 608 Map settingUserValidation = new HashMap (this.settingUser); 611 Map settingSystemValidation = new HashMap (this.settingSystem); 612 613 ResourceBundle adminBundle = 615 ResourceBundle.getBundle("com.ivata.groupware.admin.ApplicationResources", 616 (Locale ) request.getSession().getAttribute(Globals.LOCALE_KEY)); 617 618 String settingSystemArea = adminBundle.getString("setting.system"); 619 String settingUserArea = adminBundle.getString("setting.user"); 620 621 for (Iterator i = settingType.keySet().iterator(); i.hasNext();) { 623 String currentKey = (String ) i.next(); 624 String currentFieldName = adminBundle.getString("setting.field." + currentKey); 625 Integer currentType = (Integer ) settingType.get(currentKey); 626 String currentUserValue = settingUser.get(currentKey).toString(); 630 String currentSystemValue = settingSystem.get(currentKey).toString(); 631 632 switch (currentType.intValue()) { 633 case SettingConstants.DATA_TYPE_BOOLEAN: 635 if (!(currentUserValue.equalsIgnoreCase("true") || 636 currentUserValue.equalsIgnoreCase("false"))) { 637 validationErrors.add( 638 new ValidationError( 639 "errors.setting.boolean", 640 Arrays.asList(new String []{ 641 settingUserArea, currentFieldName 642 }))); 643 settingUserValidation.remove(currentKey); 644 } else { 645 settingUser.put(currentKey, 646 new Boolean (currentUserValue)); 647 settingUserValidation.put(currentKey, 648 new Boolean (currentUserValue)); 649 } 650 if (!(currentSystemValue.equalsIgnoreCase("true") || 651 currentSystemValue.equalsIgnoreCase("false"))) { 652 validationErrors.add( 653 new ValidationError( 654 "errors.setting.boolean", 655 Arrays.asList(new String []{ 656 settingSystemArea, currentFieldName 657 }))); 658 settingSystemValidation.remove(currentKey); 659 } else { 660 settingSystem.put(currentKey, 661 new Boolean (currentSystemValue)); 662 settingSystemValidation.put(currentKey, 663 new Boolean (currentSystemValue)); 664 } 665 break; 666 667 case SettingConstants.DATA_TYPE_INTEGER: 669 try { 671 Integer.parseInt(currentUserValue); 672 settingUser.put(currentKey, new Integer (currentUserValue)); 674 settingUserValidation.put(currentKey, 675 new Integer (currentUserValue)); 676 } catch (NumberFormatException e) { 677 validationErrors.add( 679 new ValidationError( 680 "errors.setting.integer", 681 Arrays.asList(new String []{ 682 settingUserArea, currentFieldName 683 }))); 684 settingUserValidation.remove(currentKey); 685 } 686 try { 687 Integer.parseInt(currentSystemValue); 688 settingSystem.put(currentKey, new Integer (currentSystemValue)); 690 settingSystemValidation.put(currentKey, 691 new Integer (currentSystemValue)); 692 } catch (NumberFormatException e) { 693 validationErrors.add( 695 new ValidationError( 696 "errors.setting.integer", 697 Arrays.asList(new String []{ 698 settingSystemArea, currentFieldName 699 }))); 700 settingSystemValidation.remove(currentKey); 701 } 702 break; 703 704 case SettingConstants.DATA_TYPE_STRING: 706 707 break; 708 } 709 } 710 if (!(settingUserValidation.isEmpty() && settingSystemValidation.isEmpty())) { 714 Locale locale = (Locale ) session.getAttribute(Globals.LOCALE_KEY); 715 ValidationErrors userErrors; 716 try { 717 userErrors = settings.validate(securitySession, 718 settingUserValidation, locale, SettingConstants.SETTING_USER); 719 } catch (SystemException e) { 720 throw new RuntimeException (e); 721 } 722 validationErrors.addAll(userErrors); 723 ValidationErrors systemErrors; 724 try { 725 systemErrors = settings.validate(securitySession, 726 settingSystemValidation, locale, SettingConstants.SETTING_SYSTEM); 727 } catch (SystemException e) { 728 throw new RuntimeException (e); 729 } 730 validationErrors.addAll(systemErrors); 731 } 732 } 733 return validationErrors; 734 } 735 736 743 public final Class getBaseClass() { 744 return baseClass; 745 } 746 747 754 public final Mask getMask() { 755 return mask; 756 } 757 } 758 | Popular Tags |