Skip to content

Commit

Permalink
Merge branch 'release/0.7.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
Brutus5000 committed Jun 19, 2019
2 parents 7da8fc1 + 50713ea commit 0984e28
Show file tree
Hide file tree
Showing 12 changed files with 881 additions and 178 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<groupId>com.faforever</groupId>
<artifactId>faf-moderator-client</artifactId>
<version>0.6.1</version>
<version>0.7.0</version>
<packaging>jar</packaging>

<name>faf-moderator-client</name>
Expand All @@ -23,7 +23,7 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>

<jitpack.faf-java-commons.version>81f4199c02408b43e43a090280eaf876db96b8ba</jitpack.faf-java-commons.version>
<jitpack.faf-java-commons.version>9d371513</jitpack.faf-java-commons.version>
<jitpack.nocatch.version>1.1</jitpack.nocatch.version>
<jitpack.q-builders.version>1.6</jitpack.q-builders.version>
<jitpack.jasminb.jsonapi-converter.version>0.8</jitpack.jasminb.jsonapi-converter.version>
Expand Down
124 changes: 124 additions & 0 deletions src/main/java/com/faforever/moderatorclient/api/domain/ModService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
package com.faforever.moderatorclient.api.domain;

import com.faforever.commons.api.dto.Mod;
import com.faforever.commons.api.dto.ModVersion;
import com.faforever.commons.api.elide.ElideNavigator;
import com.faforever.commons.api.elide.ElideNavigatorOnCollection;
import com.faforever.moderatorclient.api.FafApiCommunicationService;
import com.faforever.moderatorclient.mapstruct.ModVersionMapper;
import com.faforever.moderatorclient.ui.domain.ModVersionFX;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

@Slf4j
@Service
public class ModService {
private final FafApiCommunicationService communicationService;
private final ModVersionMapper modVersionMapper;

public ModService(FafApiCommunicationService communicationService, ModVersionMapper modVersionMapper) {
this.communicationService = communicationService;
this.modVersionMapper = modVersionMapper;
}


private List<Mod> findModsByAttribute(@NotNull String attribute, @NotNull String pattern, boolean excludeHidden) {
log.debug("Searching for mods by attribute '{}' with pattern: {}", attribute, pattern);
ElideNavigatorOnCollection<ModVersion> routeBuilder = ElideNavigator.of(ModVersion.class)
.collection()
.addIncludeOnCollection("mod")
.addIncludeOnCollection("mod.uploader");

if (excludeHidden) {
routeBuilder.addFilter(ElideNavigator.qBuilder().string("mod." + attribute).eq(pattern)
.and().bool("hidden").isFalse());
} else {
routeBuilder.addFilter(ElideNavigator.qBuilder().string("mod." + attribute).eq(pattern));
}

List<Mod> result = communicationService.getAll(routeBuilder).stream()
.map(ModVersion::getMod)
.distinct()
.collect(Collectors.toList());

// filter empty mapVersions that were created by map relationships
for (Mod mod : result) {
for (ModVersion modVersion : new ArrayList<>(mod.getVersions())) {
if (modVersion.getMod() == null) {
mod.getVersions().remove(modVersion);
}
}
}

log.trace("found {} mods", result.size());
return result;
}

public List<Mod> findModsByName(@NotNull String pattern, boolean excludeHidden) {
return findModsByAttribute("displayName", pattern, excludeHidden);
}

public List<Mod> findModsByAuthorId(@NotNull String pattern, boolean excludeHidden) {
return findModsByAttribute("uploader.id", pattern, excludeHidden);
}

public List<Mod> findModsByAuthorName(@NotNull String pattern, boolean excludeHidden) {
return findModsByAttribute("uploader.login", pattern, excludeHidden);
}

public List<Mod> findMods(String modNamePattern) {
log.debug("Searching for mods with pattern: {}", modNamePattern);
ElideNavigatorOnCollection<Mod> routeBuilder = ElideNavigator.of(Mod.class)
.collection()
.addIncludeOnCollection("versions");

if (modNamePattern != null && modNamePattern.length() > 0) {
routeBuilder.addFilter(ElideNavigator.qBuilder().string("displayName").eq(modNamePattern));
}

List<Mod> result = communicationService.getAll(routeBuilder);
log.trace("found {} mods", result.size());
return result;
}

public void patchModVersion(ModVersionFX modVersionFX) {
patchModVersion(modVersionMapper.map(modVersionFX));
}

public void patchModVersion(ModVersion modVersion) {
log.debug("Updating modVersion id: {}", modVersion.getId());
communicationService.patch(ElideNavigator.of(modVersion),
(ModVersion) new ModVersion()
.setHidden(modVersion.isHidden())
.setRanked(modVersion.isRanked())
.setId(modVersion.getId()
));
}

public boolean doesModVersionExist(int id) {
log.debug("Requesting Modversion with id: {}", id);
return !communicationService.getAll(ElideNavigator.of(ModVersion.class)
.collection()
.addFilter(ElideNavigator.qBuilder().string("id").eq(String.valueOf(id))))
.isEmpty();
}

public List<ModVersionFX> findLatestModVersions() {
log.debug("Searching for latest modVersions ");
ElideNavigatorOnCollection<ModVersion> navigator = ElideNavigator.of(ModVersion.class)
.collection()
.addIncludeOnCollection("mod")
.addIncludeOnCollection("mod.uploader")
.addSortingRule("id", false);

List<ModVersion> result = communicationService.getPage(navigator, 50, 1, Collections.emptyMap());
log.trace("found {} modVersions", result.size());
return modVersionMapper.mapToFX(result);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.faforever.moderatorclient.mapstruct;

import com.faforever.commons.api.dto.Mod;
import com.faforever.moderatorclient.ui.domain.ModFX;
import org.mapstruct.Mapper;

import java.util.List;

@Mapper(uses = {JavaFXMapper.class, ModVersionMapper.class, PlayerMapper.class, CycleAvoidingMappingContext.class})
public abstract class ModMapper {
public abstract ModFX map(Mod dto);

public abstract Mod map(ModFX fxBean);

public abstract List<ModFX> map(List<Mod> dtoList);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.faforever.moderatorclient.mapstruct;

import com.faforever.commons.api.dto.ModVersion;
import com.faforever.moderatorclient.ui.domain.ModVersionFX;
import org.mapstruct.Mapper;

import java.util.List;

@Mapper(uses = {JavaFXMapper.class, ModMapper.class, CycleAvoidingMappingContext.class})
public abstract class ModVersionMapper {
public abstract ModVersionFX map(ModVersion dto);

public abstract ModVersion map(ModVersionFX fxBean);

public abstract List<ModVersionFX> mapToFX(List<ModVersion> dtoList);

public abstract List<ModVersion> mapToDTO(List<ModVersionFX> fxBeanList);
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ public class MainController implements Controller<TabPane> {
private UserManagementController userManagementController;
private LadderMapPoolController ladderMapPoolController;
private MapVaultController mapVaultController;
private ModVaultController modVaultController;
private AvatarsController avatarsController;
private RecentActivityController recentActivityController;
private DomainBlacklistController domainBlacklistController;
Expand All @@ -66,6 +67,7 @@ public void initializeAfterLogin() {
initUserManagementTab();
initLadderMapPoolTab();
initMapVaultTab();
initModVaultTab();
initAvatarTab();
initRecentActivityTab();
initDomainBlacklistTab();
Expand Down Expand Up @@ -109,6 +111,11 @@ private void initMapVaultTab() {
mapVaultTab.setContent(mapVaultController.getRoot());
}

private void initModVaultTab() {
modVaultController = uiService.loadFxml("ui/main_window/modVault.fxml");
modVaultTab.setContent(modVaultController.getRoot());
}

private void initAvatarTab() {
avatarsController = uiService.loadFxml("ui/main_window/avatars.fxml");
avatarsTab.setContent(avatarsController.getRoot());
Expand Down
Loading

0 comments on commit 0984e28

Please sign in to comment.