1 16 package com.blandware.atleap.webapp.action.core.contentLocale; 17 18 import com.blandware.atleap.common.Constants; 19 import com.blandware.atleap.model.core.ContentLocale; 20 import com.blandware.atleap.model.core.MenuItem; 21 import com.blandware.atleap.service.core.MenuManager; 22 import com.blandware.atleap.service.exception.BeanAlreadyExistsException; 23 import com.blandware.atleap.service.exception.BeanNotFoundException; 24 import com.blandware.atleap.webapp.action.core.BaseAction; 25 import com.blandware.atleap.webapp.form.ContentLocaleForm; 26 import com.blandware.atleap.webapp.util.core.LocaleUtil; 27 import org.apache.commons.validator.GenericValidator; 28 import org.apache.struts.action.ActionForm; 29 import org.apache.struts.action.ActionForward; 30 import org.apache.struts.action.ActionMapping; 31 import org.apache.struts.action.ActionMessage; 32 import org.apache.struts.action.ActionMessages; 33 import org.springframework.orm.ObjectOptimisticLockingFailureException; 34 35 import javax.servlet.http.HttpServletRequest ; 36 import javax.servlet.http.HttpServletResponse ; 37 import java.util.Iterator ; 38 import java.util.List ; 39 40 60 public final class SetContentLocaleDefaultAction extends BaseAction { 61 62 private transient MenuManager menuManager = null; 63 64 73 public ActionForward execute(ActionMapping mapping, ActionForm form, 74 HttpServletRequest request, HttpServletResponse response) throws Exception { 75 76 ContentLocaleForm contentLocaleForm = (ContentLocaleForm) form; 77 78 String contentLocaleIdentifier = null; 79 if ( !GenericValidator.isBlankOrNull(contentLocaleForm.getIdentifier()) ) { 80 contentLocaleIdentifier = contentLocaleForm.getIdentifier(); 81 } else { 82 if ( log.isWarnEnabled() ) { 83 log.warn("Missing content locale ID. Returning to list."); 84 } 85 return mapping.findForward("listContentLocales"); 86 } 87 88 if ( menuManager == null ) { 89 menuManager = (MenuManager) getBean(Constants.MENU_MANAGER_BEAN); 90 } 91 92 ContentLocale contentLocale = LocaleUtil.getInstance(servlet.getServletContext()).retrieveContentLocale(contentLocaleIdentifier); 93 94 if ( contentLocale == null ) { 95 ActionMessages errors = new ActionMessages(); 97 errors.add("contentLocaleNotFound", new ActionMessage("core.contentLocale.errors.notFound")); 98 saveErrors(request, errors); 99 return mapping.findForward("listContentLocales"); 100 } 101 102 boolean alreadyDefault = contentLocale.getDefaultInstance() != null ? contentLocale.getDefaultInstance().booleanValue() : false; 103 104 try { 105 if ( !alreadyDefault ) { 106 ContentLocale defaultLocale = LocaleUtil.getInstance(servlet.getServletContext()).getDefaultLocale(); 107 if ( defaultLocale != null ) { 108 defaultLocale.setDefaultInstance(Boolean.FALSE); 109 LocaleUtil.getInstance(servlet.getServletContext()).updateContentLocale(defaultLocale); 110 111 List hardcodedItems = menuManager.listMenuItems(null).asList(); 113 for ( Iterator i = hardcodedItems.iterator(); i.hasNext(); ) { 114 MenuItem menuItem = (MenuItem) i.next(); 115 processFieldValues(menuItem, contentLocale.getIdentifier()); 116 } 117 } 118 119 contentLocale.setDefaultInstance(Boolean.TRUE); 120 contentLocale.setActive(Boolean.TRUE); 121 LocaleUtil.getInstance(servlet.getServletContext()).updateContentLocale(contentLocale); 122 } 123 } catch ( ObjectOptimisticLockingFailureException e ) { 124 ActionMessages errors = new ActionMessages(); 126 errors.add("updateFailed", new ActionMessage("core.contentLocale.errors.updateFailed")); 127 saveErrors(request, errors); 128 return mapping.findForward("listContentLocales"); 129 } 130 131 return mapping.findForward("listContentLocales"); 132 } 133 134 140 protected void processFieldValues(MenuItem menuItem, String localeIdentifier) throws BeanNotFoundException, BeanAlreadyExistsException { 141 142 if ( menuItem.getTitle() != null && !menuItem.getTitle().isEmpty() ) { 143 String title = (String ) menuItem.getTitle().values().iterator().next(); 144 menuItem.getTitle().clear(); 145 menuItem.getTitle().put(localeIdentifier, title); 146 } 147 148 if ( menuItem.getToolTip() != null && !menuItem.getToolTip().isEmpty() ) { 149 String toolTip = (String ) menuItem.getToolTip().values().iterator().next(); 150 menuItem.getToolTip().clear(); 151 menuItem.getToolTip().put(localeIdentifier, toolTip); 152 } 153 154 List childItems = menuItem.getChildItems(); 156 for ( Iterator i = childItems.iterator(); i.hasNext(); ) { 157 MenuItem childItem = (MenuItem) i.next(); 158 if ( !childItem.isDynamic() ) { 159 processFieldValues(childItem, localeIdentifier); 160 } 161 } 162 163 } 164 } | Popular Tags |