@Test
  public void testGetByValueAndTypeId() throws Exception {

    int criteriaTypeId1 = 101, criteriaTypeId2 = 202;
    String optionValue1 = "alpha", optionValue2 = "bravo";

    CriteriaTypeOption cTO1 = new CriteriaTypeOption();
    EntityDataGenerator.generateTestDataForModelClass(cTO1);
    cTO1.setCriteriaTypeId(criteriaTypeId1);
    cTO1.setOptionValue(optionValue1);
    dao.persist(cTO1);

    CriteriaTypeOption cTO2 = new CriteriaTypeOption();
    EntityDataGenerator.generateTestDataForModelClass(cTO2);
    cTO2.setCriteriaTypeId(criteriaTypeId1);
    cTO2.setOptionValue(optionValue2);
    dao.persist(cTO2);

    CriteriaTypeOption cTO3 = new CriteriaTypeOption();
    EntityDataGenerator.generateTestDataForModelClass(cTO3);
    cTO3.setCriteriaTypeId(criteriaTypeId2);
    cTO3.setOptionValue(optionValue1);
    dao.persist(cTO3);

    CriteriaTypeOption cTO4 = new CriteriaTypeOption();
    EntityDataGenerator.generateTestDataForModelClass(cTO4);
    cTO4.setCriteriaTypeId(criteriaTypeId2);
    cTO4.setOptionValue(optionValue2);
    dao.persist(cTO4);

    CriteriaTypeOption expectedResult = cTO4;
    CriteriaTypeOption result = dao.getByValueAndTypeId(optionValue2, criteriaTypeId2);

    assertEquals(expectedResult, result);
  }
  @Test
  public void testGetByValue() throws Exception {

    String optionValue1 = "alpha", optionValue2 = "bravo", optionValue3 = "charlie";

    CriteriaTypeOption cTO1 = new CriteriaTypeOption();
    EntityDataGenerator.generateTestDataForModelClass(cTO1);
    cTO1.setOptionValue(optionValue1);
    dao.persist(cTO1);

    CriteriaTypeOption cTO2 = new CriteriaTypeOption();
    EntityDataGenerator.generateTestDataForModelClass(cTO2);
    cTO2.setOptionValue(optionValue2);
    dao.persist(cTO2);

    CriteriaTypeOption cTO3 = new CriteriaTypeOption();
    EntityDataGenerator.generateTestDataForModelClass(cTO3);
    cTO3.setOptionValue(optionValue3);
    dao.persist(cTO3);

    CriteriaTypeOption expectedResult = cTO2;
    CriteriaTypeOption result = dao.getByValue(optionValue2);

    assertEquals(expectedResult, result);
  }
  @Test
  /**
   * Ensures that the findUniqueReportClass() method returns a set of report classes without
   * returning duplicates.
   *
   * @throws Exception
   */
  public void testFindSubClassesByReportClass() throws Exception {
    String reportClass = "classA";

    CtlDocClass class1 = new CtlDocClass();
    EntityDataGenerator.generateTestDataForModelClass(class1);
    class1.setReportClass(reportClass);
    class1.setSubClass("subA");
    class1.setId(160);

    CtlDocClass class2 = new CtlDocClass();
    EntityDataGenerator.generateTestDataForModelClass(class2);
    class2.setReportClass(reportClass);
    class2.setSubClass("subB");
    class2.setId(161);

    CtlDocClass class3 = new CtlDocClass();
    EntityDataGenerator.generateTestDataForModelClass(class3);
    class3.setReportClass("classB");
    class3.setSubClass("subC");
    class3.setId(162);

    CtlDocClass class4 = new CtlDocClass();
    EntityDataGenerator.generateTestDataForModelClass(class4);
    class4.setReportClass("classC");
    class4.setSubClass("subD");
    class4.setId(163);

    dao.persist(class1);
    dao.persist(class2);
    dao.persist(class3);
    dao.persist(class4);

    List<String> result = dao.findSubClassesByReportClass(reportClass);
    List<String> expectedResult = new ArrayList<String>(Arrays.asList("subA", "subB"));

    assertEquals(result.size(), expectedResult.size());
    assertTrue(result.containsAll(expectedResult));
    // ensure that all persisted items are in the table
    // ensure ordered by reportclass lexicographically
    String str1;
    String str2;
    for (int i = 0; i < result.size() - 1; i++) {
      str1 = result.get(i);
      str2 = result.get(i + 1);
      if (str1.compareTo(str2) > -1) {
        fail("Results not ordred by sub class.");
      }
    }
    assertTrue(true);
    assertTrue(result.containsAll(expectedResult));
  }
  @Test
  /**
   * Ensure that all report classes in the table are ordered by reportClass lexicographically.
   * Ensure that all report classes are unique.
   *
   * @throws Exception
   */
  public void testFindUniqueReportClasses() throws Exception {
    CtlDocClass class1 = new CtlDocClass();
    EntityDataGenerator.generateTestDataForModelClass(class1);
    class1.setReportClass("classA");
    class1.setId(160);

    CtlDocClass class2 = new CtlDocClass();
    EntityDataGenerator.generateTestDataForModelClass(class2);
    class2.setReportClass("classA");
    class2.setId(161);

    CtlDocClass class3 = new CtlDocClass();
    EntityDataGenerator.generateTestDataForModelClass(class3);
    class3.setReportClass("classB");
    class3.setId(162);

    CtlDocClass class4 = new CtlDocClass();
    EntityDataGenerator.generateTestDataForModelClass(class4);
    class4.setReportClass("classC");
    class4.setId(164);

    dao.persist(class1);
    dao.persist(class2);
    dao.persist(class3);
    dao.persist(class4);

    List<String> result = dao.findUniqueReportClasses();
    List<String> expectedResult =
        new ArrayList<String>(Arrays.asList("classA", "classB", "classC"));
    assertTrue(result.containsAll(expectedResult));

    // make sure all items are unique
    final List<String> uniqueClasses = new ArrayList<String>();
    final HashMap<String, String> hm = new HashMap<String, String>();
    for (String reportClass : result) {
      if (hm.get(reportClass) == null) {
        hm.put(reportClass, reportClass);
        uniqueClasses.add(reportClass);
      }
    }
    assertEquals(uniqueClasses.size(), dao.findUniqueReportClasses().size());

    // ensure that all persisted items are in the table
    // ordered by reportClass lexicographically
    for (int i = 0; i < result.size() - 1; i++) {
      if ((result.get(i).toLowerCase()).compareTo(result.get(i + 1).toLowerCase()) > 0) {
        fail("Results not ordered by report class.");
      }
    }
    assertTrue(true);
  }
  @Test
  public void testFind3rdPartyPayRecordsByBill() throws Exception {

    BillingONCHeader1Dao daoBONCH =
        (BillingONCHeader1Dao) SpringUtils.getBean(BillingONCHeader1Dao.class);
    BillingONCHeader1 bONCHeader1 = new BillingONCHeader1();
    EntityDataGenerator.generateTestDataForModelClass(bONCHeader1);

    int billingNo = 1;

    BillingONPayment bONPayment1 = new BillingONPayment();
    EntityDataGenerator.generateTestDataForModelClass(bONPayment1);
    Date date1 = new Date(dfm.parse("20110101").getTime());
    bONPayment1.setBillingNo(billingNo);
    bONPayment1.setPaymentDate(date1);

    BillingONPayment bONPayment2 = new BillingONPayment();
    EntityDataGenerator.generateTestDataForModelClass(bONPayment2);
    Date date2 = new Date(dfm.parse("20110701").getTime());
    bONPayment2.setBillingNo(billingNo);
    bONPayment2.setPaymentDate(date2);

    BillingONPayment bONPayment3 = new BillingONPayment();
    EntityDataGenerator.generateTestDataForModelClass(bONPayment3);
    Date date3 = new Date(dfm.parse("20110301").getTime());
    bONPayment3.setBillingNo(billingNo);
    bONPayment3.setPaymentDate(date3);

    daoBONCH.persist(bONCHeader1);
    dao.persist(bONPayment1);
    dao.persist(bONPayment2);
    dao.persist(bONPayment3);

    List<BillingONPayment> result = dao.find3rdPartyPayRecordsByBill(bONCHeader1);
    List<BillingONPayment> expectedResult =
        new ArrayList<BillingONPayment>(
            Arrays.asList(
                bONPayment1,
                bONPayment3,
                bONPayment2)); /// add the three payment obj in the expected order and assert =
    // expected result

    Logger logger = MiscUtils.getLogger();

    if (result.size() != expectedResult.size()) {
      logger.warn("Array sizes do not match.");
      fail("Array sizes do not match.");
    }

    for (int i = 0; i < expectedResult.size(); i++) {
      if (!expectedResult.get(i).equals(result.get(i))) {
        logger.warn("Items not sorted by Billing Payment Date.");
        fail("Items not sorted by Billing Payment Date.");
      }
    }
    assertTrue(true);
  }
  @Test
  public void testFindByTypeAndMeasuringInstruction() throws Exception {

    String measuringInstruction1 = "instruction1";
    String measuringInstruction2 = "instruction2";

    String type1 = "typ1";
    String type2 = "typ2";

    MeasurementType measurementType1 = new MeasurementType();
    EntityDataGenerator.generateTestDataForModelClass(measurementType1);
    measurementType1.setMeasuringInstruction(measuringInstruction2);
    measurementType1.setType(type1);
    dao.persist(measurementType1);

    MeasurementType measurementType2 = new MeasurementType();
    EntityDataGenerator.generateTestDataForModelClass(measurementType2);
    measurementType2.setMeasuringInstruction(measuringInstruction1);
    measurementType2.setType(type1);
    dao.persist(measurementType2);

    MeasurementType measurementType3 = new MeasurementType();
    EntityDataGenerator.generateTestDataForModelClass(measurementType3);
    measurementType3.setMeasuringInstruction(measuringInstruction2);
    measurementType3.setType(type2);
    dao.persist(measurementType3);

    MeasurementType measurementType4 = new MeasurementType();
    EntityDataGenerator.generateTestDataForModelClass(measurementType4);
    measurementType4.setMeasuringInstruction(measuringInstruction1);
    measurementType4.setType(type1);
    dao.persist(measurementType4);

    List<MeasurementType> expectedResult =
        new ArrayList<MeasurementType>(Arrays.asList(measurementType2, measurementType4));
    List<MeasurementType> result =
        dao.findByTypeAndMeasuringInstruction(type1, measuringInstruction1);

    Logger logger = MiscUtils.getLogger();

    if (result.size() != expectedResult.size()) {
      logger.warn("Array sizes do not match.");
      fail("Array sizes do not match.");
    }
    for (int i = 0; i < expectedResult.size(); i++) {
      if (!expectedResult.get(i).equals(result.get(i))) {
        logger.warn("Items  do not match.");
        fail("Items  do not match.");
      }
    }
    assertTrue(true);
  }
  @Test
  public void testGetCriteriaTypeOptionByTypeId() throws Exception {

    int criteriaTypeId1 = 101, criteriaTypeId2 = 202;

    CriteriaTypeOption cTO1 = new CriteriaTypeOption();
    EntityDataGenerator.generateTestDataForModelClass(cTO1);
    cTO1.setCriteriaTypeId(criteriaTypeId1);
    dao.persist(cTO1);

    CriteriaTypeOption cTO2 = new CriteriaTypeOption();
    EntityDataGenerator.generateTestDataForModelClass(cTO2);
    cTO2.setCriteriaTypeId(criteriaTypeId2);
    dao.persist(cTO2);

    CriteriaTypeOption cTO3 = new CriteriaTypeOption();
    EntityDataGenerator.generateTestDataForModelClass(cTO3);
    cTO3.setCriteriaTypeId(criteriaTypeId2);
    dao.persist(cTO3);

    CriteriaTypeOption cTO4 = new CriteriaTypeOption();
    EntityDataGenerator.generateTestDataForModelClass(cTO4);
    cTO4.setCriteriaTypeId(criteriaTypeId1);
    dao.persist(cTO4);

    CriteriaTypeOption cTO5 = new CriteriaTypeOption();
    EntityDataGenerator.generateTestDataForModelClass(cTO5);
    cTO5.setCriteriaTypeId(criteriaTypeId1);
    dao.persist(cTO5);

    List<CriteriaTypeOption> expectedResult =
        new ArrayList<CriteriaTypeOption>(Arrays.asList(cTO1, cTO4, cTO5));
    List<CriteriaTypeOption> result = dao.getCriteriaTypeOptionByTypeId(criteriaTypeId1);

    Logger logger = MiscUtils.getLogger();

    if (result.size() != expectedResult.size()) {
      logger.warn("Array sizes do not match.");
      fail("Array sizes do not match.");
    }
    for (int i = 0; i < expectedResult.size(); i++) {
      if (!expectedResult.get(i).equals(result.get(i))) {
        logger.warn("Items  do not match.");
        fail("Items  do not match.");
      }
    }
    assertTrue(true);
  }
 @Test
 public void testCreate() throws Exception {
   MeasurementType entity = new MeasurementType();
   EntityDataGenerator.generateTestDataForModelClass(entity);
   dao.persist(entity);
   assertNotNull(entity.getId());
 }
 @Test
 public void testCreate() throws Exception {
   HsfoRecommitSchedule entity = new HsfoRecommitSchedule();
   EntityDataGenerator.generateTestDataForModelClass(entity);
   dao.persist(entity);
   assertNotNull(entity.getId());
 }
 @Test
 public void testCreate() throws Exception {
   CriteriaTypeOption entity = new CriteriaTypeOption();
   EntityDataGenerator.generateTestDataForModelClass(entity);
   dao.persist(entity);
   assertNotNull(entity.getId());
 }
  @Test
  public void testFindAll() throws Exception {

    MeasurementType measurementType1 = new MeasurementType();
    EntityDataGenerator.generateTestDataForModelClass(measurementType1);
    dao.persist(measurementType1);

    MeasurementType measurementType2 = new MeasurementType();
    EntityDataGenerator.generateTestDataForModelClass(measurementType2);
    dao.persist(measurementType2);

    MeasurementType measurementType3 = new MeasurementType();
    EntityDataGenerator.generateTestDataForModelClass(measurementType3);
    dao.persist(measurementType3);

    MeasurementType measurementType4 = new MeasurementType();
    EntityDataGenerator.generateTestDataForModelClass(measurementType4);
    dao.persist(measurementType4);

    List<MeasurementType> expectedResult =
        new ArrayList<MeasurementType>(
            Arrays.asList(measurementType1, measurementType2, measurementType3, measurementType4));
    List<MeasurementType> result = dao.findAll();

    Logger logger = MiscUtils.getLogger();

    if (result.size() != expectedResult.size()) {
      logger.warn("Array sizes do not match.");
      fail("Array sizes do not match.");
    }
    for (int i = 0; i < expectedResult.size(); i++) {
      if (!expectedResult.get(i).equals(result.get(i))) {
        logger.warn("Items  do not match.");
        fail("Items  do not match.");
      }
    }
    assertTrue(true);
  }
  @Test
  public void testFind3rdPartyPayRecordsByBillBillingONCHeader1DateDate() throws Exception {

    BillingONCHeader1Dao daoBONCH =
        (BillingONCHeader1Dao) SpringUtils.getBean(BillingONCHeader1Dao.class);

    BillingONCHeader1 bONCHeader1 = new BillingONCHeader1();
    EntityDataGenerator.generateTestDataForModelClass(bONCHeader1);
    Date startDate = new Date(dfm.parse("20101230").getTime());
    Date endDate = new Date(dfm.parse("20120101").getTime());

    BillingONPayment bONPayment1 = new BillingONPayment();
    EntityDataGenerator.generateTestDataForModelClass(bONPayment1);
    Date Date1 = new Date(dfm.parse("20110102").getTime());
    bONPayment1.setBillingNo(1);
    bONPayment1.setPaymentDate(Date1);

    BillingONPayment bONPayment2 = new BillingONPayment();
    EntityDataGenerator.generateTestDataForModelClass(bONPayment2);
    Date Date2 = new Date(dfm.parse("20110302").getTime());
    bONPayment2.setBillingNo(1);
    bONPayment2.setPaymentDate(Date2);

    BillingONPayment bONPayment3 = new BillingONPayment();
    EntityDataGenerator.generateTestDataForModelClass(bONPayment3);
    Date Date3 = new Date(dfm.parse("20110502").getTime());
    bONPayment3.setBillingNo(1);
    bONPayment3.setPaymentDate(Date3);

    /// out of bound dates
    BillingONPayment bONPayment4 = new BillingONPayment();
    EntityDataGenerator.generateTestDataForModelClass(bONPayment4);
    Date Date4 = new Date(dfm.parse("20090502").getTime());
    bONPayment4.setBillingNo(1);
    bONPayment4.setPaymentDate(Date4);

    BillingONPayment bONPayment5 = new BillingONPayment();
    EntityDataGenerator.generateTestDataForModelClass(bONPayment5);
    Date Date5 = new Date(dfm.parse("20130502").getTime());
    bONPayment5.setBillingNo(1);
    bONPayment5.setPaymentDate(Date5);

    daoBONCH.persist(bONCHeader1);
    dao.persist(bONPayment1);
    dao.persist(bONPayment2);
    dao.persist(bONPayment3);

    List<BillingONPayment> result =
        dao.find3rdPartyPayRecordsByBill(bONCHeader1, startDate, endDate);
    List<BillingONPayment> expectedResult =
        new ArrayList<BillingONPayment>(Arrays.asList(bONPayment1, bONPayment2, bONPayment3));

    Logger logger = MiscUtils.getLogger();

    if (result.size() != expectedResult.size()) {
      logger.warn("Array sizes do not match.");
      fail("Array sizes do not match.");
    }
    for (int i = 0; i < expectedResult.size(); i++) {
      if (!expectedResult.get(i).equals(result.get(i))) {
        logger.warn("Items not sorted by Billing Payment Date.");
        fail("Items not sorted by Billing Payment Date.");
      }
    }
    assertTrue(true);
  }