private FgsRunner.Type computeType(){
  Object model=getDataModel();
  if (model == null && getSourceGraph() != null) {
    model=getSourceGraph();
  }
  if (model == null) {
    throw new RuntimeException("Data source is unspecified. You may need to double click all your data boxes, \n" + "then click Save, and then right click on them and select Propagate Downstream. \n" + "The issue is that we use a seed to simulate from IM's, so your data is not saved to \n"+ "file when you save the session. It can, however, be recreated from the saved seed.");
  }
  if (model instanceof Graph) {
    type=FgsRunner.Type.GRAPH;
  }
 else   if (model instanceof DataSet) {
    DataSet dataSet=(DataSet)model;
    if (dataSet.isContinuous()) {
      type=FgsRunner.Type.CONTINUOUS;
    }
 else     if (dataSet.isDiscrete()) {
      type=FgsRunner.Type.DISCRETE;
    }
 else {
      throw new IllegalStateException("Data set must either be continuous or discrete.");
    }
  }
 else   if (model instanceof ICovarianceMatrix) {
    type=FgsRunner.Type.CONTINUOUS;
  }
 else   if (model instanceof DataModelList) {
    DataModelList list=(DataModelList)model;
    if (allContinuous(list)) {
      type=FgsRunner.Type.CONTINUOUS;
    }
 else     if (allDiscrete(list)) {
      type=FgsRunner.Type.DISCRETE;
    }
 else {
      throw new IllegalArgumentException("Data must be either all discrete or all continuous.");
    }
  }
  return type;
}

private FgsRunner . Type computeType ( ) { Object model = getDataModel ( ) ; if ( model == null && getSourceGraph ( ) != null ) { model = getSourceGraph ( ) ; } if ( model == null ) { throw new RuntimeException ( "Data source is unspecified. You may need to double click all your data boxes, \n" + "then click Save, and then right click on them and select Propagate Downstream. \n" + "The issue is that we use a seed to simulate from IM's, so your data is not saved to \n" + "file when you save the session. It can, however, be recreated from the saved seed." ) ; } if ( model instanceof Graph ) { type = FgsRunner . Type . GRAPH ; } else if ( model instanceof DataSet ) { DataSet dataSet = ( DataSet ) model ; if ( dataSet . isContinuous ( ) ) { type = FgsRunner . Type . CONTINUOUS ; } else if ( dataSet . isDiscrete ( ) ) { type = FgsRunner . Type . DISCRETE ; } else { throw new IllegalStateException ( "Data set must either be continuous or discrete." ) ; } } else if ( model instanceof ICovarianceMatrix ) { type = FgsRunner . Type . CONTINUOUS ; } else if ( model instanceof DataModelList ) { DataModelList list = ( DataModelList ) model ; if ( allContinuous ( list ) ) { type = FgsRunner . Type . CONTINUOUS ; } else if ( allDiscrete ( list ) ) { type = FgsRunner . Type . DISCRETE ; } else { throw new IllegalArgumentException ( "Data must be either all discrete or all continuous." ) ; } } return type ; }
executes the algorithm , producing ( at least ) a result workbench . must be implemented in the extending class .
