Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
titlegetSorReplacedByEntities
//public FinderList<SorReplacedByDTO> hele træet af SorId'er, som er blevet erstattet af en given SorId
// Eksempel: Hvis SorId er 101 og vi har denne data struktur:
//   101
//getSorReplacedByMap() {
        String query =
       ├── 102
//    ├── 103
//    │   └── 104
//    └── 105
//        └── 106
// Vil den returner alle disse [102, 103, 104, 105, 106] SorId'er.
public List<Long> getSorReplacedByEntities(Long sorId) {
    Set<Long> visitedSorIds = new HashSet<>();
    List<Long> result = new ArrayList<>()"SELECT ReplacedSorId, ReplacedBySorId, FromDate, ToDate " +
                "FROM SOR2SorReplacedByEntities";
    recursiveFetch(sorId, visitedSorIds, result);
  List<SorReplacedByDTO> sorReplacedByEntities return result;
}

private void recursiveFetch(Long sorId, Set<Long> visitedSorIds, List<Long> result) {= jdbcTemplate.query(query, (rs, rowNum) ->
    // Hvis vi allerede har fundet SorId'et,  returner for at undgå uendelig rekursion
    // Data'en er ikke cirkulær, så dette burde ikke ske
new SorReplacedByDTO(
               if (visitedSorIdsrs.containsgetLong(sorId)) {"ReplacedSorId"),
        return;
    }
    visitedSorIdsrs.addgetLong(sorId);
"ReplacedBySorId"),
    // Find alle SorId'er som er blevet erstattet af den givne SorId
    String query = "SELECT ReplacedBySorId FROM SOR2SorReplacedByEntities WHERE ReplacedSorId = :sorId";
 rs.getDate("FromDate").toLocalDate(),
           HashMap<String, Object> parameters = new HashMap<>();
    parameters.put("sorId", sorId);
    List<Long> replacedByIds = jdbcTemplate.queryForList(query, parameters, Long.class);
    
	// Tilføj de fundet sorId'er til resultatet
    result.addAll(replacedByIds);
    
	// Recursivt kald for hver af de fundne underliggende sorId'er for at finde alle SorId'er i træet rs.getDate("ToDate") != null ? rs.getDate("ToDate").toLocalDate() : null
            )
    for (Long id : replacedByIds) {;

        recursiveFetch(id, visitedSorIds, result)return sorReplacedByEntities;
    }
}