1 94 package com.ivata.groupware.navigation.struts; 95 96 import java.lang.reflect.InvocationTargetException ; 97 98 import javax.servlet.http.HttpServletRequest ; 99 import javax.servlet.http.HttpServletResponse ; 100 import javax.servlet.http.HttpSession ; 101 102 import org.apache.commons.beanutils.PropertyUtils; 103 import org.apache.log4j.Logger; 104 import org.apache.struts.action.ActionErrors; 105 import org.apache.struts.action.ActionForm; 106 import org.apache.struts.action.ActionMapping; 107 108 import com.ivata.groupware.admin.security.server.SecuritySession; 109 import com.ivata.groupware.admin.setting.Settings; 110 import com.ivata.groupware.navigation.menu.MenuConstants; 111 import com.ivata.groupware.navigation.menu.MenuDO; 112 import com.ivata.groupware.navigation.menu.item.MenuItemDO; 113 import com.ivata.mask.MaskFactory; 114 import com.ivata.mask.persistence.PersistenceManager; 115 import com.ivata.mask.persistence.PersistenceSession; 116 import com.ivata.mask.util.StringHandling; 117 import com.ivata.mask.util.SystemException; 118 import com.ivata.mask.web.RewriteHandling; 119 import com.ivata.mask.web.struts.MaskAction; 120 import com.ivata.mask.web.struts.MaskAuthenticator; 121 122 123 132 public class AddFavoriteAction extends MaskAction { 133 136 private static Logger log = Logger.getLogger(AddFavoriteAction.class); 137 142 private PersistenceManager persistenceManager; 143 144 149 private Settings settings; 150 151 162 public AddFavoriteAction(final PersistenceManager persistenceManagerParam, 163 final Settings settings, 164 final MaskFactory maskFactory, 165 final MaskAuthenticator authenticator) { 166 super(maskFactory, authenticator); 167 this.persistenceManager = persistenceManagerParam; 168 this.settings = settings; 169 } 170 171 191 public String execute(final ActionMapping mapping, 192 final ActionErrors errors, 193 final ActionForm form, 194 final HttpServletRequest request, 195 final HttpServletResponse response, 196 final HttpSession session) throws SystemException { 197 if (log.isDebugEnabled()) { 198 log.debug("In AddFavoriteAction.execute."); 199 } 200 203 String favorite, uRL; 206 try { 207 favorite = (String ) PropertyUtils.getSimpleProperty(form, "favorite");; 208 uRL = (String ) PropertyUtils.getSimpleProperty(form, "uRL");; 209 if (log.isDebugEnabled()) { 210 log.debug("Favorite title is '" 211 + favorite 212 + "', URL is '" 213 + uRL 214 + "'"); 215 } 216 } catch (NoSuchMethodException e) { 217 throw new SystemException(e); 218 } catch (InvocationTargetException e) { 219 throw new SystemException(e); 220 } catch (IllegalAccessException e) { 221 throw new SystemException(e); 222 } 223 224 if (StringHandling.isNullOrEmpty(favorite) 226 || StringHandling.isNullOrEmpty(uRL) ) { 227 log.warn("Either favorite title (" 228 + favorite 229 + ") or URL (" 230 + uRL 231 + ") is null --> returning null and not adding favorite"); 232 return null; 233 } 234 SecuritySession securitySession = 235 (SecuritySession) session.getAttribute("securitySession"); 236 237 uRL = uRL.substring(uRL.lastIndexOf( 239 RewriteHandling.getContextPath(request))); 240 241 242 StringBuffer standardEnding = new StringBuffer ("- "); 244 standardEnding.append(settings.getStringSetting(securitySession, 245 "siteTitle", securitySession.getUser())); 246 if (favorite.endsWith(standardEnding.toString())) { 247 favorite = favorite.substring(0, favorite.length() 248 - standardEnding.length()).trim(); 249 } 250 251 if (uRL.indexOf("jsessionid")!=-1) { 253 int jsessionStart = uRL.indexOf(";"); 254 int jsessionEnd = uRL.lastIndexOf("?"); 255 if (jsessionStart < jsessionEnd) { 256 uRL = uRL.substring(0, jsessionStart) + 257 uRL.substring(jsessionEnd); 258 } else { 259 uRL = uRL.substring(0,jsessionStart); 260 } 261 } 262 PersistenceSession persistenceSession = persistenceManager 264 .openSession(securitySession); 265 try { 266 MenuDO favoritesMenu = (MenuDO)persistenceManager.findByPrimaryKey( 267 persistenceSession, 268 MenuDO.class, 269 MenuConstants.ID_FAVORITES 270 ); 271 272 MenuItemDO menuItem = new MenuItemDO(); 273 274 menuItem.setMenu(favoritesMenu); 275 menuItem.setUser(securitySession.getUser()); 276 menuItem.setImage(null); 277 menuItem.setText(favorite); 278 menuItem.setURL(uRL); 279 menuItem.setPriority(new Integer (0 282 - favoritesMenu.getItems().size())); 283 persistenceManager.add(persistenceSession, menuItem); 284 } finally { 285 persistenceSession.close(); 286 } 287 288 return null; 290 } 291 } 292 | Popular Tags |