Package org.osm2world.viewer.model

Source Code of org.osm2world.viewer.model.Data

package org.osm2world.viewer.model;

import java.io.File;
import java.io.IOException;
import java.util.Observable;

import org.apache.commons.configuration.BaseConfiguration;
import org.apache.commons.configuration.Configuration;
import org.osm2world.core.ConversionFacade;
import org.osm2world.core.ConversionFacade.BoundingBoxSizeException;
import org.osm2world.core.ConversionFacade.ProgressListener;
import org.osm2world.core.ConversionFacade.Results;
import org.osm2world.core.map_elevation.creation.EleConstraintEnforcer;
import org.osm2world.core.map_elevation.creation.TerrainInterpolator;
import org.osm2world.core.util.functions.Factory;

public class Data extends Observable {
 
  private Configuration config = new BaseConfiguration();
  private File osmFile = null;
  private Results conversionResults = null;
 
  public Configuration getConfig() {
    return config;
  }

  public void setConfig(Configuration config) {
   
    this.config = config;
   
    this.setChanged();
    this.notifyObservers();
   
  }
 
  /**
   * @param interpolatorFactory
   * @param enforcerFactory
   *
   */
  public void loadOSMFile(File osmFile, boolean failOnLargeBBox,
      Factory<? extends TerrainInterpolator> interpolatorFactory,
      Factory<? extends EleConstraintEnforcer> enforcerFactory,
      ProgressListener listener)
          throws IOException, BoundingBoxSizeException {
   
    try {
     
      this.osmFile = osmFile;
     
      ConversionFacade converter = new ConversionFacade();
      converter.setTerrainEleInterpolatorFactory(interpolatorFactory);
      converter.setEleConstraintEnforcerFactory(enforcerFactory);
     
      converter.addProgressListener(listener);
     
      if (failOnLargeBBox) {
        config.addProperty("maxBoundingBoxDegrees", 1);
      }
     
      conversionResults = converter.createRepresentations(
          osmFile, null, config, null);
     
    } catch (IOException e) {
     
      osmFile = null;
      conversionResults = null;
     
      throw e;
     
    } catch (BoundingBoxSizeException e) {
     
      osmFile = null;
      conversionResults = null;
     
      throw e;
     
    } finally {
     
      config.clearProperty("maxBoundingBoxDegrees");
     
    }
   
    this.setChanged();
    this.notifyObservers();
   
  }
 
  public File getOsmFile() {
    return osmFile;
  }
 
  public Results getConversionResults() {
    return conversionResults;
  }
 
}
TOP

Related Classes of org.osm2world.viewer.model.Data

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.