KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > idaremedia > antx > valueuri > condition > TFValueNormalizer


1 /**
2  * $Id: TFValueNormalizer.java 180 2007-03-15 12:56:38Z ssmc $
3  * Copyright 2004-2005 iDare Media, Inc. All rights reserved.
4  *
5  * Originally written by iDare Media, Inc. for release into the public domain. This
6  * library, source form and binary form, is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public License (LGPL) as published
8  * by the Free Software Foundation; either version 2.1 of the License, or (at your option)
9  * any later version.<p>
10  *
11  * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
12  * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13  * See the GNU LGPL for more details.<p>
14  *
15  * You should have received a copy of the GNU Lesser General Public License along with this
16  * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite
17  * 330, Boston, MA 02111-1307 USA. The GNU LGPL can be found online at
18  * http://www.fsf.org/copyleft/lesser.html<p>
19  *
20  * This product has been influenced by several projects within the open-source community.
21  * The JWare developers wish to acknowledge the open-source community's support. For more
22  * information regarding the open-source products used within JWare, please visit the
23  * JWare website.
24  *----------------------------------------------------------------------------------------*
25  * WEBSITE- http://www.jware.info EMAIL- inquiries@jware.info
26  *----------------------------------------------------------------------------------------*
27  **/

28
29 package com.idaremedia.antx.valueuri.condition;
30
31 import com.idaremedia.antx.apis.Requester;
32 import com.idaremedia.antx.helpers.Strings;
33 import com.idaremedia.antx.helpers.Tk;
34 import com.idaremedia.antx.starters.ValueURIHandlerSkeleton;
35
36 /**
37  * Value URI handler that tries to normalize an Ant-friendly boolean string to either
38  * "<span class="src">true</span>" or "<span class="src">false</span>". Usually called
39  * <span class="src">$truefalse:</span>. You can also specify your own true and false
40  * normalized strings by setting two fragment parameters (separated by
41  * "<span class="src">,,</span>"). The first argument is the true string, the second is
42  * the false string.
43  * <p>
44  * <b>Example Usage:</b><pre>
45  * &lt;domatch value="${<b>$truefalse:</b>@(boolean.property)}" haltifnomatch="yes"&gt;
46  * &lt;equals value="true"&gt;
47  * ...
48  * &lt;equals value="false"&gt;
49  * ...
50  * &lt;/domatch&gt;
51  *
52  * &lt;checkpoint-usertests status="${$isset:uat.failed|$truefalse:?PASS,,FAIL}"/&gt;
53  *
54  * -- To Install --
55  * &lt;manageuris action="install"&gt;
56  * &lt;parameter name="truefalse"
57  * value="com.idaremedia.antx.valueuri.condition.TFValueNormalizer"/&gt;
58  * &lt;/manageuris&gt;
59  * </pre>
60  *
61  * @since JWare/AntX 0.5
62  * @author ssmc, &copy;2004-2005 <a HREF="http://www.jware.info">iDare&nbsp;Media,&nbsp;Inc.</a>
63  * @version 0.5
64  * @.safety multiple
65  * @.group api,helper
66  **/

67
68 public final class TFValueNormalizer extends ValueURIHandlerSkeleton
69 {
70     /**
71      * Initializes a new truefalse value uri handler.
72      **/

73     public TFValueNormalizer()
74     {
75         super();
76     }
77
78
79     /**
80      * Converts a Ant-isque boolean string into a normalized
81      * "<span class="src">true</span>" or "<span class="src">false</span>".
82      * If a custom pair of true/false strings specified as query parameters,
83      * one of these strings will be returned instead.
84      **/

85     public String JavaDoc valueFrom(String JavaDoc uriFragment, String JavaDoc fullUri, Requester clnt)
86     {
87         String JavaDoc truefalse = uriFragment;
88         String JavaDoc T = Strings.TRUE;
89         String JavaDoc F = Strings.FALSE;
90         
91         int i= uriFragment.lastIndexOf("?");
92         if (i>=0) {
93             truefalse = uriFragment.substring(0,i++);
94             if (i<uriFragment.length()) {
95                 String JavaDoc TF = uriFragment.substring(i);
96                 int j = TF.lastIndexOf(",,");
97                 if (j>=0) {//NB: allow for empty true strings!
98
T = TF.substring(0,j);
99                     j += 2;
100                     F = TF.substring(j);
101                 } else {
102                     T = TF;
103                 }
104             }
105         }
106         truefalse = Tk.resolveString(clnt.getProject(),truefalse,true);
107         Boolean JavaDoc B = Tk.string2PosBool(truefalse);
108         if (B==Boolean.FALSE) {
109             B = Tk.string2NegBool(truefalse);
110             if (B==Boolean.TRUE) {
111                 return null;
112             }
113         }
114         return B.booleanValue() ? T : F;
115     }
116 }
117
118
119 /* end-of-TFValueNormalizer.java */
Popular Tags