/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under The MIT license. */ package com.ttProject.transcode; import java.util.HashMap; import java.util.Map; /** * 変換動作の主体となる部分の共通動作抜き出し * とりあえずこれが根幹 * @author taktod */ public abstract class TranscodeManager implements ITranscodeManager { /** 例外捕捉 */ private IExceptionListener expListener = null; /** 保持trackManagerリスト */ private Map<Integer, ITrackManager> trackManagers = new HashMap<Integer, ITrackManager>(); /** managerのID候補 */ private int nextId = 1; /** * 例外捕捉 */ @Override public void setExceptionListener(IExceptionListener listener) { expListener = listener; } /** * 例外発行 * @param e */ public void reportException(Exception e) { if(expListener != null) { expListener.exceptionCaught(e); } else { throw new RuntimeException(e); } } /** * trackManagerを生成 * @return */ protected abstract ITrackManager makeTrackManager(int newId); /** * trackManagerを取得します */ @Override public ITrackManager getTrackManager(int id) { if(!trackManagers.containsKey(id)) { return null; } return trackManagers.get(id); } /** * 新しいtrackManagerを生成します */ @Override public ITrackManager addNewTrackManager() throws Exception { nextId ++; ITrackManager trackManager = makeTrackManager(nextId); if(trackManager == null) { throw new Exception("trackを追加しようとしたら、エラーが発生しました。"); } trackManagers.put(trackManager.getId(), trackManager); return trackManager; } /** * マネージャーを参照します * @return */ protected Map<Integer, ITrackManager> getTrackManagers() { return trackManagers; } }