001    package calhoun.analysis.crf.io;
002    
003    import java.util.Collection;
004    
005    import calhoun.util.Assert;
006    
007    /** an input sequence where the elements of the sequence are string characters. */
008    public class InputSequenceCharacter implements InputSequence<Character> {
009            String str;
010            
011            /** default constructor */
012            public InputSequenceCharacter() { }
013            
014            /** creates an input sequence using data from this string
015             * @param a string containing characters of the input sequence */
016            public InputSequenceCharacter(String a) {
017                    str = a;
018            }
019            
020            /** returns the input sequence as a string 
021             * @return a string of the characters */
022            public String getString() {
023                    return str;
024            }
025            
026            public Character getX(int ix) {
027                    return str.charAt(ix);
028            }
029    
030            public int length() {
031                    return str == null ? 0 : str.length();
032            }
033    
034            public InputSequence<?> getComponent(String name) {
035                    throw new UnsupportedOperationException();
036            }
037    
038            public Collection<String> listComponents() {
039                    throw new UnsupportedOperationException();
040            }
041    
042            public InputSequence<Character> subSequence(int start, int end) {
043                    Assert.a(start >= 1);
044                    Assert.a(end <= this.length());
045                    Assert.a(start <= end);
046                    
047                    InputSequenceCharacter S = new InputSequenceCharacter(str.substring(start-1,end));
048                    
049                    return S;
050            }
051            
052            @Override
053            public String toString() {
054                    return str.substring(0, Math.min(str.length(), 15));
055            }
056    }