package asynctablemodel;

import asynctablemodel.db.TestEntity;
import asynctablemodel.db.TestReferredEntity;
import hu.elte.inf.pszt.prt.javalib.db.jpa.AbstractDatabaseHandler;
import hu.elte.inf.pszt.prt.javalib.db.jpa.GenericJpaController;
import java.util.Map;
import java.util.Random;
import java.util.TreeMap;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 * @author Daniel "3ICE" Berezvai
 */
public class TestDatabaseHandler extends AbstractDatabaseHandler {

private GenericJpaController<TestReferredEntity> testReferredEntityJpaController;
private GenericJpaController<TestEntity> testEntityJpaController;

@Override
protected EntityManagerFactory createEntityManagerFactory() {
  EntityManagerFactory emf;
  emf = Persistence.createEntityManagerFactory("AsyncTableModelPU");
  return emf;
}

@Override
protected void createJpaControllers() {
  testReferredEntityJpaController =
  new GenericJpaController<>(cem, TestReferredEntity.class);

  testEntityJpaController =
  new GenericJpaController<>(cem, TestEntity.class);
  insertDefaultRows(testEntityJpaController, testReferredEntityJpaController);

}

@Override
protected void mapEntityClassesToControllers() {
  ectcm.put(TestEntity.class, testEntityJpaController);
  ectcm.put(TestReferredEntity.class, testReferredEntityJpaController);
}

private void insertDefaultRows(
        GenericJpaController<TestEntity> testEntityJpaController,
        GenericJpaController<TestReferredEntity> testReferredEntityJpaController) {
  Random rnd = new Random();
  WordGenerator wg = new WordGenerator();
  //...
}

private static class WordGenerator {

static final Map<String, Integer> characterFrequency = new TreeMap<>();

public WordGenerator() {
  characterFrequency.put("e", 100000);
  //...
}

public String generateWord() {
  return "";
}
}
}
