KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > hivemind > util > ToStringBuilder


1 // Copyright 2004, 2005 The Apache Software Foundation
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14

15 package org.apache.hivemind.util;
16
17 /**
18  * A simple replacement for the more involved version in commons-lang; this is used
19  * to help construct the description string returned by an object's
20  * <code>toString()</code> method.
21  *
22  * @author Howard Lewis Ship
23  */

24 public class ToStringBuilder
25 {
26     private StringBuffer JavaDoc _buffer = new StringBuffer JavaDoc();
27
28     private int _mode;
29     private int _attributeCount;
30
31     private static int _defaultMode;
32
33     public static final int INCLUDE_PACKAGE_PREFIX = 0x1;
34     public static final int INCLUDE_HASHCODE = 0x02;
35
36     public ToStringBuilder(Object JavaDoc target)
37     {
38         this(target, _defaultMode);
39     }
40
41     public ToStringBuilder(Object JavaDoc target, int mode)
42     {
43         _mode = mode;
44
45         appendClassName(target);
46         appendHashCode(target);
47     }
48
49     private void appendHashCode(Object JavaDoc target)
50     {
51         if ((_mode & INCLUDE_HASHCODE) == 0)
52             return;
53
54         _buffer.append('@');
55         _buffer.append(Integer.toHexString(target.hashCode()));
56     }
57
58     private void appendClassName(Object JavaDoc target)
59     {
60         String JavaDoc className = target.getClass().getName();
61
62         if ((_mode & INCLUDE_PACKAGE_PREFIX) != 0)
63         {
64             _buffer.append(className);
65             return;
66         }
67
68         int lastdotx = className.lastIndexOf('.');
69
70         _buffer.append(className.substring(lastdotx + 1));
71     }
72
73     public static int getDefaultMode()
74     {
75         return _defaultMode;
76     }
77
78     public static void setDefaultMode(int i)
79     {
80         _defaultMode = i;
81     }
82
83     /**
84      * Returns the final assembled string. This may only be invoked once, after
85      * all attributes have been appended.
86      */

87     public String JavaDoc toString()
88     {
89         if (_attributeCount > 0)
90             _buffer.append(']');
91
92         String JavaDoc result = _buffer.toString();
93
94         _buffer = null;
95
96         return result;
97     }
98
99     public void append(String JavaDoc attributeName, boolean value)
100     {
101         append(attributeName, String.valueOf(value));
102     }
103
104     public void append(String JavaDoc attributeName, byte value)
105     {
106         append(attributeName, String.valueOf(value));
107
108     }
109     public void append(String JavaDoc attributeName, short value)
110     {
111         append(attributeName, String.valueOf(value));
112     }
113
114     public void append(String JavaDoc attributeName, int value)
115     {
116         append(attributeName, String.valueOf(value));
117     }
118
119     public void append(String JavaDoc attributeName, Object JavaDoc value)
120     {
121         append(attributeName, String.valueOf(value));
122     }
123
124     public void append(String JavaDoc attributeName, String JavaDoc value)
125     {
126         if (_attributeCount++ == 0)
127             _buffer.append('[');
128
129         else
130             _buffer.append(' ');
131
132         _buffer.append(attributeName);
133
134         _buffer.append('=');
135
136         _buffer.append(value);
137     }
138 }
139
Popular Tags