package org.jcodec.containers.mxf.model;
import java.util.Iterator;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* This class is part of JCodec ( www.jcodec.org ) This software is distributed
* under FreeBSD License
*
* MXF demuxer
*
* @author The JCodec project
*
*/
public class MXFUtil {
public static <T> T resolveRef(List<MXFMetadata> metadata, UL refs, Class<T> class1) {
List<T> res = resolveRefs(metadata, new UL[] { refs }, class1);
return res.size() > 0 ? res.get(0) : null;
}
public static <T> List<T> resolveRefs(List<MXFMetadata> metadata, UL[] refs, Class<T> class1) {
List<MXFMetadata> copy = new ArrayList<MXFMetadata>(metadata);
for (Iterator<MXFMetadata> iterator = copy.iterator(); iterator.hasNext();) {
MXFMetadata next = iterator.next();
if (next.getUid() == null || !class1.isAssignableFrom(next.getClass()))
iterator.remove();
}
List result = new ArrayList();
for (int i = 0; i < refs.length; i++) {
for (MXFMetadata meta : copy) {
if (meta.getUid().equals(refs[i])) {
result.add(meta);
}
}
}
return result;
}
public static <T> T findMeta(Collection<MXFMetadata> metadata, Class<T> class1) {
for (MXFMetadata mxfMetadata : metadata) {
if (mxfMetadata.getClass().isAssignableFrom(class1))
return (T) mxfMetadata;
}
return null;
}
public static <T> List<T> findAllMeta(Collection<MXFMetadata> metadata, Class<T> class1) {
List result = new ArrayList();
for (MXFMetadata mxfMetadata : metadata) {
if (class1.isAssignableFrom(mxfMetadata.getClass()))
result.add((T) mxfMetadata);
}
return result;
}
}