1 31 32 package org.opencms.workplace.tools; 33 34 import org.opencms.main.OpenCms; 35 import org.opencms.util.CmsMacroResolver; 36 import org.opencms.util.CmsUUID; 37 import org.opencms.util.I_CmsMacroResolver; 38 import org.opencms.workplace.CmsWorkplace; 39 40 import java.util.Arrays ; 41 import java.util.Collections ; 42 import java.util.Iterator ; 43 import java.util.List ; 44 45 61 public class CmsToolMacroResolver implements I_CmsMacroResolver { 62 63 64 public static final String PREFIX_ADMIN = "admin."; 65 66 67 public static final String KEY_USERNAME = "userName."; 68 69 70 public static final String KEY_GROUPNAME = "groupName."; 71 72 73 public static final String KEY_JOBNAME = "jobName."; 74 75 76 public static final String KEY_PROJECTNAME = "projectName."; 77 78 79 public static final String [] VALUE_NAME_ARRAY = {KEY_USERNAME, KEY_GROUPNAME, KEY_JOBNAME, KEY_PROJECTNAME}; 80 81 82 public static final List VALUE_NAMES = Collections.unmodifiableList(Arrays.asList(VALUE_NAME_ARRAY)); 83 84 85 private CmsWorkplace m_wp; 86 87 92 public CmsToolMacroResolver(CmsWorkplace wp) { 93 94 m_wp = wp; 95 } 96 97 112 public static String resolveMacros(String input, CmsWorkplace wp) { 113 114 return new CmsToolMacroResolver(wp).resolveMacros(input); 115 } 116 117 120 public String getMacroValue(String macro) { 121 122 if (!macro.startsWith(CmsToolMacroResolver.PREFIX_ADMIN)) { 123 return m_wp.getMacroResolver().getMacroValue(macro); 125 } 126 macro = macro.substring(CmsToolMacroResolver.PREFIX_ADMIN.length()); 127 String id = null; 128 Iterator it = VALUE_NAMES.iterator(); 130 while (it.hasNext()) { 131 String cmd = it.next().toString(); 132 if (macro.startsWith(cmd)) { 133 id = macro.substring(cmd.length()); 134 macro = cmd; 135 } 136 } 137 if (id == null) { 138 return null; 140 } 141 try { 142 if (macro == CmsToolMacroResolver.KEY_USERNAME) { 143 return m_wp.getCms().readUser(new CmsUUID(id)).getName(); 144 } 145 if (macro == CmsToolMacroResolver.KEY_GROUPNAME) { 146 return m_wp.getCms().readGroup(new CmsUUID(id)).getName(); 147 } 148 if (macro == CmsToolMacroResolver.KEY_PROJECTNAME) { 149 return m_wp.getCms().readProject(new Integer (id).intValue()).getName(); 150 } 151 if (macro == CmsToolMacroResolver.KEY_JOBNAME) { 152 return OpenCms.getScheduleManager().getJob(id).getJobName(); 153 } 154 } catch (Exception e) { 155 } 157 return null; 158 } 159 160 168 public String resolveMacros(String input) { 169 170 String result = input; 171 172 if (input != null) { 173 String lastResult; 174 do { 175 lastResult = result; 177 result = CmsMacroResolver.resolveMacros(result, this); 179 } while (!result.equals(lastResult)); 181 } 182 return result; 184 } 185 186 189 public boolean isKeepEmptyMacros() { 190 191 return true; 192 } 193 } | Popular Tags |