/*
* MediaContainer.java
*
* Version 1.0 Nov 16, 2008
*
* Copyright notice
*
* Brief description
*
* (c) 2008 by dbreuer
*/
package de.fhkoeln.cosima.media;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* This class implements the Composite part within the Composite-Pattern.
*
* @author dbreuer
* @version 1.0 Nov 16, 2008
*
*/
public class MediaContainer extends MediaComponent {
private static final long serialVersionUID = -2032949448649491908L;
private Map<String, MediaComponent> mediaElements;
public MediaContainer() {
super();
setMediaElements(new HashMap<String, MediaComponent>());
}
/**
* Constructor to set the metadata object on creation.
*
* @param metadata The metadata to set.
*/
public MediaContainer(List<Metadata> metadatas) {
super(metadatas);
setMediaElements(new HashMap<String, MediaComponent>());
}
/**
* @return The number of elements within this container.
*/
public int size() {
return this.getMediaElements().size();
}
/**
* @param media
* The Media Object which should be added to the collection
* of containing elements.
*/
public void addMedia(MediaComponent media) {
this.getMediaElements().put(media.getName(), media);
}
/**
* @param name
* The name of the Media Object which should be returned
* from the Collection of containing elements.
* @return The Media Object with the given name
*/
public MediaComponent getMedia(String name) {
return getMediaElements().get(name);
}
/**
* @return A Set of all the names of the containing elements.
*/
public Set<String> elements() {
return getMediaElements().keySet();
}
private void setMediaElements(Map<String, MediaComponent> mediaElements) {
this.mediaElements = mediaElements;
}
private Map<String, MediaComponent> getMediaElements() {
return mediaElements;
}
@Override
public Object getPlayableData() {
// TODO Auto-generated method stub
return null;
}
}