1
package org.herac.tuxguitar.io.base;
3
import java.util.ArrayList;
4
import java.util.Iterator;
7
import org.herac.tuxguitar.io.tg.TGInputStream;
8
import org.herac.tuxguitar.io.tg.TGOutputStream;
9
import org.herac.tuxguitar.io.tg.TGStream;
11
public class TGFileFormatManager {
13
public static final String DEFAULT_EXTENSION = TGStream.TG_FORMAT_EXTENSION;
15
private static TGFileFormatManager instance;
17
private TGSongLoader loader;
18
private TGSongWriter writer;
19
private List inputStreams;
20
private List outputStreams;
21
private List exporters;
22
private List importers;
24
private TGFileFormatManager(){
25
this.loader = new TGSongLoader();
26
this.writer = new TGSongWriter();
27
this.inputStreams = new ArrayList();
28
this.outputStreams = new ArrayList();
29
this.exporters = new ArrayList();
30
this.importers = new ArrayList();
31
this.addDefatultStreams();
34
public static TGFileFormatManager instance(){
36
instance = new TGFileFormatManager();
41
public TGSongLoader getLoader(){
45
public TGSongWriter getWriter(){
49
public void addInputStream(TGInputStreamBase stream){
50
this.inputStreams.add(stream);
53
public void removeInputStream(TGInputStreamBase stream){
54
this.inputStreams.remove(stream);
57
public void addOutputStream(TGOutputStreamBase stream){
58
this.outputStreams.add(stream);
61
public void removeOutputStream(TGOutputStreamBase stream){
62
this.outputStreams.remove(stream);
65
public void addImporter(TGSongImporter importer){
66
this.importers.add(importer);
69
public void removeImporter(TGSongImporter importer){
70
this.importers.remove(importer);
73
public void addExporter(TGSongExporter exporter){
74
this.exporters.add(exporter);
77
public void removeExporter(TGSongExporter exporter){
78
this.exporters.remove(exporter);
81
public Iterator getInputStreams(){
82
return this.inputStreams.iterator();
85
public Iterator getOutputStreams(){
86
return this.outputStreams.iterator();
89
public Iterator getImporters(){
90
return this.importers.iterator();
93
public Iterator getExporters(){
94
return this.exporters.iterator();
97
public List getInputFormats(){
98
List formats = new ArrayList();
99
Iterator it = getInputStreams();
101
TGInputStreamBase stream = (TGInputStreamBase)it.next();
102
TGFileFormat format = stream.getFileFormat();
103
if(!existsFormat(format, formats)){
110
public List getOutputFormats(){
111
List formats = new ArrayList();
112
Iterator it = getOutputStreams();
114
TGOutputStreamBase stream = (TGOutputStreamBase)it.next();
115
TGFileFormat format = stream.getFileFormat();
116
if(!existsFormat(format, formats)){
123
private boolean existsFormat(TGFileFormat format,List formats){
124
Iterator it = formats.iterator();
126
TGFileFormat comparator = (TGFileFormat)it.next();
127
if(comparator.getName().equals(format.getName()) || comparator.getSupportedFormats().equals(format.getSupportedFormats())){
134
private void addDefatultStreams(){
135
this.addInputStream(new TGInputStream());
136
this.addOutputStream(new TGOutputStream());