package org.herac.tuxguitar.io.base; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.herac.tuxguitar.io.tg.TGStream; public class TGFileFormatManager { public static final String DEFAULT_EXTENSION = TGStream.TG_FORMAT_EXTENSION; private static TGFileFormatManager instance; private TGSongLoader loader; private List inputStreams; private TGFileFormatManager(){ this.loader = new TGSongLoader(); this.inputStreams = new ArrayList(); this.addDefatultStreams(); } public static TGFileFormatManager instance(){ if(instance == null){ instance = new TGFileFormatManager(); } return instance; } public TGSongLoader getLoader(){ return this.loader; } public void addInputStream(TGInputStreamBase stream){ this.inputStreams.add(stream); } public void removeInputStream(TGInputStreamBase stream){ this.inputStreams.remove(stream); } public Iterator getInputStreams(){ return this.inputStreams.iterator(); } public List getInputFormats(){ List formats = new ArrayList(); Iterator it = getInputStreams(); while(it.hasNext()){ TGInputStreamBase stream = (TGInputStreamBase)it.next(); TGFileFormat format = stream.getFileFormat(); if(!existsFormat(format, formats)){ formats.add(format); } } return formats; } private boolean existsFormat(TGFileFormat format,List formats){ Iterator it = formats.iterator(); while(it.hasNext()){ TGFileFormat comparator = (TGFileFormat)it.next(); if(comparator.getName().equals(format.getName()) || comparator.getSupportedFormats().equals(format.getSupportedFormats())){ return true; } } return false; } private void addDefatultStreams(){ this.addInputStream(new org.herac.tuxguitar.io.tg.TGInputStream()); this.addInputStream(new org.herac.tuxguitar.io.tg11.TGInputStream()); this.addInputStream(new org.herac.tuxguitar.io.tg10.TGInputStream()); } }