001        package com.croftsoft.core.util.seq;
002    
003        import java.util.LinkedList;
004        import java.util.List;
005    
006        /***********************************************************************
007        * Example implementation of Seq as an accessor interface.
008        * 
009        * For a description, please see the online tutorial
010        * <a target="_blank"
011        *   href="https://www.croftsoft.com/library/tutorials/seq">
012        * Interface Seq</a>.
013        * 
014        * @version
015        *   $Id: SeqExample.java,v 1.5 2008/04/19 21:27:13 croft Exp $
016        * @since
017        *   2007-04-30
018        * @author
019        *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
020        ***********************************************************************/
021    
022        public final class  SeqExample
023          implements Seq<CharSequence>
024        ////////////////////////////////////////////////////////////////////////
025        ////////////////////////////////////////////////////////////////////////
026        {
027          
028        private final List<StringBuilder>  stringBuilderList;
029          
030        ////////////////////////////////////////////////////////////////////////
031        // static methods
032        ////////////////////////////////////////////////////////////////////////
033        
034        public static void  main ( final String [ ]  args )
035        ////////////////////////////////////////////////////////////////////////
036        {
037          // Create an implementation and mutate
038          
039          final SeqExample  seqExample = new SeqExample ( args );
040          
041          seqExample.append ( ".java" );
042          
043          // Create a read-only accessor interface reference for viewing
044          
045          final Seq<CharSequence>  filenameSeq = seqExample;
046          
047          final int  size = filenameSeq.size ( );
048          
049          for ( int  index = 0; index < size; index++ )
050          {
051            final CharSequence  charSequence = filenameSeq.get ( index );
052            
053            System.out.println ( charSequence );
054          }
055        }
056        
057        ////////////////////////////////////////////////////////////////////////
058        // constructor methods
059        ////////////////////////////////////////////////////////////////////////
060        
061        public  SeqExample ( final CharSequence [ ]  charSequenceArray )
062        ////////////////////////////////////////////////////////////////////////
063        {
064          stringBuilderList = new LinkedList<StringBuilder> ( );
065          
066          for ( final CharSequence  charSequence : charSequenceArray )
067          {
068            stringBuilderList.add ( new StringBuilder ( charSequence ) );
069          }
070        }
071        
072        ////////////////////////////////////////////////////////////////////////
073        // accessor interface methods
074        ////////////////////////////////////////////////////////////////////////
075        
076        public int  size ( )
077        ////////////////////////////////////////////////////////////////////////
078        {
079          return stringBuilderList.size ( );
080        }
081        
082        public CharSequence  get ( final int  index )
083        ////////////////////////////////////////////////////////////////////////
084        {
085          return stringBuilderList.get ( index );
086        }
087    
088        ////////////////////////////////////////////////////////////////////////
089        // mutator methods
090        ////////////////////////////////////////////////////////////////////////
091        
092        public void  append ( final CharSequence  charSequence )
093        ////////////////////////////////////////////////////////////////////////
094        {
095          for ( final StringBuilder  stringBuilder : stringBuilderList )
096          {
097            stringBuilder.append ( charSequence );
098          }
099        }
100        
101        ////////////////////////////////////////////////////////////////////////
102        ////////////////////////////////////////////////////////////////////////
103        }