package org.herac.tuxguitar.util.properties;
import java.util.HashMap;
import java.util.Map;
public class TGPropertiesManager {
private static TGPropertiesManager instance;
private TGPropertiesFactory propertiesFactory;
private Map propertiesReaders;
private Map propertiesWriters;
private TGPropertiesManager(){
this.propertiesFactory = null;
this.propertiesReaders = new HashMap();
this.propertiesWriters = new HashMap();
}
public static TGPropertiesManager getInstance(){
synchronized (TGPropertiesManager.class) {
if( instance == null ){
instance = new TGPropertiesManager();
}
return instance;
}
}
public TGProperties createProperties() throws TGPropertiesException{
if( this.propertiesFactory != null ){
return this.propertiesFactory.createProperties();
}
return null;
}
public void readProperties(TGProperties properties, String resource, String module){
if( this.propertiesReaders.containsKey(resource) ){
TGPropertiesReader tgPropertiesReader = (TGPropertiesReader)this.propertiesReaders.get(resource);
tgPropertiesReader.readProperties(properties, module);
}
}
public void writeProperties(TGProperties properties, String resource, String module){
if( this.propertiesWriters.containsKey(resource) ){
TGPropertiesWriter tgPropertiesWriter = (TGPropertiesWriter)this.propertiesWriters.get(resource);
tgPropertiesWriter.writeProperties(properties, module);
}
}
public TGPropertiesFactory getPropertiesFactory() {
return propertiesFactory;
}
public void setPropertiesFactory(TGPropertiesFactory propertiesFactory) {
this.propertiesFactory = propertiesFactory;
}
public void addPropertiesReader(String resource, TGPropertiesReader propertiesReader){
if(!this.propertiesReaders.containsKey(resource) ){
this.propertiesReaders.put(resource, propertiesReader);
}
}
public void removePropertiesReader(String resource){
if( this.propertiesReaders.containsKey(resource) ){
this.propertiesReaders.remove(resource);
}
}
public void addPropertiesWriter(String resource, TGPropertiesWriter propertiesWriter){
if(!this.propertiesWriters.containsKey(resource) ){
this.propertiesWriters.put(resource, propertiesWriter);
}
}
public void removePropertiesWriter(String resource){
if( this.propertiesWriters.containsKey(resource) ){
this.propertiesWriters.remove(resource);
}
}
}