Package com.dotmarketing.portlets.languagesmanager.action

Source Code of com.dotmarketing.portlets.languagesmanager.action.EditLanguageKeysAction

/*
* Created on Sep 23, 2004
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.dotmarketing.portlets.languagesmanager.action;

import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;

import com.dotcms.repackage.javax.portlet.ActionRequest;
import com.dotcms.repackage.javax.portlet.ActionResponse;
import com.dotcms.repackage.javax.portlet.PortletConfig;

import com.dotcms.repackage.org.apache.struts.Globals;
import com.dotcms.repackage.org.apache.struts.action.ActionForm;
import com.dotcms.repackage.org.apache.struts.action.ActionMapping;

import com.dotmarketing.business.APILocator;
import com.dotmarketing.portal.struts.DotPortletAction;
import com.dotmarketing.portlets.languagesmanager.business.LanguageAPI;
import com.dotmarketing.portlets.languagesmanager.model.Language;
import com.dotmarketing.util.UtilMethods;
import com.dotmarketing.util.WebKeys;
import com.liferay.portal.struts.MultiMessageResources;
import com.liferay.portal.util.Constants;
import com.liferay.util.servlet.SessionMessages;


/**
* @author alex
*/
public class EditLanguageKeysAction extends DotPortletAction {
 
  private LanguageAPI langAPI = APILocator.getLanguageAPI();
 
    public void processAction(ActionMapping mapping, ActionForm form, PortletConfig config, ActionRequest req,
        ActionResponse res) throws Exception {
        String cmd = req.getParameter(Constants.CMD) == null?"edit":req.getParameter(Constants.CMD);
       
        String referer = req.getParameter("referer");
       
        //get list of languages
        try {
          _retrieveLanguages(req, res, config, form);
        } catch (Exception e) {
            _handleException(e, req);
        }

        // create if necessary and copy from normal files to tmp files
        _checkLanguagesFiles(req, res, config, form);
       
        if(cmd.equals("save")) {
          if(_save(req, res, config, form)) {
            if(UtilMethods.isSet(referer)) {
              _sendToReferral(req, res, referer);
              return;
            }
          }
        }

        setForward(req, "portlet.ext.languagesmanager.edit_language_keys");
    }



  private void _retrieveLanguages(ActionRequest req, ActionResponse res, PortletConfig config, ActionForm form)
        throws Exception {
   
    Language lang = null;
    if(req.getParameter("id") != null)
      lang = langAPI.getLanguage(req.getParameter("id"));
    else
      lang = langAPI.getDefaultLanguage();

      req.setAttribute(WebKeys.LANGUAGE_MANAGER_LANGUAGE, lang);

        List<Language> list = null; // LinkedList();

        if (req.getAttribute(WebKeys.LANGUAGE_MANAGER_LIST) == null) {
            list = langAPI.getLanguages();
        } else {
            list = (List<Language>) req.getAttribute(WebKeys.LANGUAGE_MANAGER_LIST);
        }

        req.setAttribute(WebKeys.LANGUAGE_MANAGER_LIST, list);
    }


    /* check for the existence of the languages resource files, if not create that */
    private void _checkLanguagesFiles(ActionRequest req, ActionResponse res, PortletConfig config, ActionForm form)
        throws Exception {
        List<Language> list = (List<Language>) req.getAttribute(WebKeys.LANGUAGE_MANAGER_LIST);

        for (int i = 0; i < list.size(); i++) {
         
          Language lang = list.get(i);
          langAPI.createLanguageFiles(lang);

        }
    }


    private boolean _save(ActionRequest req, ActionResponse res, PortletConfig config, ActionForm form)
        throws Exception {
    Pattern p = Pattern.compile("[A-Za-z0-9-_\\.]+");
      Language lang = (Language) req.getAttribute(WebKeys.LANGUAGE_MANAGER_LANGUAGE);
      int numberOfKeys = Integer.parseInt(req.getParameter("keys"));
      Map<String, String> generalKeys = new HashMap<String, String>();
      Map<String, String> specificKeys = new HashMap<String, String>();
      Set<String> toDeleteKeys = new HashSet<String>();
      for(int i = 0; i < numberOfKeys; i++) {
        String remove = req.getParameter(lang.getLanguageCode() + "-" + i + "-remove");
        String key = req.getParameter(lang.getLanguageCode() + "-" + i + "-key");
        if(!p.matcher(key).matches()) {
        SessionMessages.add(req, "message", "message.languagemanager.key.error");
          return false;
        }
        String general = req.getParameter(lang.getLanguageCode() + "-general-" + i + "-value");
        String specific = req.getParameter(lang.getLanguageCode() + "-" + lang.getCountryCode() + "-" + i + "-value");
        if(remove == null) {
          generalKeys.put(key, general);
          specificKeys.put(key, specific);
        } else {
          toDeleteKeys.add(key);
        }
      }
    langAPI.saveLanguageKeys(lang, generalKeys, specificKeys, toDeleteKeys);
    MultiMessageResources messages = (MultiMessageResources) req.getAttribute(Globals.MESSAGES_KEY);
    messages.reload();
   
        SessionMessages.add(req, "message", "message.languagemanager.save");
        return true;
    }



} //end of the class
TOP

Related Classes of com.dotmarketing.portlets.languagesmanager.action.EditLanguageKeysAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.