@Override
  public Map<String, CompoundSuiteHistoryResult> submitSuiteResultQuery() {
    EntityManager entityManager = null;
    try {
      entityManager = entityManagerFactory.createEntityManager();

      List<String> xapVersions = getXAPVersions(entityManager);
      Map<String, List<SuiteResult>> results = new HashMap<String, List<SuiteResult>>();

      String sqlFromQueryPart =
          "select * from ( select * from SgtestResult order by timestamp desc ) as t group by buildVersion, suiteName, jvmType";

      List<SuiteResult> suiteResults =
          new ArrayList<SuiteResult>(
              entityManager.createNativeQuery(sqlFromQueryPart, SuiteResult.class).getResultList());

      List<SuiteResult> tmpResult = null;
      for (String xapVersion : xapVersions) {
        String cloudifyVersion = props.getProperty("version" + xapVersion);
        tmpResult = new ArrayList<SuiteResult>();
        for (SuiteResult suiteResult : suiteResults) {
          if (suiteResult.getCompoundKey().getBuildVersion().equals(xapVersion)
              || suiteResult.getCompoundKey().getBuildVersion().equals(cloudifyVersion)) {
            tmpResult.add(suiteResult);
          }
        }
        results.put(xapVersion, tmpResult);
      }

      Map<String, CompoundSuiteHistoryResult> compoundSuiteHistoryResults =
          new HashMap<String, CompoundSuiteHistoryResult>();

      Set<String> keysMap = results.keySet();
      for (String xapVersion : keysMap) {
        CompoundSuiteHistoryResult suiteHistoryResult = new CompoundSuiteHistoryResult();
        suiteHistoryResult.setResults(results.get(xapVersion));
        Map<String, List<SuiteHistory>> suitePassedTests =
            new HashMap<String, List<SuiteHistory>>();
        for (SuiteResult result : suiteHistoryResult.getResults()) {
          List<SuiteHistory> passedTestsHistory = getSuiteHistory(entityManager, result);
          suitePassedTests.put(result.getCompoundKey().getSuiteName(), passedTestsHistory);
        }
        suiteHistoryResult.setSuiteHistory(suitePassedTests);
        compoundSuiteHistoryResults.put(xapVersion, suiteHistoryResult);
      }
      sortAccordingFailedTests(compoundSuiteHistoryResults);
      return compoundSuiteHistoryResults;
    } finally {
      if (entityManager != null) entityManager.close();
    }
  }