/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under The MIT license. */ package com.ttProject.media.flv.tag; import java.nio.ByteBuffer; import java.nio.channels.WritableByteChannel; import java.util.ArrayList; import java.util.List; import com.ttProject.media.flv.Tag; import com.ttProject.nio.channels.IReadChannel; /** * 複数のtagをまとめて管理するtag * @author taktod */ public class AggregateTag extends Tag { /** 集合タグの内部タグリスト */ private List<Tag> tagList = new ArrayList<Tag>(); /** * コンストラクタ */ public AggregateTag() { super(); } /** * 追加 * @param tag */ public void add(Tag tag) { tagList.add(tag); } /** * リストの応答(参照用) * @return */ public List<Tag> getList() { return new ArrayList<Tag>(tagList); } /** * 要素数の応答 */ public int size() { return tagList.size(); } /** * {@inheritDoc} */ @Override public void analyze(IReadChannel ch, boolean atBegin) throws Exception { throw new Exception("ファイルから解析するタグではないです。"); } /** * {@inheritDoc} */ @Override public void writeTag(WritableByteChannel target) throws Exception { for(Tag tag : tagList) { tag.writeTag(target); } } /** * {@inheritDoc} */ @Override public ByteBuffer getBuffer() { throw new RuntimeException("aggregateTagはgetBufferには対応しないことにします。"); } }