All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pamirs.pradar.common.ToStringBuilder Maven / Gradle / Ivy

There is a newer version: 1.0.2
Show newest version
package com.pamirs.pradar.common;


import java.util.Collection;
import java.util.Map;

public class ToStringBuilder implements Builder {

    /**
     * The default style of output to use, not null.
     */
    private static volatile ToStringStyle defaultStyle = ToStringStyle.DEFAULT_STYLE;

    //----------------------------------------------------------------------------

    /**
     * 

Gets the default ToStringStyle to use.

This method gets a * singleton default value, typically for the whole JVM. Changing this default should generally * only be done during application startup. It is recommended to pass a * ToStringStyle to the constructor instead of using this global default.

*

This method can be used from multiple threads. Internally, a volatile * variable is used to provide the guarantee that the latest value set using {@link * #setDefaultStyle} is the value returned. It is strongly recommended that the default style is * only changed during application startup.

One reason for changing the default could * be to have a verbose style during development and a compact style in production.

* * @return the default ToStringStyle, never null */ public static ToStringStyle getDefaultStyle() { return defaultStyle; } /** *

Sets the default ToStringStyle to use.

This method sets a * singleton default value, typically for the whole JVM. Changing this default should generally * only be done during application startup. It is recommended to pass a * ToStringStyle to the constructor instead of changing this global default.

*

This method is not intended for use from multiple threads. Internally, a * volatile variable is used to provide the guarantee that the latest value set is * the value returned from {@link #getDefaultStyle}.

* * @param style the default ToStringStyle * @throws IllegalArgumentException if the style is null */ public static void setDefaultStyle(final ToStringStyle style) { if (style == null) { throw new IllegalArgumentException("The style must not be null"); } defaultStyle = style; } //---------------------------------------------------------------------------- /** *

Uses ReflectionToStringBuilder to generate a toString for the * specified object.

* * @param object the Object to be output * @return the String result * @see ReflectionToStringBuilder#toString(Object) */ public static String reflectionToString(final Object object) { return ReflectionToStringBuilder.toString(object); } /** *

Uses ReflectionToStringBuilder to generate a toString for the * specified object.

* * @param object the Object to be output * @param style the style of the toString to create, may be null * @return the String result */ public static String reflectionToString(final Object object, final ToStringStyle style) { return ReflectionToStringBuilder.toString(object, style); } /** *

Uses ReflectionToStringBuilder to generate a toString for the * specified object.

* * @param object the Object to be output * @param style the style of the toString to create, may be * null * @param outputTransients whether to include transient fields * @return the String result * @see ReflectionToStringBuilder#toString(Object, ToStringStyle, boolean) */ public static String reflectionToString(final Object object, final ToStringStyle style, final boolean outputTransients) { return ReflectionToStringBuilder.toString(object, style, outputTransients, false, null); } /** *

Uses ReflectionToStringBuilder to generate a toString for the * specified object.

* * @param the type of the object * @param object the Object to be output * @param style the style of the toString to create, may be * null * @param outputTransients whether to include transient fields * @param reflectUpToClass the superclass to reflect up to (inclusive), may be * null * @return the String result * @see ReflectionToStringBuilder#toString(Object, ToStringStyle, boolean, boolean, Class) * @since 2.0 */ public static String reflectionToString( final T object, final ToStringStyle style, final boolean outputTransients, final Class reflectUpToClass) { return ReflectionToStringBuilder.toString(object, style, outputTransients, false, reflectUpToClass); } //---------------------------------------------------------------------------- /** * Current toString buffer, not null. */ private final StringBuffer buffer; /** * The object being output, may be null. */ private final Object object; /** * The style of output to use, not null. */ private final ToStringStyle style; /** *

Constructs a builder for the specified object using the default output style.

*

This default style is obtained from {@link #getDefaultStyle()}.

* * @param object the Object to build a toString for, not recommended to be null */ public ToStringBuilder(final Object object) { this(object, null, null); } /** *

Constructs a builder for the specified object using the a defined output style.

*

If the style is null, the default style is used.

* * @param object the Object to build a toString for, not recommended to be null * @param style the style of the toString to create, null uses the default style */ public ToStringBuilder(final Object object, final ToStringStyle style) { this(object, style, null); } /** *

Constructs a builder for the specified object.

If the style is * null, the default style is used.

If the buffer is null, * a new one is created.

* * @param object the Object to build a toString for, not recommended to be null * @param style the style of the toString to create, null uses the default style * @param buffer the StringBuffer to populate, may be null */ public ToStringBuilder(final Object object, ToStringStyle style, StringBuffer buffer) { if (style == null) { style = getDefaultStyle(); } if (buffer == null) { buffer = new StringBuffer(512); } this.buffer = buffer; this.style = style; this.object = object; style.appendStart(buffer, object); } //---------------------------------------------------------------------------- /** *

Append to the toString a boolean value.

* * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final boolean value) { style.append(buffer, null, value); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString a boolean array.

* * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final boolean[] array) { style.append(buffer, null, array, null); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString a byte value.

* * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final byte value) { style.append(buffer, null, value); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString a byte array.

* * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final byte[] array) { style.append(buffer, null, array, null); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString a char value.

* * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final char value) { style.append(buffer, null, value); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString a char array.

* * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final char[] array) { style.append(buffer, null, array, null); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString a double value.

* * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final double value) { style.append(buffer, null, value); return this; } /** *

Append to the toString a double value.

* * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final Collection value) { style.append(buffer, null, value, true); return this; } /** *

Append to the toString a double value.

* * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final Map value) { style.append(buffer, null, value, true); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString a double array.

* * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final double[] array) { style.append(buffer, null, array, null); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString a float value.

* * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final float value) { style.append(buffer, null, value); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString a float array.

* * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final float[] array) { style.append(buffer, null, array, null); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString an int value.

* * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final int value) { style.append(buffer, null, value); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString an int array.

* * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final int[] array) { style.append(buffer, null, array, null); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString a long value.

* * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final long value) { style.append(buffer, null, value); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString a long array.

* * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final long[] array) { style.append(buffer, null, array, null); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString an Object value.

* * @param obj the value to add to the toString * @return this */ public ToStringBuilder append(final Object obj) { style.append(buffer, null, obj, null); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString an Object array.

* * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final Object[] array) { style.append(buffer, null, array, null); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString a short value.

* * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final short value) { style.append(buffer, null, value); return this; } //---------------------------------------------------------------------------- /** *

Append to the toString a short array.

* * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final short[] array) { style.append(buffer, null, array, null); return this; } /** *

Append to the toString a boolean value.

* * @param fieldName the field name * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final boolean value) { style.append(buffer, fieldName, value); return this; } /** *

Append to the toString a boolean array.

* * @param fieldName the field name * @param array the array to add to the hashCode * @return this */ public ToStringBuilder append(final String fieldName, final boolean[] array) { style.append(buffer, fieldName, array, null); return this; } /** *

Append to the toString a boolean array.

A boolean * parameter controls the level of detail to show. Setting true will output the * array in full. Setting false will output a summary, typically the size of the * array.

* * @param fieldName the field name * @param array the array to add to the toString * @param fullDetail true for detail, false for summary info * @return this */ public ToStringBuilder append(final String fieldName, final boolean[] array, final boolean fullDetail) { style.append(buffer, fieldName, array, Boolean.valueOf(fullDetail)); return this; } /** *

Append to the toString an byte value.

* * @param fieldName the field name * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final byte value) { style.append(buffer, fieldName, value); return this; } /** *

Append to the toString a byte array.

* * @param fieldName the field name * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final byte[] array) { style.append(buffer, fieldName, array, null); return this; } /** *

Append to the toString a byte array.

A boolean * parameter controls the level of detail to show. Setting true will output the * array in full. Setting false will output a summary, typically the size of the * array. * * @param fieldName the field name * @param array the array to add to the toString * @param fullDetail true for detail, false for summary info * @return this */ public ToStringBuilder append(final String fieldName, final byte[] array, final boolean fullDetail) { style.append(buffer, fieldName, array, Boolean.valueOf(fullDetail)); return this; } /** *

Append to the toString a char value.

* * @param fieldName the field name * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final char value) { style.append(buffer, fieldName, value); return this; } /** *

Append to the toString a char array.

* * @param fieldName the field name * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final char[] array) { style.append(buffer, fieldName, array, null); return this; } /** *

Append to the toString a char array.

A boolean * parameter controls the level of detail to show. Setting true will output the * array in full. Setting false will output a summary, typically the size of the * array.

* * @param fieldName the field name * @param array the array to add to the toString * @param fullDetail true for detail, false for summary info * @return this */ public ToStringBuilder append(final String fieldName, final char[] array, final boolean fullDetail) { style.append(buffer, fieldName, array, Boolean.valueOf(fullDetail)); return this; } /** *

Append to the toString a double value.

* * @param fieldName the field name * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final double value) { style.append(buffer, fieldName, value); return this; } /** *

Append to the toString a double array.

* * @param fieldName the field name * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final double[] array) { style.append(buffer, fieldName, array, null); return this; } /** *

Append to the toString a double array.

A boolean * parameter controls the level of detail to show. Setting true will output the * array in full. Setting false will output a summary, typically the size of the * array.

* * @param fieldName the field name * @param array the array to add to the toString * @param fullDetail true for detail, false for summary info * @return this */ public ToStringBuilder append(final String fieldName, final double[] array, final boolean fullDetail) { style.append(buffer, fieldName, array, Boolean.valueOf(fullDetail)); return this; } /** *

Append to the toString an float value.

* * @param fieldName the field name * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final float value) { style.append(buffer, fieldName, value); return this; } /** *

Append to the toString a float array.

* * @param fieldName the field name * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final float[] array) { style.append(buffer, fieldName, array, null); return this; } /** *

Append to the toString a float array.

A boolean * parameter controls the level of detail to show. Setting true will output the * array in full. Setting false will output a summary, typically the size of the * array.

* * @param fieldName the field name * @param array the array to add to the toString * @param fullDetail true for detail, false for summary info * @return this */ public ToStringBuilder append(final String fieldName, final float[] array, final boolean fullDetail) { style.append(buffer, fieldName, array, Boolean.valueOf(fullDetail)); return this; } /** *

Append to the toString an int value.

* * @param fieldName the field name * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final int value) { style.append(buffer, fieldName, value); return this; } /** *

Append to the toString an int array.

* * @param fieldName the field name * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final int[] array) { style.append(buffer, fieldName, array, null); return this; } /** *

Append to the toString an int array.

A boolean * parameter controls the level of detail to show. Setting true will output the * array in full. Setting false will output a summary, typically the size of the * array.

* * @param fieldName the field name * @param array the array to add to the toString * @param fullDetail true for detail, false for summary info * @return this */ public ToStringBuilder append(final String fieldName, final int[] array, final boolean fullDetail) { style.append(buffer, fieldName, array, Boolean.valueOf(fullDetail)); return this; } /** *

Append to the toString a long value.

* * @param fieldName the field name * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final long value) { style.append(buffer, fieldName, value); return this; } /** *

Append to the toString a long array.

* * @param fieldName the field name * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final long[] array) { style.append(buffer, fieldName, array, null); return this; } /** *

Append to the toString a long array.

A boolean * parameter controls the level of detail to show. Setting true will output the * array in full. Setting false will output a summary, typically the size of the * array.

* * @param fieldName the field name * @param array the array to add to the toString * @param fullDetail true for detail, false for summary info * @return this */ public ToStringBuilder append(final String fieldName, final long[] array, final boolean fullDetail) { style.append(buffer, fieldName, array, Boolean.valueOf(fullDetail)); return this; } /** *

Append to the toString an Object value.

* * @param fieldName the field name * @param obj the value to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final Object obj) { style.append(buffer, fieldName, obj, null); return this; } /** *

Append to the toString an Object value.

* * @param fieldName the field name * @param obj the value to add to the toString * @param fullDetail true for detail, false for summary info * @return this */ public ToStringBuilder append(final String fieldName, final Object obj, final boolean fullDetail) { style.append(buffer, fieldName, obj, Boolean.valueOf(fullDetail)); return this; } /** *

Append to the toString an Object array.

* * @param fieldName the field name * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final Object[] array) { style.append(buffer, fieldName, array, null); return this; } /** *

Append to the toString an Object array.

A boolean * parameter controls the level of detail to show. Setting true will output the * array in full. Setting false will output a summary, typically the size of the * array.

* * @param fieldName the field name * @param array the array to add to the toString * @param fullDetail true for detail, false for summary info * @return this */ public ToStringBuilder append(final String fieldName, final Object[] array, final boolean fullDetail) { style.append(buffer, fieldName, array, Boolean.valueOf(fullDetail)); return this; } /** *

Append to the toString an short value.

* * @param fieldName the field name * @param value the value to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final short value) { style.append(buffer, fieldName, value); return this; } /** *

Append to the toString a short array.

* * @param fieldName the field name * @param array the array to add to the toString * @return this */ public ToStringBuilder append(final String fieldName, final short[] array) { style.append(buffer, fieldName, array, null); return this; } /** *

Append to the toString a short array.

A boolean * parameter controls the level of detail to show. Setting true will output the * array in full. Setting false will output a summary, typically the size of the * array. * * @param fieldName the field name * @param array the array to add to the toString * @param fullDetail true for detail, false for summary info * @return this */ public ToStringBuilder append(final String fieldName, final short[] array, final boolean fullDetail) { style.append(buffer, fieldName, array, Boolean.valueOf(fullDetail)); return this; } //---------------------------------------------------------------------------- /** *

Append the toString from the superclass.

This method assumes that * the superclass uses the same ToStringStyle as this one.

If * superToString is null, no change is made.

* * @param superToString the result of super.toString() * @return this * @since 2.0 */ public ToStringBuilder appendSuper(final String superToString) { if (superToString != null) { style.appendSuper(buffer, superToString); } return this; } /** *

Append the toString from another object.

This method is useful * where a class delegates most of the implementation of its properties to another class. You * can then call toString() on the other class and pass the result into this * method.

*

     *   private AnotherObject delegate;
     *   private String fieldInThisClass;
     *
     *   public String toString() {
     *     return new ToStringBuilder(this).
     *       appendToString(delegate.toString()).
     *       append(fieldInThisClass).
     *       toString();
     *   }
*

This method assumes that the other object uses the same ToStringStyle as * this one.

If the toString is null, no change is * made.

* * @param toString the result of toString() on another object * @return this * @since 2.0 */ public ToStringBuilder appendToString(final String toString) { if (toString != null) { style.appendToString(buffer, toString); } return this; } /** *

Returns the Object being output.

* * @return The object being output. * @since 2.0 */ public Object getObject() { return object; } /** *

Gets the StringBuffer being populated.

* * @return the StringBuffer being populated */ public StringBuffer getStringBuffer() { return buffer; } //---------------------------------------------------------------------------- /** *

Gets the ToStringStyle being used.

* * @return the ToStringStyle being used * @since 2.0 */ public ToStringStyle getStyle() { return style; } /** *

Returns the built toString.

This method appends the end of data * indicator, and can only be called once. Use {@link #getStringBuffer} to get the current * string state.

If the object is null, return the style's * nullText

* * @return the String toString */ @Override public String toString() { if (this.getObject() == null) { this.getStringBuffer().append(this.getStyle().getNullText()); } else { style.appendEnd(this.getStringBuffer(), this.getObject()); } return this.getStringBuffer().toString(); } /** * Returns the String that was build as an object representation. The default implementation * utilizes the {@link #toString()} implementation. * * @return the String toString * @see #toString() * @since 3.0 */ @Override public String build() { return toString(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy