Skip to content

Commit 2eca90f

Browse files
committed
Show first and last usage of uids
1 parent af4d5ef commit 2eca90f

8 files changed

Lines changed: 155 additions & 56 deletions

File tree

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ println "Platform is: ${javafxPlatform}"
3939
dependencies {
4040
def springBootVersion = "3.5.5"
4141
def mapStructVersion = "1.6.3"
42-
def commonsVersion = "20250913-317e19f"
42+
def commonsVersion = "20250928-a9e7e24"
4343

4444
annotationProcessor(platform("org.springframework.boot:spring-boot-dependencies:${springBootVersion}"))
4545
implementation(platform("org.springframework.boot:spring-boot-dependencies:${springBootVersion}"))

src/main/java/com/faforever/moderatorclient/api/domain/UserService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ private <T extends ElideEntity> ElideNavigatorOnCollection<T> addModeratorInclud
5858
.addInclude(variablePrefix + "names")
5959
.addInclude(variablePrefix + "avatarAssignments")
6060
.addInclude(variablePrefix + "avatarAssignments.avatar")
61-
.addInclude(variablePrefix + "uniqueIds")
61+
.addInclude(variablePrefix + "uniqueIdAssignments")
62+
.addInclude(variablePrefix + "uniqueIdAssignments.uniqueId")
6263
.addInclude(variablePrefix + "accountLinks")
6364
.addInclude(variablePrefix + "bans")
6465
.addInclude(variablePrefix + "bans.author")

src/main/java/com/faforever/moderatorclient/mapstruct/PlayerMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import java.util.List;
88
import java.util.Set;
99

10-
@Mapper(componentModel = "spring", uses = {JavaFXMapper.class, UniqueIdMapper.class, NameRecordMapper.class, BanInfoMapper.class, AvatarAssignmentMapper.class, AccountLinkMapper.class, CycleAvoidingMappingContext.class})
10+
@Mapper(componentModel = "spring", uses = {JavaFXMapper.class, UniqueIdAssignmentMapper.class, NameRecordMapper.class, BanInfoMapper.class, AvatarAssignmentMapper.class, AccountLinkMapper.class, CycleAvoidingMappingContext.class})
1111
public abstract class PlayerMapper {
1212
public abstract PlayerFX map(Player dto);
1313

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.faforever.moderatorclient.mapstruct;
2+
3+
import com.faforever.commons.api.dto.UniqueIdAssignment;
4+
import com.faforever.moderatorclient.ui.domain.UniqueIdAssignmentFx;
5+
import org.mapstruct.Mapper;
6+
7+
import java.util.List;
8+
import java.util.Set;
9+
10+
@Mapper(componentModel = "spring", uses = {JavaFXMapper.class, UniqueIdMapper.class, CycleAvoidingMappingContext.class})
11+
public abstract class UniqueIdAssignmentMapper {
12+
public abstract UniqueIdAssignmentFx map(UniqueIdAssignment dto);
13+
14+
public abstract UniqueIdAssignment map(UniqueIdAssignmentFx fxBean);
15+
16+
public abstract List<UniqueIdAssignmentFx> mapToFX(List<UniqueIdAssignment> dtoList);
17+
18+
public abstract List<UniqueIdAssignment> mapToDto(List<UniqueIdAssignmentFx> fxBeanList);
19+
20+
public abstract Set<UniqueIdAssignmentFx> mapToFX(Set<UniqueIdAssignment> dtoList);
21+
22+
public abstract Set<UniqueIdAssignment> mapToDto(Set<UniqueIdAssignmentFx> fxBeanList);
23+
}
Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,12 @@
11
package com.faforever.moderatorclient.mapstruct;
22

3-
import com.faforever.commons.api.dto.BanInfo;
43
import com.faforever.commons.api.dto.UniqueId;
5-
import com.faforever.moderatorclient.ui.domain.BanInfoFX;
64
import com.faforever.moderatorclient.ui.domain.UniqueIdFx;
75
import org.mapstruct.Mapper;
8-
import org.mapstruct.Mapping;
9-
10-
import java.util.List;
11-
import java.util.Set;
126

137
@Mapper(componentModel = "spring", uses = {JavaFXMapper.class, CycleAvoidingMappingContext.class})
148
public abstract class UniqueIdMapper {
159
public abstract UniqueIdFx map(UniqueId dto);
1610

1711
public abstract UniqueId map(UniqueIdFx fxBean);
18-
19-
public abstract List<UniqueIdFx> mapToFX(List<UniqueId> dtoList);
20-
21-
public abstract List<UniqueId> mapToDto(List<UniqueIdFx> fxBeanList);
22-
23-
public abstract Set<UniqueIdFx> mapToFX(Set<UniqueId> dtoList);
24-
25-
public abstract Set<UniqueId> mapToDto(Set<UniqueIdFx> fxBeanList);
2612
}

src/main/java/com/faforever/moderatorclient/ui/ViewHelper.java

Lines changed: 100 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.faforever.moderatorclient.ui.domain.TeamkillFX;
3535
import com.faforever.moderatorclient.ui.domain.TutorialCategoryFX;
3636
import com.faforever.moderatorclient.ui.domain.TutorialFx;
37+
import com.faforever.moderatorclient.ui.domain.UniqueIdAssignmentFx;
3738
import com.faforever.moderatorclient.ui.domain.UniqueIdFx;
3839
import com.faforever.moderatorclient.ui.domain.UserGroupFX;
3940
import com.faforever.moderatorclient.ui.domain.UserNoteFX;
@@ -600,7 +601,7 @@ public static void buildUserTableView(PlatformService platformService, TableView
600601
accountLinkColumn.setCellValueFactory(o -> Bindings.createStringBinding(() ->
601602
o.getValue().getAccountLinks().stream().map(accountLink -> "%s - %s".formatted(accountLink.getServiceType(), accountLink.getServiceId()))
602603
.collect(Collectors.joining("\n")),
603-
o.getValue().getUniqueIds()));
604+
o.getValue().getUniqueIdAssignments()));
604605
accountLinkColumn.setMinWidth(150);
605606
tableView.getColumns().add(accountLinkColumn);
606607
extractors.put(accountLinkColumn, playerFX -> playerFX.getAccountLinks().stream().map(AccountLinkFx::getServiceId).collect(Collectors.toList()));
@@ -655,95 +656,163 @@ protected void updateItem(PlayerFX item, boolean empty) {
655656
}
656657

657658
if (showUidData) {
659+
TableColumn<PlayerFX, String> uidCreatedAt = new TableColumn<>("UID created");
660+
uidCreatedAt.setCellValueFactory(o -> Bindings.createStringBinding(() ->
661+
o.getValue().getUniqueIdAssignments().stream()
662+
.map(UniqueIdAssignmentFx::getCreateTime)
663+
.map(DateTimeFormatter.ISO_LOCAL_DATE_TIME::format)
664+
.collect(Collectors.joining("\n")),
665+
o.getValue().getUniqueIdAssignments()));
666+
uidCreatedAt.setMinWidth(200);
667+
tableView.getColumns().add(uidCreatedAt);
668+
extractors.put(uidCreatedAt, playerFX -> playerFX.getUniqueIdAssignments().stream()
669+
.map(UniqueIdAssignmentFx::getCreateTime)
670+
.map(DateTimeFormatter.ISO_LOCAL_DATE_TIME::format)
671+
.collect(Collectors.toList()));
672+
673+
TableColumn<PlayerFX, String> uidLastUsedAt = new TableColumn<>("UID last used");
674+
uidLastUsedAt.setCellValueFactory(o -> Bindings.createStringBinding(() ->
675+
o.getValue().getUniqueIdAssignments().stream()
676+
.map(UniqueIdAssignmentFx::getUpdateTime)
677+
.map(DateTimeFormatter.ISO_LOCAL_DATE_TIME::format)
678+
.collect(Collectors.joining("\n")),
679+
o.getValue().getUniqueIdAssignments()));
680+
uidLastUsedAt.setMinWidth(200);
681+
tableView.getColumns().add(uidLastUsedAt);
682+
extractors.put(uidLastUsedAt, playerFX -> playerFX.getUniqueIdAssignments().stream()
683+
.map(UniqueIdAssignmentFx::getUpdateTime)
684+
.map(DateTimeFormatter.ISO_LOCAL_DATE_TIME::format)
685+
.collect(Collectors.toList()));
686+
658687
TableColumn<PlayerFX, String> hashColumn = new TableColumn<>("Hash");
659688
hashColumn.setCellValueFactory(o -> Bindings.createStringBinding(() ->
660-
o.getValue().getUniqueIds().stream().map(UniqueIdFx::getHash)
689+
o.getValue().getUniqueIdAssignments().stream()
690+
.map(UniqueIdAssignmentFx::getUniqueId)
691+
.map(UniqueIdFx::getHash)
661692
.collect(Collectors.joining("\n")),
662-
o.getValue().getUniqueIds()));
693+
o.getValue().getUniqueIdAssignments()));
663694
hashColumn.setMinWidth(200);
664695
tableView.getColumns().add(hashColumn);
665-
extractors.put(hashColumn, playerFX -> playerFX.getUniqueIds().stream().map(UniqueIdFx::getHash).collect(Collectors.toList()));
696+
extractors.put(hashColumn, playerFX -> playerFX.getUniqueIdAssignments().stream()
697+
.map(UniqueIdAssignmentFx::getUniqueId)
698+
.map(UniqueIdFx::getHash).collect(Collectors.toList()));
666699

667700
TableColumn<PlayerFX, String> uuidColumn = new TableColumn<>("UUID");
668701
uuidColumn.setCellValueFactory(o -> Bindings.createStringBinding(() ->
669-
o.getValue().getUniqueIds().stream().map(UniqueIdFx::getUuid)
702+
o.getValue().getUniqueIdAssignments().stream()
703+
.map(UniqueIdAssignmentFx::getUniqueId)
704+
.map(UniqueIdFx::getUuid)
670705
.collect(Collectors.joining("\n")),
671-
o.getValue().getUniqueIds()));
706+
o.getValue().getUniqueIdAssignments()));
672707
uuidColumn.setMinWidth(200);
673708
tableView.getColumns().add(uuidColumn);
674-
extractors.put(uuidColumn, playerFX -> playerFX.getUniqueIds().stream().map(UniqueIdFx::getUuid).collect(Collectors.toList()));
709+
extractors.put(uuidColumn, playerFX -> playerFX.getUniqueIdAssignments().stream()
710+
.map(UniqueIdAssignmentFx::getUniqueId)
711+
.map(UniqueIdFx::getUuid).collect(Collectors.toList()));
675712

676713
TableColumn<PlayerFX, String> memorySerialColumn = new TableColumn<>("Memory S/N");
677714
memorySerialColumn.setCellValueFactory(o -> Bindings.createStringBinding(() ->
678-
o.getValue().getUniqueIds().stream().map(UniqueIdFx::getMemorySerialNumber)
715+
o.getValue().getUniqueIdAssignments().stream()
716+
.map(UniqueIdAssignmentFx::getUniqueId)
717+
.map(UniqueIdFx::getMemorySerialNumber)
679718
.collect(Collectors.joining("\n")),
680-
o.getValue().getUniqueIds()));
719+
o.getValue().getUniqueIdAssignments()));
681720
memorySerialColumn.setMinWidth(200);
682721
tableView.getColumns().add(memorySerialColumn);
683-
extractors.put(memorySerialColumn, playerFX -> playerFX.getUniqueIds().stream().map(UniqueIdFx::getMemorySerialNumber).collect(Collectors.toList()));
722+
extractors.put(memorySerialColumn, playerFX -> playerFX.getUniqueIdAssignments().stream()
723+
.map(UniqueIdAssignmentFx::getUniqueId)
724+
.map(UniqueIdFx::getMemorySerialNumber).collect(Collectors.toList()));
684725

685726
TableColumn<PlayerFX, String> deviceIdColumn = new TableColumn<>("Device ID");
686727
deviceIdColumn.setCellValueFactory(o -> Bindings.createStringBinding(() ->
687-
o.getValue().getUniqueIds().stream().map(UniqueIdFx::getDeviceId)
728+
o.getValue().getUniqueIdAssignments().stream()
729+
.map(UniqueIdAssignmentFx::getUniqueId)
730+
.map(UniqueIdFx::getDeviceId)
688731
.collect(Collectors.joining("\n")),
689-
o.getValue().getUniqueIds()));
732+
o.getValue().getUniqueIdAssignments()));
690733
deviceIdColumn.setMinWidth(200);
691734
tableView.getColumns().add(deviceIdColumn);
692-
extractors.put(deviceIdColumn, playerFX -> playerFX.getUniqueIds().stream().map(UniqueIdFx::getDeviceId).collect(Collectors.toList()));
735+
extractors.put(deviceIdColumn, playerFX -> playerFX.getUniqueIdAssignments().stream()
736+
.map(UniqueIdAssignmentFx::getUniqueId)
737+
.map(UniqueIdFx::getDeviceId).collect(Collectors.toList()));
693738

694739
TableColumn<PlayerFX, String> manufacturerColumn = new TableColumn<>("Manufacturer");
695740
manufacturerColumn.setCellValueFactory(o -> Bindings.createStringBinding(() ->
696-
o.getValue().getUniqueIds().stream().map(UniqueIdFx::getManufacturer)
741+
o.getValue().getUniqueIdAssignments().stream()
742+
.map(UniqueIdAssignmentFx::getUniqueId)
743+
.map(UniqueIdFx::getManufacturer)
697744
.collect(Collectors.joining("\n")),
698-
o.getValue().getUniqueIds()));
745+
o.getValue().getUniqueIdAssignments()));
699746
manufacturerColumn.setMinWidth(200);
700747
tableView.getColumns().add(manufacturerColumn);
701-
extractors.put(manufacturerColumn, playerFX -> playerFX.getUniqueIds().stream().map(UniqueIdFx::getManufacturer).collect(Collectors.toList()));
748+
extractors.put(manufacturerColumn, playerFX -> playerFX.getUniqueIdAssignments().stream()
749+
.map(UniqueIdAssignmentFx::getUniqueId)
750+
.map(UniqueIdFx::getManufacturer).collect(Collectors.toList()));
702751

703752
TableColumn<PlayerFX, String> cpuNameColumn = new TableColumn<>("Cpu Name");
704753
cpuNameColumn.setCellValueFactory(o -> Bindings.createStringBinding(() ->
705-
o.getValue().getUniqueIds().stream().map(UniqueIdFx::getName)
754+
o.getValue().getUniqueIdAssignments().stream()
755+
.map(UniqueIdAssignmentFx::getUniqueId)
756+
.map(UniqueIdFx::getName)
706757
.collect(Collectors.joining("\n")),
707-
o.getValue().getUniqueIds()));
758+
o.getValue().getUniqueIdAssignments()));
708759
cpuNameColumn.setMinWidth(200);
709760
tableView.getColumns().add(cpuNameColumn);
710-
extractors.put(cpuNameColumn, playerFX -> playerFX.getUniqueIds().stream().map(UniqueIdFx::getName).collect(Collectors.toList()));
761+
extractors.put(cpuNameColumn, playerFX -> playerFX.getUniqueIdAssignments().stream()
762+
.map(UniqueIdAssignmentFx::getUniqueId)
763+
.map(UniqueIdFx::getName).collect(Collectors.toList()));
711764

712765
TableColumn<PlayerFX, String> processorIdColumn = new TableColumn<>("Processor Id");
713766
processorIdColumn.setCellValueFactory(o -> Bindings.createStringBinding(() ->
714-
o.getValue().getUniqueIds().stream().map(UniqueIdFx::getProcessorId)
767+
o.getValue().getUniqueIdAssignments().stream()
768+
.map(UniqueIdAssignmentFx::getUniqueId)
769+
.map(UniqueIdFx::getProcessorId)
715770
.collect(Collectors.joining("\n")),
716-
o.getValue().getUniqueIds()));
771+
o.getValue().getUniqueIdAssignments()));
717772
processorIdColumn.setMinWidth(200);
718773
tableView.getColumns().add(processorIdColumn);
719-
extractors.put(processorIdColumn, playerFX -> playerFX.getUniqueIds().stream().map(UniqueIdFx::getProcessorId).collect(Collectors.toList()));
774+
extractors.put(processorIdColumn, playerFX -> playerFX.getUniqueIdAssignments().stream()
775+
.map(UniqueIdAssignmentFx::getUniqueId)
776+
.map(UniqueIdFx::getProcessorId).collect(Collectors.toList()));
720777

721778
TableColumn<PlayerFX, String> biosVersionColumn = new TableColumn<>("BIOS Version");
722779
biosVersionColumn.setCellValueFactory(o -> Bindings.createStringBinding(() ->
723-
o.getValue().getUniqueIds().stream().map(UniqueIdFx::getSMBIOSBIOSVersion)
780+
o.getValue().getUniqueIdAssignments().stream()
781+
.map(UniqueIdAssignmentFx::getUniqueId)
782+
.map(UniqueIdFx::getSMBIOSBIOSVersion)
724783
.collect(Collectors.joining("\n")),
725-
o.getValue().getUniqueIds()));
784+
o.getValue().getUniqueIdAssignments()));
726785
biosVersionColumn.setMinWidth(200);
727786
tableView.getColumns().add(biosVersionColumn);
728-
extractors.put(biosVersionColumn, playerFX -> playerFX.getUniqueIds().stream().map(UniqueIdFx::getSMBIOSBIOSVersion).collect(Collectors.toList()));
787+
extractors.put(biosVersionColumn, playerFX -> playerFX.getUniqueIdAssignments().stream()
788+
.map(UniqueIdAssignmentFx::getUniqueId)
789+
.map(UniqueIdFx::getSMBIOSBIOSVersion).collect(Collectors.toList()));
729790

730791
TableColumn<PlayerFX, String> serialColumn = new TableColumn<>("S/N");
731792
serialColumn.setCellValueFactory(o -> Bindings.createStringBinding(() ->
732-
o.getValue().getUniqueIds().stream().map(UniqueIdFx::getSerialNumber)
793+
o.getValue().getUniqueIdAssignments().stream()
794+
.map(UniqueIdAssignmentFx::getUniqueId)
795+
.map(UniqueIdFx::getSerialNumber)
733796
.collect(Collectors.joining("\n")),
734-
o.getValue().getUniqueIds()));
797+
o.getValue().getUniqueIdAssignments()));
735798
serialColumn.setMinWidth(200);
736799
tableView.getColumns().add(serialColumn);
737-
extractors.put(serialColumn, playerFX -> playerFX.getUniqueIds().stream().map(UniqueIdFx::getSerialNumber).collect(Collectors.toList()));
800+
extractors.put(serialColumn, playerFX -> playerFX.getUniqueIdAssignments().stream()
801+
.map(UniqueIdAssignmentFx::getUniqueId)
802+
.map(UniqueIdFx::getSerialNumber).collect(Collectors.toList()));
738803

739804
TableColumn<PlayerFX, String> volumeSerialNumber = new TableColumn<>("Volume S/N");
740805
volumeSerialNumber.setCellValueFactory(o -> Bindings.createStringBinding(() ->
741-
o.getValue().getUniqueIds().stream().map(UniqueIdFx::getVolumeSerialNumber)
806+
o.getValue().getUniqueIdAssignments().stream()
807+
.map(UniqueIdAssignmentFx::getUniqueId)
808+
.map(UniqueIdFx::getVolumeSerialNumber)
742809
.collect(Collectors.joining("\n")),
743-
o.getValue().getUniqueIds()));
810+
o.getValue().getUniqueIdAssignments()));
744811
volumeSerialNumber.setMinWidth(200);
745812
tableView.getColumns().add(volumeSerialNumber);
746-
extractors.put(volumeSerialNumber, playerFX -> playerFX.getUniqueIds().stream().map(UniqueIdFx::getVolumeSerialNumber).collect(Collectors.toList()));
813+
extractors.put(volumeSerialNumber, playerFX -> playerFX.getUniqueIdAssignments().stream()
814+
.map(UniqueIdAssignmentFx::getUniqueId)
815+
.map(UniqueIdFx::getVolumeSerialNumber).collect(Collectors.toList()));
747816
}
748817

749818
ContextMenu contextMenu = applyCopyContextMenus(tableView, extractors);

0 commit comments

Comments
 (0)