/**
   * Retrieves all entity types from underlying data source.
   *
   * @return all entity types as a map of EntityType to {@link EntityTypeEntry}.
   */
  @VisibleForTesting
  Map<String, EntityTypeEntry> retrieveEntityTypeEntries() {
    final Map<String, EntityTypeEntry> entityTypeEntries = new HashMap<>(50);
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    final String sql = "SELECT * FROM AD_EntityType WHERE IsActive=? ORDER BY AD_EntityType_ID";
    final Object[] params = new Object[] {true};
    try {
      pstmt = DB.prepareStatement(sql, ITrx.TRXNAME_None);
      DB.setParameters(pstmt, params);
      rs = pstmt.executeQuery();
      while (rs.next()) {
        final EntityTypeEntry entry = loadEntityTypeEntry(rs);
        entityTypeEntries.put(entry.getEntityType(), entry);
      }
    } catch (SQLException e) {
      throw new DBException(e, sql, params);
    } finally {
      DB.close(rs, pstmt);
      rs = null;
      pstmt = null;
    }

    return entityTypeEntries;
  }
 @Override
 public boolean isDisplayedInUI(final String entityType) {
   final EntityTypeEntry entry = getEntityTypeEntryOrNull(entityType);
   if (entry == null) {
     return false;
   }
   return entry.isDisplayedInUI();
 }
  @Override
  public String getModelPackage(final String entityType) {
    final EntityTypeEntry entry = getEntityTypeEntry(entityType);
    if (entry == null) {
      return null;
    }

    return entry.getModelPackage();
  }
  private final EntityTypeEntry loadEntityTypeEntry(final ResultSet rs) throws SQLException {
    final String entityType = rs.getString(I_AD_EntityType.COLUMNNAME_EntityType);
    final String modelPackage = rs.getString(I_AD_EntityType.COLUMNNAME_ModelPackage);
    final String webUIServletListenerClass =
        rs.getString(I_AD_EntityType.COLUMNNAME_WebUIServletListenerClass);
    final boolean displayedInUI =
        DisplayType.toBoolean(rs.getString(I_AD_EntityType.COLUMNNAME_IsDisplayed));

    final int adEntityTypeId = rs.getInt(I_AD_EntityType.COLUMNNAME_AD_EntityType_ID);
    final boolean systemMaintained = adEntityTypeId < MAX_SystemMaintained_AD_EntityType_ID;

    final EntityTypeEntry entry =
        EntityTypeEntry.builder()
            .setEntityType(entityType)
            .setModelPackage(modelPackage)
            .setWebUIServletListenerClass(webUIServletListenerClass)
            .setDisplayedInUI(displayedInUI)
            .setSystemMaintained(systemMaintained)
            .build();
    return entry;
  }