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

org.unidal.helper.Joiners Maven / Gradle / Ivy

The newest version!
package org.unidal.helper;

import java.util.Arrays;
import java.util.Collection;

public class Joiners {
   public static StringJoiner by(final char delimiter) {
      return new StringJoiner() {
         @Override
         protected void appendDelimiter(StringBuilder sb) {
            sb.append(delimiter);
         }
      };
   }

   public static StringJoiner by(final String delimiter) {
      return new StringJoiner() {
         @Override
         protected void appendDelimiter(StringBuilder sb) {
            sb.append(delimiter);
         }
      };
   }

   public static interface IBuilder {
      public String asString(T item);
   }

   public static abstract class StringJoiner {
      private boolean m_prefixDelimiter;

      protected abstract void appendDelimiter(StringBuilder sb);

      public String join(Collection list) {
         return this. join(list, null);
      }

      public  String join(Collection list, IBuilder builder) {
         if (list == null) {
            return null;
         }

         StringBuilder sb = new StringBuilder();

         join(sb, list, builder);

         return sb.toString();
      }

      public String join(String... array) {
         return join(Arrays.asList(array), null);
      }

      public  String join(IBuilder builder, T... array) {
         return join(Arrays.asList(array), builder);
      }

      public  void join(StringBuilder sb, Collection list, IBuilder builder) {
         boolean first = true;

         if (list != null) {
            for (T item : list) {
               if (first) {
                  first = false;

                  if (m_prefixDelimiter) {
                     appendDelimiter(sb);
                  }
               } else {
                  appendDelimiter(sb);
               }

               if (builder == null) {
                  sb.append(item);
               } else {
                  sb.append(builder.asString(item));
               }
            }
         }
      }

      public StringJoiner prefixDelimiter() {
         m_prefixDelimiter = true;
         return this;
      }
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy