code: @Override
      public TemporalDataModelIF<Long, Long> run(RUN_OPTIONS opts, TemporalDataModelIF<Long, Long> trainingModel, TemporalDataModelIF<Long, Long> testModel) throws Exception {
          if (isAlreadyRecommended()) {
              return null;
          }
          // transform from core's DataModels to LibRec's DataModel
          DataModel trainingModelLibrec = new DataDAOWrapper(trainingModel);
          DataModel testModelLibrec = new DataDAOWrapper(testModel);
  
          return runLibrecRecommender(opts, trainingModelLibrec, testModelLibrec);
      }
docs: Runs the recommender using the provided datamodels.
  
  @param opts see
  {@link net.recommenders.rival.recommend.frameworks.AbstractRunner.RUN_OPTIONS}
  @param trainingModel model to be used to train the recommender.
  @param testModel model to be used to test the recommender.
  @return see
  {@link #runLibrecRecommender(net.recommenders.rival.recommend.frameworks.AbstractRunner.RUN_OPTIONS, org.grouplens.lenskit.data.dao.EventDAO, org.grouplens.lenskit.data.dao.EventDAO)}
  @throws RecommenderException see
  {@link #runLibrecRecommender(net.recommenders.rival.recommend.frameworks.AbstractRunner.RUN_OPTIONS, org.grouplens.lenskit.data.dao.EventDAO, org.grouplens.lenskit.data.dao.EventDAO)}