package org.androiddaisyreader.model;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Part implements Navigable {
private List<Snippet> snippets = new ArrayList<Snippet>();
private List<Part> parts = new ArrayList<Part>();
private List<Audio> audioElements = new ArrayList<Audio>();
private List<String> textElements = new ArrayList<String>();
private List<String> unhandledElements = new ArrayList<String>();
private Image image;
private String id;
private String timingMode;
private Part() {
}
public List<Audio> getAudioElements() {
return Collections.unmodifiableList(audioElements);
}
public String getId() {
return id;
}
public Image getImage() {
return image;
}
public List<Snippet> getSnippets() {
return Collections.unmodifiableList(snippets);
}
public boolean hasAudio() {
return !audioElements.isEmpty();
}
public boolean hasImage() {
return image != null;
}
public boolean hasSnippets() {
return !snippets.isEmpty();
}
/**
* Builder class to construct a Part object correctly.
*
* @author jharty
*/
public static class Builder {
private Part newInstance = new Part();
public Builder addAudio(Audio audioClip) {
newInstance.audioElements.add(audioClip);
return this;
}
public Builder addPart(Part part) {
newInstance.parts.add(part);
return this;
}
public Builder addSnippet(Snippet snippet) {
newInstance.snippets.add(snippet);
return this;
}
public Builder addUnhandledElement(String elementDetails) {
newInstance.unhandledElements.add(elementDetails);
return this;
}
public Builder setImage(Image image) {
newInstance.image = image;
return this;
}
public Part build() {
return newInstance;
}
public Builder setId(String id) {
newInstance.id = id;
return this;
}
public Builder setTimingMode(String mode) {
newInstance.timingMode = mode;
return this;
}
public Builder addTextElement(String location) {
newInstance.textElements.add(location);
return this;
}
}
public List<Navigable> getChildren() {
// TODO Auto-generated method stub
return null;
}
}