001    /*
002     *  www.ti.bfh.ch
003     *
004     *  Copyright 2007, Berne University of Applied Sciences, 
005     *  School of Engineering and Information Technology
006     *  and individual contributors as indicated by the @authors tag.
007     *
008     *  This is free software; you can redistribute it and/or modify it under the terms of the 
009     *  GNU Lesser General Public License as published by the Free Software Foundation; 
010     *  either version 3 of the License, or (at your option) any later version.
011     *
012     *  This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
013     *  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
014     *  See the GNU Lesser General Public License for more details.
015     *
016     *  You should have received a copy of the GNU Lesser General Public License along with this software; 
017     *  if not, see <http://www.gnu.org/licenses/>.
018     *
019     */
020    package ch.bfh.algo.sequence;
021    
022    
023    import java.util.Collection;
024    
025    import ch.bfh.algo.Position;
026    import ch.bfh.algo.core.sequence.GenericLinkedSequence;
027    
028    public class LinkedSequence<E> extends GenericLinkedSequence<E,LinkedPosition<E>>{
029    
030            private static class DefaultSequenceFactory<E> implements SequenceFactory<LinkedPosition<E>>{ 
031                    public LinkedPosition<E> createPosition(){ return new LinkedPosition<E>(); }
032                    public LinkedPosition<E> cast(Position<?> position){ return (LinkedPosition<E>)position; }    
033            }
034            
035            public LinkedSequence(){
036                    super(new DefaultSequenceFactory<E>());
037            }
038    
039            public LinkedSequence(SequenceFactory<LinkedPosition<E>> factory){
040                    super(factory);
041            }
042            
043            public LinkedSequence(Collection<? extends E> c){
044                    this();
045                    this.addAll(c);
046            }
047    
048    }