KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > icesoft > faces > context > effects > DragCache


1 /*
2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3  *
4  * "The contents of this file are subject to the Mozilla Public License
5  * Version 1.1 (the "License"); you may not use this file except in
6  * compliance with the License. You may obtain a copy of the License at
7  * http://www.mozilla.org/MPL/
8  *
9  * Software distributed under the License is distributed on an "AS IS"
10  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
11  * License for the specific language governing rights and limitations under
12  * the License.
13  *
14  * The Original Code is ICEfaces 1.5 open source software code, released
15  * November 5, 2006. The Initial Developer of the Original Code is ICEsoft
16  * Technologies Canada, Corp. Portions created by ICEsoft are Copyright (C)
17  * 2004-2006 ICEsoft Technologies Canada, Corp. All Rights Reserved.
18  *
19  * Contributor(s): _____________________.
20  *
21  * Alternatively, the contents of this file may be used under the terms of
22  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"
23  * License), in which case the provisions of the LGPL License are
24  * applicable instead of those above. If you wish to allow use of your
25  * version of this file only under the terms of the LGPL License and not to
26  * allow others to use your version of this file under the MPL, indicate
27  * your decision by deleting the provisions above and replace them with
28  * the notice and other provisions required by the LGPL License. If you do
29  * not delete the provisions above, a recipient may use your version of
30  * this file under either the MPL or the LGPL License."
31  *
32  */

33
34 package com.icesoft.faces.context.effects;
35
36 import javax.faces.context.FacesContext;
37 import java.util.HashMap JavaDoc;
38 import java.util.Map JavaDoc;
39 import java.util.logging.Logger JavaDoc;
40 import java.util.logging.Level JavaDoc;
41
42 /**
43  * Store values of Draggable and Droppables between requests
44  *
45  */

46 public class DragCache {
47     private static Logger JavaDoc log = Logger.getLogger(DragCache.class.getName());
48
49     private static final String JavaDoc CACHE_CLEARED =
50             "ICESOFT_DRAG_CACHE_CLEARED_FLAG";
51     private static final String JavaDoc CACHE_KEY = "ICESOFT_DRAG_CACHE_RGDM_FLAG";
52     private static final String JavaDoc KEY_START = "ICEDRAGKEY[";
53     private static final String JavaDoc KEY_END = "]ICEDRAGKEY";
54
55
56     /**
57      * Add a value to the cache
58      * @param value
59      * @param context
60      * @return
61      */

62     public static String JavaDoc put(Object JavaDoc value, FacesContext context) {
63         Map JavaDoc sessionMap = context.getExternalContext().getSessionMap();
64         //TODO: Clear out when values are no longer needed. How can this be detected?
65
if (sessionMap.get(CACHE_KEY) == null) {
66             sessionMap.put(CACHE_KEY, new HashMap JavaDoc());
67         }
68         Map JavaDoc cache = (Map JavaDoc) sessionMap.get(CACHE_KEY);
69         String JavaDoc key = KEY_START + cache.size() + KEY_END;
70         cache.put(key, value);
71
72         return key;
73     }
74
75
76
77     /**
78      * Get a value from the cache
79      * @param key
80      * @param context
81      * @return
82      */

83     public static Object JavaDoc get(String JavaDoc key, FacesContext context) {
84         if (key == null) {
85             throw new NullPointerException JavaDoc("Key can't be null");
86         }
87         key = key.trim();
88         Map JavaDoc sessionMap = context.getExternalContext().getSessionMap();
89         Map JavaDoc cache = (Map JavaDoc) sessionMap.get(CACHE_KEY);
90         if (cache == null) {
91             throw new IllegalStateException JavaDoc(
92                     "No Drag component placed a value in the cache.");
93         }
94         Object JavaDoc o = cache.get(key);
95         if (o == null) {
96             log.log(Level.SEVERE, "DragCache: No value found for key [" + key + "]");
97         }
98         return cache.get(key);
99     }
100
101 }
102
Popular Tags