001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.commons.lang3.builder;
018
019import java.lang.reflect.Array;
020import java.util.Collection;
021import java.util.Map;
022
023/**
024 * Works with {@link ToStringBuilder} to create a {@code toString}.
025 *
026 * <p>This class is intended to be used as a singleton.
027 * There is no need to instantiate a new style each time.
028 * Simply instantiate the class once, customize the values as required, and
029 * store the result in a public static final variable for the rest of the
030 * program to access.</p>
031 *
032 * @since 1.0
033 */
034public class StandardToStringStyle extends ToStringStyle {
035
036    /**
037     * Required for serialization support.
038     *
039     * @see java.io.Serializable
040     */
041    private static final long serialVersionUID = 1L;
042
043    /**
044     * Constructs a new instance.
045     */
046    public StandardToStringStyle() {
047    }
048
049    /**
050     * Gets the array end text.
051     *
052     * @return the current array end text
053     */
054    @Override
055    public String getArrayEnd() {
056        return super.getArrayEnd();
057    }
058
059    /**
060     * Gets the array separator text.
061     *
062     * @return the current array separator text
063     */
064    @Override
065    public String getArraySeparator() {
066        return super.getArraySeparator();
067    }
068
069    /**
070     * Gets the array start text.
071     *
072     * @return the current array start text
073     */
074    @Override
075    public String getArrayStart() {
076        return super.getArrayStart();
077    }
078
079    /**
080     * Gets the content end text.
081     *
082     * @return the current content end text
083     */
084    @Override
085    public String getContentEnd() {
086        return super.getContentEnd();
087    }
088
089    /**
090     * Gets the content start text.
091     *
092     * @return the current content start text
093     */
094    @Override
095    public String getContentStart() {
096        return super.getContentStart();
097    }
098
099    /**
100     * Gets the field name value separator text.
101     *
102     * @return the current field name value separator text
103     */
104    @Override
105    public String getFieldNameValueSeparator() {
106        return super.getFieldNameValueSeparator();
107    }
108
109    /**
110     * Gets the field separator text.
111     *
112     * @return the current field separator text
113     */
114    @Override
115    public String getFieldSeparator() {
116        return super.getFieldSeparator();
117    }
118
119    /**
120     * Gets the text to output when {@code null} found.
121     *
122     * @return the current text to output when {@code null} found
123     */
124    @Override
125    public String getNullText() {
126        return super.getNullText();
127    }
128
129    /**
130     * Gets the end text to output when a {@link Collection},
131     * {@link Map} or {@link Array} size is output.
132     *
133     * <p>This is output after the size value.</p>
134     *
135     * @return the current end of size text
136     */
137    @Override
138    public String getSizeEndText() {
139        return super.getSizeEndText();
140    }
141
142    /**
143     * Gets the text to output when a {@link Collection},
144     * {@link Map} or {@link Array} size is output.
145     *
146     * <p>This is output before the size value.</p>
147     *
148     * @return the current start of size text
149     */
150    @Override
151    public String getSizeStartText() {
152        return super.getSizeStartText();
153    }
154
155    /**
156     * Gets the end text to output when an {@link Object} is
157     * output in summary mode.
158     *
159     * <p>This is output after the size value.</p>
160     *
161     * @return the current end of summary text
162     */
163    @Override
164    public String getSummaryObjectEndText() {
165        return super.getSummaryObjectEndText();
166    }
167
168    /**
169     * Gets the start text to output when an {@link Object} is
170     * output in summary mode.
171     *
172     * <p>This is output before the size value.</p>
173     *
174     * @return the current start of summary text
175     */
176    @Override
177    public String getSummaryObjectStartText() {
178        return super.getSummaryObjectStartText();
179    }
180
181    /**
182     * Gets whether to output array content detail.
183     *
184     * @return the current array content detail setting
185     */
186    @Override
187    public boolean isArrayContentDetail() {
188        return super.isArrayContentDetail();
189    }
190
191    /**
192     * Gets whether to use full detail when the caller doesn't
193     * specify.
194     *
195     * @return the current defaultFullDetail flag
196     */
197    @Override
198    public boolean isDefaultFullDetail() {
199        return super.isDefaultFullDetail();
200    }
201
202    /**
203     * Gets whether the field separator should be added at the end
204     * of each buffer.
205     *
206     * @return fieldSeparatorAtEnd flag
207     * @since 2.0
208     */
209    @Override
210    public boolean isFieldSeparatorAtEnd() {
211        return super.isFieldSeparatorAtEnd();
212    }
213
214    /**
215     * Gets whether the field separator should be added at the start
216     * of each buffer.
217     *
218     * @return the fieldSeparatorAtStart flag
219     * @since 2.0
220     */
221    @Override
222    public boolean isFieldSeparatorAtStart() {
223        return super.isFieldSeparatorAtStart();
224    }
225
226    /**
227     * Gets whether to use the class name.
228     *
229     * @return the current useClassName flag
230     */
231    @Override
232    public boolean isUseClassName() {
233        return super.isUseClassName();
234    }
235
236    /**
237     * Gets whether to use the field names passed in.
238     *
239     * @return the current useFieldNames flag
240     */
241    @Override
242    public boolean isUseFieldNames() {
243        return super.isUseFieldNames();
244    }
245
246    /**
247     * Gets whether to use the identity hash code.
248     * @return the current useIdentityHashCode flag
249     */
250    @Override
251    public boolean isUseIdentityHashCode() {
252        return super.isUseIdentityHashCode();
253    }
254
255    /**
256     * Gets whether to output short or long class names.
257     *
258     * @return the current useShortClassName flag
259     * @since 2.0
260     */
261    @Override
262    public boolean isUseShortClassName() {
263        return super.isUseShortClassName();
264    }
265
266    /**
267     * Sets whether to output array content detail.
268     *
269     * @param arrayContentDetail  the new arrayContentDetail flag
270     */
271    @Override
272    public void setArrayContentDetail(final boolean arrayContentDetail) {
273        super.setArrayContentDetail(arrayContentDetail);
274    }
275
276    /**
277     * Sets the array end text.
278     *
279     * <p>{@code null} is accepted, but will be converted
280     * to an empty String.</p>
281     *
282     * @param arrayEnd  the new array end text
283     */
284    @Override
285    public void setArrayEnd(final String arrayEnd) {
286        super.setArrayEnd(arrayEnd);
287    }
288
289    /**
290     * Sets the array separator text.
291     *
292     * <p>{@code null} is accepted, but will be converted
293     * to an empty String.</p>
294     *
295     * @param arraySeparator  the new array separator text
296     */
297    @Override
298    public void setArraySeparator(final String arraySeparator) {
299        super.setArraySeparator(arraySeparator);
300    }
301
302    /**
303     * Sets the array start text.
304     *
305     * <p>{@code null} is accepted, but will be converted
306     * to an empty String.</p>
307     *
308     * @param arrayStart  the new array start text
309     */
310    @Override
311    public void setArrayStart(final String arrayStart) {
312        super.setArrayStart(arrayStart);
313    }
314
315    /**
316     * Sets the content end text.
317     *
318     * <p>{@code null} is accepted, but will be converted
319     * to an empty String.</p>
320     *
321     * @param contentEnd  the new content end text
322     */
323    @Override
324    public void setContentEnd(final String contentEnd) {
325        super.setContentEnd(contentEnd);
326    }
327
328    /**
329     * Sets the content start text.
330     *
331     * <p>{@code null} is accepted, but will be converted
332     * to an empty String.</p>
333     *
334     * @param contentStart  the new content start text
335     */
336    @Override
337    public void setContentStart(final String contentStart) {
338        super.setContentStart(contentStart);
339    }
340
341    /**
342     * Sets whether to use full detail when the caller doesn't
343     * specify.
344     *
345     * @param defaultFullDetail  the new defaultFullDetail flag
346     */
347    @Override
348    public void setDefaultFullDetail(final boolean defaultFullDetail) {
349        super.setDefaultFullDetail(defaultFullDetail);
350    }
351
352    /**
353     * Sets the field name value separator text.
354     *
355     * <p>{@code null} is accepted, but will be converted
356     * to an empty String.</p>
357     *
358     * @param fieldNameValueSeparator  the new field name value separator text
359     */
360    @Override
361    public void setFieldNameValueSeparator(final String fieldNameValueSeparator) {
362        super.setFieldNameValueSeparator(fieldNameValueSeparator);
363    }
364
365    /**
366     * Sets the field separator text.
367     *
368     * <p>{@code null} is accepted, but will be converted
369     * to an empty String.</p>
370     *
371     * @param fieldSeparator  the new field separator text
372     */
373    @Override
374    public void setFieldSeparator(final String fieldSeparator) {
375        super.setFieldSeparator(fieldSeparator);
376    }
377
378    /**
379     * Sets whether the field separator should be added at the end
380     * of each buffer.
381     *
382     * @param fieldSeparatorAtEnd  the fieldSeparatorAtEnd flag
383     * @since 2.0
384     */
385    @Override
386    public void setFieldSeparatorAtEnd(final boolean fieldSeparatorAtEnd) {
387        super.setFieldSeparatorAtEnd(fieldSeparatorAtEnd);
388    }
389
390    /**
391     * Sets whether the field separator should be added at the start
392     * of each buffer.
393     *
394     * @param fieldSeparatorAtStart  the fieldSeparatorAtStart flag
395     * @since 2.0
396     */
397    @Override
398    public void setFieldSeparatorAtStart(final boolean fieldSeparatorAtStart) {
399        super.setFieldSeparatorAtStart(fieldSeparatorAtStart);
400    }
401
402    /**
403     * Sets the text to output when {@code null} found.
404     *
405     * <p>{@code null} is accepted, but will be converted
406     * to an empty String.</p>
407     *
408     * @param nullText  the new text to output when {@code null} found
409     */
410    @Override
411    public void setNullText(final String nullText) {
412        super.setNullText(nullText);
413    }
414
415    /**
416     * Sets the end text to output when a {@link Collection},
417     * {@link Map} or {@link Array} size is output.
418     *
419     * <p>This is output after the size value.</p>
420     *
421     * <p>{@code null} is accepted, but will be converted
422     * to an empty String.</p>
423     *
424     * @param sizeEndText  the new end of size text
425     */
426    @Override
427    public void setSizeEndText(final String sizeEndText) {
428        super.setSizeEndText(sizeEndText);
429    }
430
431    /**
432     * Sets the start text to output when a {@link Collection},
433     * {@link Map} or {@link Array} size is output.
434     *
435     * <p>This is output before the size value.</p>
436     *
437     * <p>{@code null} is accepted, but will be converted to
438     * an empty String.</p>
439     *
440     * @param sizeStartText  the new start of size text
441     */
442    @Override
443    public void setSizeStartText(final String sizeStartText) {
444        super.setSizeStartText(sizeStartText);
445    }
446
447    /**
448     * Sets the end text to output when an {@link Object} is
449     * output in summary mode.
450     *
451     * <p>This is output after the size value.</p>
452     *
453     * <p>{@code null} is accepted, but will be converted to
454     * an empty String.</p>
455     *
456     * @param summaryObjectEndText  the new end of summary text
457     */
458    @Override
459    public void setSummaryObjectEndText(final String summaryObjectEndText) {
460        super.setSummaryObjectEndText(summaryObjectEndText);
461    }
462
463    /**
464     * Sets the start text to output when an {@link Object} is
465     * output in summary mode.
466     *
467     * <p>This is output before the size value.</p>
468     *
469     * <p>{@code null} is accepted, but will be converted to
470     * an empty String.</p>
471     *
472     * @param summaryObjectStartText  the new start of summary text
473     */
474    @Override
475    public void setSummaryObjectStartText(final String summaryObjectStartText) {
476        super.setSummaryObjectStartText(summaryObjectStartText);
477    }
478
479    /**
480     * Sets whether to use the class name.
481     *
482     * @param useClassName  the new useClassName flag
483     */
484    @Override
485    public void setUseClassName(final boolean useClassName) {
486        super.setUseClassName(useClassName);
487    }
488
489    /**
490     * Sets whether to use the field names passed in.
491     *
492     * @param useFieldNames  the new useFieldNames flag
493     */
494    @Override
495    public void setUseFieldNames(final boolean useFieldNames) {
496        super.setUseFieldNames(useFieldNames);
497    }
498
499    /**
500     * Sets whether to use the identity hash code.
501     *
502     * @param useIdentityHashCode  the new useIdentityHashCode flag
503     */
504    @Override
505    public void setUseIdentityHashCode(final boolean useIdentityHashCode) {
506        super.setUseIdentityHashCode(useIdentityHashCode);
507    }
508
509    /**
510     * Sets whether to output short or long class names.
511     *
512     * @param useShortClassName  the new useShortClassName flag
513     * @since 2.0
514     */
515    @Override
516    public void setUseShortClassName(final boolean useShortClassName) {
517        super.setUseShortClassName(useShortClassName);
518    }
519
520}