@Override
  public void setSettings() {
    ThreadPoolConfig threadPool =
        config.getProject().getExporter().getSystem().getThreadPool().getDefaultPool();
    GmlIdLookupServerConfig geometry =
        config.getProject().getExporter().getSystem().getGmlIdLookupServer().getGeometry();
    GmlIdLookupServerConfig feature =
        config.getProject().getExporter().getSystem().getGmlIdLookupServer().getFeature();

    int minThreads = ((Number) expResMinThreadsText.getValue()).intValue();
    int maxThreads = ((Number) expResMaxThreadsText.getValue()).intValue();

    if (minThreads > maxThreads) {
      minThreads = maxThreads;
      expResMinThreadsText.setValue(minThreads);
    }

    threadPool.setMinThreads(minThreads);
    threadPool.setMaxThreads(maxThreads);

    geometry.setCacheSize(((Number) expResGeomCacheText.getValue()).intValue());
    feature.setCacheSize(((Number) expResFeatCacheText.getValue()).intValue());
    geometry.setPageFactor(((Number) expResGeomDrainText.getValue()).floatValue() / 100);
    feature.setPageFactor(((Number) expResFeatDrainText.getValue()).floatValue() / 100);
    geometry.setPartitions(((Number) expResGeomPartText.getValue()).intValue());
    feature.setPartitions(((Number) expResFeatPartText.getValue()).intValue());
  }
  @Override
  public boolean isModified() {
    ThreadPoolConfig threadPool =
        config.getProject().getExporter().getSystem().getThreadPool().getDefaultPool();
    GmlIdLookupServerConfig geometry =
        config.getProject().getExporter().getSystem().getGmlIdLookupServer().getGeometry();
    GmlIdLookupServerConfig feature =
        config.getProject().getExporter().getSystem().getGmlIdLookupServer().getFeature();

    try {
      expResMinThreadsText.commitEdit();
    } catch (ParseException e) {
    }
    try {
      expResMaxThreadsText.commitEdit();
    } catch (ParseException e) {
    }
    try {
      expResGeomCacheText.commitEdit();
    } catch (ParseException e) {
    }
    try {
      expResGeomDrainText.commitEdit();
    } catch (ParseException e) {
    }
    try {
      expResGeomPartText.commitEdit();
    } catch (ParseException e) {
    }
    try {
      expResFeatCacheText.commitEdit();
    } catch (ParseException e) {
    }
    try {
      expResFeatDrainText.commitEdit();
    } catch (ParseException e) {
    }
    try {
      expResFeatPartText.commitEdit();
    } catch (ParseException e) {
    }

    if (((Number) expResMinThreadsText.getValue()).intValue() != threadPool.getMinThreads())
      return true;
    if (((Number) expResMaxThreadsText.getValue()).intValue() != threadPool.getMaxThreads())
      return true;
    if (((Number) expResGeomCacheText.getValue()).intValue() != geometry.getCacheSize())
      return true;
    if (((Number) expResGeomDrainText.getValue()).intValue()
        != (int) (geometry.getPageFactor() * 100)) return true;
    if (((Number) expResGeomPartText.getValue()).intValue() != geometry.getPartitions())
      return true;
    if (((Number) expResFeatCacheText.getValue()).intValue() != feature.getCacheSize()) return true;
    if (((Number) expResFeatDrainText.getValue()).intValue()
        != (int) (feature.getPageFactor() * 100)) return true;
    if (((Number) expResFeatPartText.getValue()).intValue() != feature.getPartitions()) return true;

    return false;
  }
  @Override
  public void loadSettings() {
    ThreadPoolConfig threadPool =
        config.getProject().getExporter().getSystem().getThreadPool().getDefaultPool();
    GmlIdLookupServerConfig geometry =
        config.getProject().getExporter().getSystem().getGmlIdLookupServer().getGeometry();
    GmlIdLookupServerConfig feature =
        config.getProject().getExporter().getSystem().getGmlIdLookupServer().getFeature();

    expResMinThreadsText.setValue(threadPool.getMinThreads());
    expResMaxThreadsText.setValue(threadPool.getMaxThreads());
    expResGeomCacheText.setValue(geometry.getCacheSize());
    expResFeatCacheText.setValue(feature.getCacheSize());
    expResGeomDrainText.setValue((int) (geometry.getPageFactor() * 100));
    expResFeatDrainText.setValue((int) (feature.getPageFactor() * 100));
    expResGeomPartText.setValue(geometry.getPartitions());
    expResFeatPartText.setValue(feature.getPartitions());
  }