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 *      https://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     *
249     * @return the current useIdentityHashCode flag
250     */
251    @Override
252    public boolean isUseIdentityHashCode() {
253        return super.isUseIdentityHashCode();
254    }
255
256    /**
257     * Gets whether to output short or long class names.
258     *
259     * @return the current useShortClassName flag
260     * @since 2.0
261     */
262    @Override
263    public boolean isUseShortClassName() {
264        return super.isUseShortClassName();
265    }
266
267    /**
268     * Sets whether to output array content detail.
269     *
270     * @param arrayContentDetail  the new arrayContentDetail flag
271     */
272    @Override
273    public void setArrayContentDetail(final boolean arrayContentDetail) {
274        super.setArrayContentDetail(arrayContentDetail);
275    }
276
277    /**
278     * Sets the array end text.
279     *
280     * <p>{@code null} is accepted, but will be converted
281     * to an empty String.</p>
282     *
283     * @param arrayEnd  the new array end text
284     */
285    @Override
286    public void setArrayEnd(final String arrayEnd) {
287        super.setArrayEnd(arrayEnd);
288    }
289
290    /**
291     * Sets the array separator text.
292     *
293     * <p>{@code null} is accepted, but will be converted
294     * to an empty String.</p>
295     *
296     * @param arraySeparator  the new array separator text
297     */
298    @Override
299    public void setArraySeparator(final String arraySeparator) {
300        super.setArraySeparator(arraySeparator);
301    }
302
303    /**
304     * Sets the array start text.
305     *
306     * <p>{@code null} is accepted, but will be converted
307     * to an empty String.</p>
308     *
309     * @param arrayStart  the new array start text
310     */
311    @Override
312    public void setArrayStart(final String arrayStart) {
313        super.setArrayStart(arrayStart);
314    }
315
316    /**
317     * Sets the content end text.
318     *
319     * <p>{@code null} is accepted, but will be converted
320     * to an empty String.</p>
321     *
322     * @param contentEnd  the new content end text
323     */
324    @Override
325    public void setContentEnd(final String contentEnd) {
326        super.setContentEnd(contentEnd);
327    }
328
329    /**
330     * Sets the content start text.
331     *
332     * <p>{@code null} is accepted, but will be converted
333     * to an empty String.</p>
334     *
335     * @param contentStart  the new content start text
336     */
337    @Override
338    public void setContentStart(final String contentStart) {
339        super.setContentStart(contentStart);
340    }
341
342    /**
343     * Sets whether to use full detail when the caller doesn't
344     * specify.
345     *
346     * @param defaultFullDetail  the new defaultFullDetail flag
347     */
348    @Override
349    public void setDefaultFullDetail(final boolean defaultFullDetail) {
350        super.setDefaultFullDetail(defaultFullDetail);
351    }
352
353    /**
354     * Sets the field name value separator text.
355     *
356     * <p>{@code null} is accepted, but will be converted
357     * to an empty String.</p>
358     *
359     * @param fieldNameValueSeparator  the new field name value separator text
360     */
361    @Override
362    public void setFieldNameValueSeparator(final String fieldNameValueSeparator) {
363        super.setFieldNameValueSeparator(fieldNameValueSeparator);
364    }
365
366    /**
367     * Sets the field separator text.
368     *
369     * <p>{@code null} is accepted, but will be converted
370     * to an empty String.</p>
371     *
372     * @param fieldSeparator  the new field separator text
373     */
374    @Override
375    public void setFieldSeparator(final String fieldSeparator) {
376        super.setFieldSeparator(fieldSeparator);
377    }
378
379    /**
380     * Sets whether the field separator should be added at the end
381     * of each buffer.
382     *
383     * @param fieldSeparatorAtEnd  the fieldSeparatorAtEnd flag
384     * @since 2.0
385     */
386    @Override
387    public void setFieldSeparatorAtEnd(final boolean fieldSeparatorAtEnd) {
388        super.setFieldSeparatorAtEnd(fieldSeparatorAtEnd);
389    }
390
391    /**
392     * Sets whether the field separator should be added at the start
393     * of each buffer.
394     *
395     * @param fieldSeparatorAtStart  the fieldSeparatorAtStart flag
396     * @since 2.0
397     */
398    @Override
399    public void setFieldSeparatorAtStart(final boolean fieldSeparatorAtStart) {
400        super.setFieldSeparatorAtStart(fieldSeparatorAtStart);
401    }
402
403    /**
404     * Sets the text to output when {@code null} found.
405     *
406     * <p>{@code null} is accepted, but will be converted
407     * to an empty String.</p>
408     *
409     * @param nullText  the new text to output when {@code null} found
410     */
411    @Override
412    public void setNullText(final String nullText) {
413        super.setNullText(nullText);
414    }
415
416    /**
417     * Sets the end text to output when a {@link Collection},
418     * {@link Map} or {@link Array} size is output.
419     *
420     * <p>This is output after the size value.</p>
421     *
422     * <p>{@code null} is accepted, but will be converted
423     * to an empty String.</p>
424     *
425     * @param sizeEndText  the new end of size text
426     */
427    @Override
428    public void setSizeEndText(final String sizeEndText) {
429        super.setSizeEndText(sizeEndText);
430    }
431
432    /**
433     * Sets the start text to output when a {@link Collection},
434     * {@link Map} or {@link Array} size is output.
435     *
436     * <p>This is output before the size value.</p>
437     *
438     * <p>{@code null} is accepted, but will be converted to
439     * an empty String.</p>
440     *
441     * @param sizeStartText  the new start of size text
442     */
443    @Override
444    public void setSizeStartText(final String sizeStartText) {
445        super.setSizeStartText(sizeStartText);
446    }
447
448    /**
449     * Sets the end text to output when an {@link Object} is
450     * output in summary mode.
451     *
452     * <p>This is output after the size value.</p>
453     *
454     * <p>{@code null} is accepted, but will be converted to
455     * an empty String.</p>
456     *
457     * @param summaryObjectEndText  the new end of summary text
458     */
459    @Override
460    public void setSummaryObjectEndText(final String summaryObjectEndText) {
461        super.setSummaryObjectEndText(summaryObjectEndText);
462    }
463
464    /**
465     * Sets the start text to output when an {@link Object} is
466     * output in summary mode.
467     *
468     * <p>This is output before the size value.</p>
469     *
470     * <p>{@code null} is accepted, but will be converted to
471     * an empty String.</p>
472     *
473     * @param summaryObjectStartText  the new start of summary text
474     */
475    @Override
476    public void setSummaryObjectStartText(final String summaryObjectStartText) {
477        super.setSummaryObjectStartText(summaryObjectStartText);
478    }
479
480    /**
481     * Sets whether to use the class name.
482     *
483     * @param useClassName  the new useClassName flag
484     */
485    @Override
486    public void setUseClassName(final boolean useClassName) {
487        super.setUseClassName(useClassName);
488    }
489
490    /**
491     * Sets whether to use the field names passed in.
492     *
493     * @param useFieldNames  the new useFieldNames flag
494     */
495    @Override
496    public void setUseFieldNames(final boolean useFieldNames) {
497        super.setUseFieldNames(useFieldNames);
498    }
499
500    /**
501     * Sets whether to use the identity hash code.
502     *
503     * @param useIdentityHashCode  the new useIdentityHashCode flag
504     */
505    @Override
506    public void setUseIdentityHashCode(final boolean useIdentityHashCode) {
507        super.setUseIdentityHashCode(useIdentityHashCode);
508    }
509
510    /**
511     * Sets whether to output short or long class names.
512     *
513     * @param useShortClassName  the new useShortClassName flag
514     * @since 2.0
515     */
516    @Override
517    public void setUseShortClassName(final boolean useShortClassName) {
518        super.setUseShortClassName(useShortClassName);
519    }
520
521}