1 18 19 package cowsultants.itracker.web.actions; 20 21 import java.io.*; 22 import java.rmi.*; 23 import java.util.*; 24 import javax.ejb.*; 25 import javax.rmi.*; 26 import javax.naming.*; 27 import javax.servlet.*; 28 import javax.servlet.http.*; 29 30 import org.apache.commons.beanutils.*; 31 import org.apache.struts.action.*; 32 import org.apache.struts.upload.*; 33 import org.apache.struts.util.*; 34 import org.apache.struts.validator.*; 35 36 import cowsultants.itracker.ejb.client.exceptions.*; 37 import cowsultants.itracker.ejb.client.interfaces.*; 38 import cowsultants.itracker.ejb.client.models.*; 39 import cowsultants.itracker.ejb.client.resources.*; 40 import cowsultants.itracker.ejb.client.util.*; 41 import cowsultants.itracker.web.util.*; 42 43 44 public class ExportLanguageAction extends ITrackerAction { 45 46 public ExportLanguageAction () { 47 } 48 49 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 50 ActionErrors errors = new ActionErrors(); 51 52 if(! isLoggedIn(request, response)) { 53 return mapping.findForward("login"); 54 } 55 56 if(! hasPermission(UserUtilities.PERMISSION_USER_ADMIN, request, response)) { 57 return mapping.findForward("unauthorized"); 58 } 59 60 try { 61 InitialContext ic = new InitialContext(); 62 63 Object scRef = ic.lookup("java:comp/env/" + SystemConfiguration.JNDI_NAME); 64 SystemConfigurationHome scHome = (SystemConfigurationHome) PortableRemoteObject.narrow(scRef, SystemConfigurationHome.class); 65 SystemConfiguration sc = scHome.create(); 66 67 String locale = (String ) PropertyUtils.getSimpleProperty(form, "locale"); 68 if(locale != null && ! locale.equals("")) { 69 StringBuffer output = new StringBuffer ("# ITracker language properties file for locale " + locale + "\n\n"); 70 71 NameValuePairModel[] items = sc.getDefinedKeysAsArray(locale); 72 for(int i = 0; i < items.length; i++) { 73 if(items[i].getName() != null && items[i].getValue() != null) { 74 output.append(ITrackerResources.escapeUnicodeString(items[i].getName(), false) + "=" + ITrackerResources.escapeUnicodeString(HTMLUtilities.escapeNewlines(items[i].getValue()), false) + "\n"); 75 } 76 } 77 response.setHeader("Content-Disposition", "attachment; filename=\"ITracker" + (locale.equals(ITrackerResources.BASE_LOCALE) ? "" : "_" + locale) + ".properties\""); 78 response.setHeader("Content-Type", "application/x-itracker-language-export; charset=UTF-8"); 79 ServletOutputStream out = response.getOutputStream(); 80 out.println(output.toString()); 81 out.flush(); 82 return null; 83 } 84 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidlocale")); 85 } catch(Exception e) { 86 Logger.logError("Exception while exporting language.", e); 87 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.system")); 88 } 89 90 if(! errors.isEmpty()) { 91 saveErrors(request, errors); 92 } 93 94 return mapping.findForward("error"); 95 } 96 97 } 98 | Popular Tags |