package songbook.chordpro; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; import java.util.stream.Stream.Builder; /** * Created by laurent on 14/05/2014. */ public class Song { static public class PositionedData<T> { public T data; public int position; public PositionedData(T data, int position) { this.data = data; this.position = position; } } public List<PositionedData<Directive>> directives = new ArrayList<>(); public List<PositionedData<Chord>> chords = new ArrayList<>(); public String lyrics; public final String id; public Song(String id) { this.id = id; } public String findTitle() { for (PositionedData<Directive> directive : directives) { if ( "title".equals(directive.data.name.toLowerCase()) ) { return directive.data.value; } } return null; } public Stream<String> findAuthors() { final Builder<String> authors = Stream.builder(); for (PositionedData<Directive> directive : directives) { if ( "author".equals(directive.data.name.toLowerCase()) ) { authors.add(directive.data.value); } } return authors.build(); } }