question: 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 ; }
target:  Executes the algorithm, producing (at least) a result workbench. Must be implemented in the extending class.