public class ConfigurationServerModule extends Module implements ConfigurationService {
  ConfigurationServiceImpl service = ConfigurationServiceImpl.ON_DATABASE;
  ConfigurationFacade facade = service.getFacade();

  public ConfigurationServerModule() {
    setName("main");
  }

  public ConfigurationServerModule(ConfigurationServiceImpl service) {
    setName("main");
    this.service = service;
  }

  @Override
  public DescriptionResult registerSubsystemDescription(SubsystemDescription newDescription)
      throws RemoteException {
    return service.registerSubsystemDescription(newDescription);
  }

  @Override
  public DescriptionResult deprecateSubsystemDescription(String subsystemName, String tag)
      throws RemoteException {
    return service.deprecateSubsystemDescription(subsystemName, tag);
  }

  @Override
  public SubsystemDescription getActiveSubsystemDescription(String name, String tag)
      throws RemoteException {
    return service.getActiveSubsystemDescription(name, tag);
  }

  @Override
  public ProfileResult registerConfigProfile(ConfigProfile newProfile) throws RemoteException {
    return service.registerConfigProfile(newProfile);
  }

  @Override
  public ProfileResult registerConfiguration(
      String subsystemName,
      String categoryName,
      String configurationName,
      String tag,
      String user,
      int level)
      throws RemoteException {
    return service.registerConfiguration(
        subsystemName, categoryName, configurationName, tag, user, level);
  }

  @Override
  public ProfileResult deprecateConfigProfile(String subsystemName, String name, String tag)
      throws RemoteException {
    return service.deprecateConfigProfile(subsystemName, name, tag);
  }

  @Override
  public ConfigProfile getActiveConfigProfile(String subsystemName, String name, String tag)
      throws RemoteException {
    return service.getActiveConfigProfile(subsystemName, name, tag);
  }

  @Override
  public ParameterConfiguration modifyParmConf(ParameterConfiguration engineeringModeParm)
      throws RemoteException {
    return service.modifyParmConf(engineeringModeParm);
  }

  @Override
  public ConfigProfile getConfigRunningAt(String subsystemName, long date) throws RemoteException {
    return service.getConfigRunningAt(subsystemName, date);
  }

  @Override
  public String getActiveValueAt(String subsystemName, String parameterPath, long date)
      throws RemoteException {
    return service.getActiveValueAt(subsystemName, parameterPath, date);
  }

  @Override
  public ConfigProfile getConfigValidAt(String subsystemName, String name, String tag, long date)
      throws RemoteException {
    return service.getConfigValidAt(subsystemName, name, tag, date);
  }

  @Override
  public String getValueValidAt(
      String subsystemName, String profileName, String profileTag, String parameterPath, long date)
      throws RemoteException {
    return service.getValueValidAt(subsystemName, profileName, profileTag, parameterPath, date);
  }

  @Override
  public ConfigProfile getPrevious(ConfigProfile current) throws RemoteException {
    return service.getPrevious(current);
  }

  @Override
  public ConfigProfile getNext(ConfigProfile current) throws RemoteException {
    return service.getNext(current);
  }

  @Override
  public SubsystemDescription getPrevious(SubsystemDescription current) throws RemoteException {
    return service.getPrevious(current);
  }

  @Override
  public void createPreparedConfiguration(
      String subsystemName, String configName, String tag, String user) throws RemoteException {
    service.createPreparedConfiguration(subsystemName, configName, tag, user);
  }

  @Override
  public void registerMachineConfiguration(MachineConfiguration machineConfiguration)
      throws RemoteException {
    service.registerMachineConfiguration(machineConfiguration);
  }

  @Override
  public MachineConfiguration getMachineConfiguration(String macAddress) throws RemoteException {
    return service.getMachineConfiguration(macAddress);
  }

  @Override
  public List<?> simpleHQLRequest(String hqlString) throws RemoteException {
    return service.simpleHQLRequest(hqlString);
  }

  // TODO : register run events by listening to Status bus!

}