• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the  "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 /*
19  * $Id: DecimalFormatProperties.java 468643 2006-10-28 06:56:03Z minchau $
20  */
21 package org.apache.xalan.templates;
22 
23 import java.text.DecimalFormatSymbols;
24 
25 import org.apache.xml.utils.QName;
26 
27 /**
28  * Implement xsl:decimal-format.
29  * <pre>
30  * <!ELEMENT xsl:decimal-format EMPTY>
31  * <!ATTLIST xsl:decimal-format
32  *   name %qname; #IMPLIED
33  *   decimal-separator %char; "."
34  *   grouping-separator %char; ","
35  *   infinity CDATA "Infinity"
36  *   minus-sign %char; "-"
37  *   NaN CDATA "NaN"
38  *   percent %char; "%"
39  *   per-mille %char; "&#x2030;"
40  *   zero-digit %char; "0"
41  *   digit %char; "#"
42  *   pattern-separator %char; ";"
43  * >
44  * </pre>
45  * @see <a href="http://www.w3.org/TR/xslt#format-number">format-number in XSLT Specification</a>
46  * @xsl.usage advanced
47  */
48 public class DecimalFormatProperties extends ElemTemplateElement
49 {
50     static final long serialVersionUID = -6559409339256269446L;
51 
52   /** An instance of DecimalFormatSymbols for this element.
53    *  @serial       */
54   DecimalFormatSymbols m_dfs;
55 
56   /**
57    * Constructor DecimalFormatProperties
58    *
59    */
DecimalFormatProperties(int docOrderNumber)60   public DecimalFormatProperties(int docOrderNumber)
61   {
62 
63     m_dfs = new java.text.DecimalFormatSymbols();
64 
65     // Set default values, they can be overiden if necessary.
66     m_dfs.setInfinity(Constants.ATTRVAL_INFINITY);
67     m_dfs.setNaN(Constants.ATTRVAL_NAN);
68 
69     m_docOrderNumber = docOrderNumber;
70   }
71 
72   /**
73    * Return the decimal format Symbols for this element.
74    * <p>The xsl:decimal-format element declares a decimal-format,
75    * which controls the interpretation of a format pattern used by
76    * the format-number function. If there is a name attribute, then
77    * the element declares a named decimal-format; otherwise, it
78    * declares the default decimal-format. The value of the name
79    * attribute is a QName, which is expanded as described in [2.4 Qualified Names].
80    * It is an error to declare either the default decimal-format or a
81    * decimal-format with a given name more than once (even with different
82    * import precedence), unless it is declared every time with the same
83    * value for all attributes (taking into account any default values).</p>
84    * <p>The other attributes on xsl:decimal-format correspond to the
85    * methods on the JDK 1.1 DecimalFormatSymbols class. For each get/set
86    * method pair there is an attribute defined for the xsl:decimal-format
87    * element.</p>
88    *
89    * @return the decimal format Symbols for this element.
90    */
getDecimalFormatSymbols()91   public DecimalFormatSymbols getDecimalFormatSymbols()
92   {
93     return m_dfs;
94   }
95 
96   /**
97    * If there is a name attribute, then the element declares a named
98    * decimal-format; otherwise, it declares the default decimal-format.
99    * @serial
100    */
101   private QName m_qname = null;
102 
103   /**
104    * Set the "name" attribute.
105    * If there is a name attribute, then the element declares a named
106    * decimal-format; otherwise, it declares the default decimal-format.
107    *
108    * @param qname The name to set as the "name" attribute.
109    */
setName(QName qname)110   public void setName(QName qname)
111   {
112     m_qname = qname;
113   }
114 
115   /**
116    * Get the "name" attribute.
117    * If there is a name attribute, then the element declares a named
118    * decimal-format; otherwise, it declares the default decimal-format.
119    *
120    * @return the value of the "name" attribute.
121    */
getName()122   public QName getName()
123   {
124 
125     if (m_qname == null)
126       return new QName("");
127     else
128       return m_qname;
129   }
130 
131   /**
132    * Set the "decimal-separator" attribute.
133    * decimal-separator specifies the character used for the decimal sign;
134    * the default value is the period character (.).
135    *
136    * @param ds Character to set as decimal separator
137    */
setDecimalSeparator(char ds)138   public void setDecimalSeparator(char ds)
139   {
140     m_dfs.setDecimalSeparator(ds);
141   }
142 
143   /**
144    * Get the "decimal-separator" attribute.
145    * decimal-separator specifies the character used for the decimal sign;
146    * the default value is the period character (.).
147    *
148    * @return the character to use as decimal separator
149    */
getDecimalSeparator()150   public char getDecimalSeparator()
151   {
152     return m_dfs.getDecimalSeparator();
153   }
154 
155   /**
156    * Set the "grouping-separator" attribute.
157    * grouping-separator specifies the character used as a grouping
158    * (e.g. thousands) separator; the default value is the comma character (,).
159    *
160    * @param gs Character to use a grouping separator
161    */
setGroupingSeparator(char gs)162   public void setGroupingSeparator(char gs)
163   {
164     m_dfs.setGroupingSeparator(gs);
165   }
166 
167   /**
168    * Get the "grouping-separator" attribute.
169    * grouping-separator specifies the character used as a grouping
170    * (e.g. thousands) separator; the default value is the comma character (,).
171    *
172    * @return Character to use a grouping separator
173    */
getGroupingSeparator()174   public char getGroupingSeparator()
175   {
176     return m_dfs.getGroupingSeparator();
177   }
178 
179   /**
180    * Set the "infinity" attribute.
181    * infinity specifies the string used to represent infinity;
182    * the default value is the string Infinity.
183    *
184    * @param inf String to use as the "infinity" attribute.
185    */
setInfinity(String inf)186   public void setInfinity(String inf)
187   {
188     m_dfs.setInfinity(inf);
189   }
190 
191   /**
192    * Get the "infinity" attribute.
193    * infinity specifies the string used to represent infinity;
194    * the default value is the string Infinity.
195    *
196    * @return String to use as the "infinity" attribute.
197    */
getInfinity()198   public String getInfinity()
199   {
200     return m_dfs.getInfinity();
201   }
202 
203   /**
204    * Set the "minus-sign" attribute.
205    * minus-sign specifies the character used as the default minus sign; the
206    * default value is the hyphen-minus character (-, #x2D).
207    *
208    * @param v Character to use as minus sign
209    */
setMinusSign(char v)210   public void setMinusSign(char v)
211   {
212     m_dfs.setMinusSign(v);
213   }
214 
215   /**
216    * Get the "minus-sign" attribute.
217    * minus-sign specifies the character used as the default minus sign; the
218    * default value is the hyphen-minus character (-, #x2D).
219    *
220    * @return Character to use as minus sign
221    */
getMinusSign()222   public char getMinusSign()
223   {
224     return m_dfs.getMinusSign();
225   }
226 
227   /**
228    * Set the "NaN" attribute.
229    * NaN specifies the string used to represent the NaN value;
230    * the default value is the string NaN.
231    *
232    * @param v String to use as the "NaN" attribute.
233    */
setNaN(String v)234   public void setNaN(String v)
235   {
236     m_dfs.setNaN(v);
237   }
238 
239   /**
240    * Get the "NaN" attribute.
241    * NaN specifies the string used to represent the NaN value;
242    * the default value is the string NaN.
243    *
244    * @return String to use as the "NaN" attribute.
245    */
getNaN()246   public String getNaN()
247   {
248     return m_dfs.getNaN();
249   }
250 
251   /**
252    * Return the node name.
253    *
254    * @return the element's name
255    */
getNodeName()256   public String getNodeName()
257   {
258     return Constants.ELEMNAME_DECIMALFORMAT_STRING;
259   }
260 
261   /**
262    * Set the "percent" attribute.
263    * percent specifies the character used as a percent sign; the default
264    * value is the percent character (%).
265    *
266    * @param v Character to use as percent
267    */
setPercent(char v)268   public void setPercent(char v)
269   {
270     m_dfs.setPercent(v);
271   }
272 
273   /**
274    * Get the "percent" attribute.
275    * percent specifies the character used as a percent sign; the default
276    * value is the percent character (%).
277    *
278    * @return Character to use as percent
279    */
getPercent()280   public char getPercent()
281   {
282     return m_dfs.getPercent();
283   }
284 
285   /**
286    * Set the "per-mille" attribute.
287    * per-mille specifies the character used as a per mille sign; the default
288    * value is the Unicode per-mille character (#x2030).
289    *
290    * @param v Character to use as per-mille
291    */
setPerMille(char v)292   public void setPerMille(char v)
293   {
294     m_dfs.setPerMill(v);
295   }
296 
297   /**
298    * Get the "per-mille" attribute.
299    * per-mille specifies the character used as a per mille sign; the default
300    * value is the Unicode per-mille character (#x2030).
301    *
302    * @return Character to use as per-mille
303    */
getPerMille()304   public char getPerMille()
305   {
306     return m_dfs.getPerMill();
307   }
308 
309   /**
310    * Get an int constant identifying the type of element.
311    * @see org.apache.xalan.templates.Constants
312    *
313    * @return The token ID for this element
314    */
getXSLToken()315   public int getXSLToken()
316   {
317     return Constants.ELEMNAME_DECIMALFORMAT;
318   }
319 
320   /**
321    * Set the "zero-digit" attribute.
322    * zero-digit specifies the character used as the digit zero; the default
323    * value is the digit zero (0).
324    *
325    * @param v Character to use as the digit zero
326    */
setZeroDigit(char v)327   public void setZeroDigit(char v)
328   {
329     m_dfs.setZeroDigit(v);
330   }
331 
332   /**
333    * Get the "zero-digit" attribute.
334    * zero-digit specifies the character used as the digit zero; the default
335    * value is the digit zero (0).
336    *
337    * @return Character to use as the digit zero
338    */
getZeroDigit()339   public char getZeroDigit()
340   {
341     return m_dfs.getZeroDigit();
342   }
343 
344   /**
345    * Set the "digit" attribute.
346    * digit specifies the character used for a digit in the format pattern;
347    * the default value is the number sign character (#).
348    *
349    * @param v Character to use for a digit in format pattern
350    */
setDigit(char v)351   public void setDigit(char v)
352   {
353     m_dfs.setDigit(v);
354   }
355 
356   /**
357    * Get the "digit" attribute.
358    * digit specifies the character used for a digit in the format pattern;
359    * the default value is the number sign character (#).
360    *
361    * @return Character to use for a digit in format pattern
362    */
getDigit()363   public char getDigit()
364   {
365     return m_dfs.getDigit();
366   }
367 
368   /**
369    * Set the "pattern-separator" attribute.
370    * pattern-separator specifies the character used to separate positive
371    * and negative sub patterns in a pattern; the default value is the
372    * semi-colon character (;).
373    *
374    * @param v Character to use as a pattern separator
375    */
setPatternSeparator(char v)376   public void setPatternSeparator(char v)
377   {
378     m_dfs.setPatternSeparator(v);
379   }
380 
381   /**
382    * Get the "pattern-separator" attribute.
383    * pattern-separator specifies the character used to separate positive
384    * and negative sub patterns in a pattern; the default value is the
385    * semi-colon character (;).
386    *
387    * @return Character to use as a pattern separator
388    */
getPatternSeparator()389   public char getPatternSeparator()
390   {
391     return m_dfs.getPatternSeparator();
392   }
393 
394   /**
395    * This function is called to recompose() all of the decimal format properties elements.
396    *
397    * @param root Stylesheet root
398    */
recompose(StylesheetRoot root)399   public void recompose(StylesheetRoot root)
400   {
401     root.recomposeDecimalFormats(this);
402   }
403 
404 }
405