@Override
  public void saveRepositories(String sid, GUIParameter[][] repos) throws ServerException {
    ServiceUtil.validateSession(sid);

    ContextProperties conf =
        (ContextProperties) Context.getInstance().getBean(ContextProperties.class);
    try {
      // First of all the folders
      for (GUIParameter f : repos[0]) {
        conf.setProperty("conf." + f.getName(), f.getValue());
      }
      // Now the storages
      for (GUIParameter f : repos[1]) {
        if (f == null || f.getValue().trim().isEmpty()) continue;
        conf.setProperty(f.getName().replaceAll("_", "."), f.getValue());
      }
      conf.write();
    } catch (IOException e) {
      log.error(e.getMessage(), e);
    }
  }
  @Override
  public void saveEmailSettings(String sid, GUIEmailSettings settings) throws ServerException {
    UserSession session = ServiceUtil.validateSession(sid);

    try {
      ContextProperties conf =
          (ContextProperties) Context.getInstance().getBean(ContextProperties.class);

      conf.setProperty(session.getTenantName() + ".smtp.host", settings.getSmtpServer());
      conf.setProperty(
          session.getTenantName() + ".smtp.port", Integer.toString(settings.getPort()));
      conf.setProperty(
          session.getTenantName() + ".smtp.username",
          !settings.getUsername().trim().isEmpty() ? settings.getUsername() : "");
      conf.setProperty(
          session.getTenantName() + ".smtp.password",
          !settings.getPwd().trim().isEmpty() ? settings.getPwd() : "");
      conf.setProperty(
          session.getTenantName() + ".smtp.connectionSecurity", settings.getConnSecurity());
      conf.setProperty(
          session.getTenantName() + ".smtp.authEncripted",
          settings.isSecureAuth() ? "true" : "false");
      conf.setProperty(session.getTenantName() + ".smtp.sender", settings.getSenderEmail());

      conf.write();

      EMailSender sender = (EMailSender) Context.getInstance().getBean(EMailSender.class);
      sender.setHost(conf.getProperty(Tenant.DEFAULT_NAME + ".smtp.host"));
      sender.setPort(Integer.parseInt(conf.getProperty(Tenant.DEFAULT_NAME + ".smtp.port")));
      sender.setUsername(conf.getProperty(Tenant.DEFAULT_NAME + ".smtp.username"));
      sender.setPassword(conf.getProperty(Tenant.DEFAULT_NAME + ".smtp.password"));
      sender.setSender(conf.getProperty(Tenant.DEFAULT_NAME + ".smtp.sender"));
      sender.setAuthEncripted(
          "true".equals(conf.getProperty(Tenant.DEFAULT_NAME + ".smtp.authEncripted"))
              ? true
              : false);
      sender.setConnectionSecurity(
          Integer.parseInt(conf.getProperty(Tenant.DEFAULT_NAME + ".smtp.connectionSecurity")));

      log.info("Email settings data written successfully.");
    } catch (Exception e) {
      log.error("Exception writing Email settings data: " + e.getMessage(), e);
    }
  }
  @Override
  public void saveSettings(String sid, GUIParameter[] settings) throws ServerException {
    ServiceUtil.validateSession(sid);

    try {
      ContextProperties conf =
          (ContextProperties) Context.getInstance().getBean(ContextProperties.class);
      for (int i = 0; i < settings.length; i++) {
        if (settings[i] == null || StringUtils.isEmpty(settings[i].getName())) continue;
        conf.setProperty(
            settings[i].getName(), settings[i].getValue() != null ? settings[i].getValue() : "");
      }

      conf.write();

      log.info("Parameters settings data written successfully.");
    } catch (Exception e) {
      log.error("Exception writing Parameters settings data: " + e.getMessage(), e);
    }
  }