class RunConfigurationDelegate {

  protected void updateLoadedJobs( String key, RunConfiguration runConfig ) {
    for ( JobMeta job : spoonSupplier.get().getLoadedJobs() ) {
      for ( int i = 0; i < job.nrJobEntries(); i++ ) {
        JobEntryInterface entry = job.getJobEntry( i ).getEntry();

        if ( entry instanceof JobEntryRunConfigurableInterface ) {
          JobEntryRunConfigurableInterface jet = (JobEntryRunConfigurableInterface) entry;
          if ( jet.getRunConfiguration() != null ) {
            if ( jet.getRunConfiguration().equals( key ) ) {
              try {
                ExtensionPointHandler.callExtensionPoint( job.getLogChannel(), KettleExtensionPoint.JobEntryTransSave.id,
                  new Object[] { job, runConfig.getName() } );
              } catch ( KettleException e ) {
                spoonSupplier.get().getLog().logBasic( "Unable to set run configuration in job " + job.getName() );
              }

              jet.setRunConfiguration( runConfig.getName() );
              if ( runConfig instanceof DefaultRunConfiguration ) {
                jet.setRemoteSlaveServerName( ( (DefaultRunConfiguration) runConfig ).getServer() );
                jet.setLoggingRemoteWork( ( (DefaultRunConfiguration) runConfig ).isLogRemoteExecutionLocally() );
              }
              jet.setChanged();
            }
          }
        }
      }
    }
  }

  public  RunConfigurationDelegate( RunConfigurationService configurationManager );

}