1 16 package com.blandware.atleap.webapp.action.core.contentLocale; 17 18 import com.blandware.atleap.common.util.StringUtil; 19 import com.blandware.atleap.model.core.ContentLocale; 20 import com.blandware.atleap.service.exception.BeanAlreadyExistsException; 21 import com.blandware.atleap.webapp.action.core.BaseAction; 22 import com.blandware.atleap.webapp.form.ContentLocaleForm; 23 import com.blandware.atleap.webapp.util.core.ApplicationResources; 24 import com.blandware.atleap.webapp.util.core.LocaleUtil; 25 import com.blandware.atleap.webapp.util.core.WebappUtil; 26 import org.apache.commons.validator.GenericValidator; 27 import org.apache.struts.action.ActionForm; 28 import org.apache.struts.action.ActionForward; 29 import org.apache.struts.action.ActionMapping; 30 import org.apache.struts.action.ActionMessage; 31 import org.apache.struts.action.ActionMessages; 32 33 import javax.servlet.http.HttpServletRequest ; 34 import javax.servlet.http.HttpServletResponse ; 35 import java.util.Iterator ; 36 import java.util.List ; 37 import java.util.Locale ; 38 import java.util.Map ; 39 40 62 public final class CreateContentLocaleAction extends BaseAction { 63 72 public ActionForward execute(ActionMapping mapping, ActionForm form, 73 HttpServletRequest request, HttpServletResponse response) throws Exception { 74 75 if ( !isCancelled(request) ) { 76 ContentLocaleForm contentLocaleForm = (ContentLocaleForm) form; 77 String localeIdentifier = contentLocaleForm.getIdentifier(); 78 LocaleUtil localeUtil = LocaleUtil.getInstance(servlet.getServletContext()); 79 80 List availableLocales = localeUtil.getAvailableLocales(); 82 for ( Iterator i = availableLocales.iterator(); i.hasNext(); ) { 83 ContentLocale locale = (ContentLocale) i.next(); 84 if ( locale.getIdentifier().equalsIgnoreCase(localeIdentifier) ) { 85 ActionMessages errors = new ActionMessages(); 87 errors.add("contentLocaleAlreadyExists", new ActionMessage("core.contentLocale.errors.alreadyExists")); 88 saveErrors(request, errors); 89 saveToken(request); 90 return mapping.getInputForward(); 91 } 92 } 93 94 ContentLocale contentLocale = new ContentLocale(); 95 WebappUtil.copyProperties(contentLocale, contentLocaleForm, request); 96 97 Map titleMap = contentLocaleForm.getTitleMap(); 98 99 titleMap.put(localeIdentifier, titleMap.remove("current")); 101 102 for ( Iterator i = titleMap.entrySet().iterator(); i.hasNext(); ) { 104 Map.Entry entry = (Map.Entry ) i.next(); 105 String identifier = (String ) entry.getKey(); 106 String title = (String ) entry.getValue(); 107 if ( GenericValidator.isBlankOrNull(title) ) { 108 titleMap.put(identifier, StringUtil.capitalize(new Locale(localeIdentifier).getDisplayLanguage(new Locale(identifier)))); 109 } 110 } 111 112 contentLocale.setTitle(contentLocaleForm.getTitleMap()); 113 contentLocale.setActive(Boolean.FALSE); 114 contentLocale.setDefaultInstance(Boolean.FALSE); 115 try { 116 117 localeUtil.createContentLocale(contentLocale); 118 119 for ( Iterator i = availableLocales.iterator(); i.hasNext(); ) { 121 ContentLocale locale = (ContentLocale) i.next(); 122 ContentLocale oldLocale = localeUtil.retrieveContentLocale(locale.getIdentifier()); 123 oldLocale.getTitle().put(localeIdentifier, StringUtil.capitalize(new Locale(locale.getIdentifier()).getDisplayLanguage(new Locale(localeIdentifier)))); 124 localeUtil.updateContentLocale(oldLocale); 125 } 126 127 ApplicationResources.getInstance(servlet.getServletContext()).loadBundle(contentLocale); 128 129 } catch ( BeanAlreadyExistsException e ) { 130 ActionMessages errors = new ActionMessages(); 132 errors.add("contentLocaleAlreadyExists", new ActionMessage("core.contentLocale.errors.alreadyExists")); 133 saveErrors(request, errors); 134 saveToken(request); 135 return mapping.getInputForward(); 136 } 137 138 } 139 140 return mapping.findForward("listContentLocales"); 141 } 142 } | Popular Tags |