Re: Apache Cayenne - Merge Data

Andrus Adamchik <[email protected]>
Newsgroups gmane.comp.java.cayenne.user
Message-ID <[email protected]>
A small correction for Thymeleaf table:

<table>
 <tr>
    <th>HOST</th>
    <th th:each="ts: ${timestamps}" th:text="${ts}"/>
 </tr>
 <tr th:each="hostData: ${valuesByHost}">
    <td th:text="${hostData.key}"/>
    <td th:each="ts: ${timestamps}" th:text="${hostData.value.get(ts)}"/>
 </tr>
</table>

Of course I haven't tried running this for real, so there may be more issues with the example (esp. considering that I've never used Thymeleaf in my life :) ), but it should give an idea.

Andrus


> On Aug 15, 2019, at 10:20 AM, Andrus Adamchik <[email protected]> wrote:
> 
> Hi Keena,
> 
> The short answer is - write some Java code to transform the Cayenne result into a data structure appropriate for Thymeleaf display. 
> 
> I don't know anything about Thymeleaf, but from quick googling, it might look like this:
> 
> <table>
>  <tr>
>     <th>HOST</th>
>     <th th:each="ts: ${timestamps}" th:text="${ts}"/>
>  </tr>
>  <tr th:each="hostData: ${valuesByHost}">
>     <td th:each="ts: ${timestamps}" th:text="${hostData.get(ts)}"/>
>  </tr>
> </table>
> 
> 
> Now you need to build "timestamps" and "valuesByHost" collections:
> 
> List<UtilizationData> result = ...
> Set<LocalDateTime> timestampsUnsorted = new HashSet<>();
> Map<String, Map<LocalDateTime , Integer>> valuesByHost = new HashMap<>();
> 
> // iterate over "result", populating "timestampsUnsorted" and "valuesByHost" from the object data
> ...
> 
> List<LocalDateTime> timestamps = new ArrayList<>(timestampsUnsorted);
> Collections.sort(timestamps);
> 
> HTH,
> Andrus
> 
> P.S. BTW, can you show your Cayenne query. You are saying that you have ObjectSelect.columnQuery (which normally returns a List<Object> or List<Object[]>), while your result seems to be a List<UtilizationData>, which would be the case if you ran a regular (not column) ObjectSelect query.
> 
> 
>> On Aug 15, 2019, at 6:16 AM, Keena Grepo <[email protected]> wrote:
>> 
>> Hi, 
>> 
>> I have this data returned by ObjectSelect.columnQuery :
>> 
>> [{<ObjectId:UtilizationData, id=1>; committed; [hostname=>cc001; percentagePerHour=>100; timestamp=>2019-07-09 00:00:00]}, {<ObjectId:UtilizationData, id=2>; committed; [hostname=>cc001; percentagePerHour=>50; timestamp=>2019-07-09 01:00:00]}, {<ObjectId:UtilizationData, id=3>; committed; [hostname=>cc001; percentagePerHour=>50; ; timestamp=>2019-07-09 02:00:00]}, {<ObjectId:UtilizationData, id=4>; committed; [hostname=>cc001; percentagePerHour=>83; timestamp=>2019-07-09 03:00:00]}, ...]
>> 
>> And I want to display the data in a table with "HOST", and timestamps as table head. Then for the table data are the value of hostname and the percentagePerHour for each respective timestamp (like the sample table below). How can I achieve this? 
>> -------------------------------------------------------------------------------------------------------------------------------
>> | HOST  | 2019-07-09 00:00:00 | 2019-07-09 01:00:00 | 2019-07-09 02:00:00 | 2019-07-09 03:00:00 |
>> -------------------------------------------------------------------------------------------------------------------------------
>> | cc001  | 100                            | 50                               | 50                              | 83                               |
>> -------------------------------------------------------------------------------------------------------------------------------
>> 
>> By the way, I am using Springboot + Thymeleaf.
>> 
>> Thanks.
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.