content: package edu.stanford.rsl.conrad.geometry.trajectories;
  
  import edu.stanford.rsl.conrad.io.ConfigFileParser;
  
  
  /**
   * Abstract class to create config file-based geometry sources. This class and all of it's subclasses should
   * not implement the default constructor as they should not be XML-Serializable.
   * @author akmaier
   *
   */
  public abstract class ConfigFileBasedTrajectory extends Trajectory implements ConfigFileParser {
  
  
  
  	/**
  	 * 
  	 */
  	private static final long serialVersionUID = -5999736125816034590L;
  
  	public ConfigFileBasedTrajectory(Trajectory model) {
  		super(model);
  	}
  
  	public static ConfigFileBasedTrajectory [] getGeometrySources(Trajectory model){
  		ConfigFileBasedTrajectory [] sources = {new ProjectionTableFileTrajectory(model), 
  				new SystemGeometryConfigFileTrajectory(model), new DennerleinProjectionTableFileTrajectory(model)};
  		return sources;
  	}
  
  	public static Trajectory openAsGeometrySource(String filename, Trajectory geometry){
  		System.out.println("Attempting to load: " + filename);
  		ConfigFileBasedTrajectory [] sources = getGeometrySources(geometry);
  		ConfigFileBasedTrajectory test = null;
  		for (int i = 0; i < sources.length; i++){
  			test = sources[i];
  			try {
  				test.readConfigFile(filename);
  				break;
  			} catch (Exception projectionTable){
  				projectionTable.printStackTrace();
  				System.out.println(projectionTable.getLocalizedMessage());
  				test = null;
  				//projectionTable.printStackTrace();
  			}
  		}
  		System.out.println("Loaded trajectory with " + test.numProjectionMatrices + " matrices");
  		return new Trajectory(test);
  	}
  
  }
  /*
   * Copyright (C) 2010-2014 Andreas Maier
   * CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
  */