package org.herac.tuxguitar.gm;
import java.util.Iterator;
import org.herac.tuxguitar.song.models.TGChannel;
import org.herac.tuxguitar.song.models.TGChannelParameter;
public class GMChannelRouterConfigurator {
private GMChannelRouter router;
public GMChannelRouterConfigurator(GMChannelRouter router){
this.router = router;
}
public void configureRouter(Iterator tgChannels){
this.router.resetRoutes();
while( tgChannels.hasNext() ){
TGChannel tgChannel = (TGChannel) tgChannels.next();
GMChannelRoute cmChannelRoute = new GMChannelRoute(tgChannel.getChannelId());
cmChannelRoute.setChannel1(getIntegerChannelParameter(tgChannel, GMChannelRoute.PARAMETER_GM_CHANNEL_1, GMChannelRoute.NULL_VALUE));
cmChannelRoute.setChannel2(getIntegerChannelParameter(tgChannel, GMChannelRoute.PARAMETER_GM_CHANNEL_2, GMChannelRoute.NULL_VALUE));
this.router.configureRoutes(cmChannelRoute, tgChannel.isPercussionChannel());
}
}
private int getIntegerChannelParameter( TGChannel tgChannel, String key , int nullValue){
TGChannelParameter tgChannelParameter = findChannelParameter(tgChannel, key);
if( tgChannelParameter != null && tgChannelParameter.getValue() != null ){
return Integer.parseInt( tgChannelParameter.getValue() );
}
return nullValue;
}
private TGChannelParameter findChannelParameter( TGChannel tgChannel, String key ){
Iterator it = tgChannel.getParameters();
while( it.hasNext() ){
TGChannelParameter parameter = (TGChannelParameter)it.next();
if( parameter.getKey().equals( key ) ){
return parameter;
}
}
return null;
}
}