partey woka update

This commit is contained in:
_Bastler 2022-03-13 15:50:37 +01:00
parent 1c85f2b0fd
commit 8583bec0c6
19 changed files with 2692 additions and 84 deletions

View File

@ -80,6 +80,18 @@ public class UserManager implements UserDataProvider {
return userRepository.findOne(qUser.username.equalsIgnoreCase(username)).orElse(null); return userRepository.findOne(qUser.username.equalsIgnoreCase(username)).orElse(null);
} }
/**
* Gets the by bstly email.
*
* @param email the email
* @return the by bstly email
*/
public User getByBstlyEmail(String email) {
String username = email.replace("@"
+ userEmailDomain, "");
return getByUsername(username);
}
/** /**
* Gets the by reset token. * Gets the by reset token.
* *

1863
partey/resources/woka.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -21,14 +21,18 @@ import com.beust.jcommander.internal.Lists;
import de.bstly.we.businesslogic.PermissionManager; import de.bstly.we.businesslogic.PermissionManager;
import de.bstly.we.businesslogic.UserManager; import de.bstly.we.businesslogic.UserManager;
import de.bstly.we.model.User; import de.bstly.we.model.User;
import de.bstly.we.partey.api.controller.model.CharacterTexture;
import de.bstly.we.partey.api.controller.model.MemberData; import de.bstly.we.partey.api.controller.model.MemberData;
import de.bstly.we.partey.api.controller.support.DebugLogger; import de.bstly.we.partey.api.controller.support.DebugLogger;
import de.bstly.we.partey.api.controller.support.WokaListManager;
import de.bstly.we.partey.api.security.ParteyApiAuthentication; import de.bstly.we.partey.api.security.ParteyApiAuthentication;
import de.bstly.we.partey.businesslogic.ParteyMapManager; import de.bstly.we.partey.businesslogic.ParteyMapManager;
import de.bstly.we.partey.businesslogic.ParteyPermissions; import de.bstly.we.partey.businesslogic.ParteyPermissions;
import de.bstly.we.partey.businesslogic.ParteyUserTagManager; import de.bstly.we.partey.businesslogic.ParteyUserTagManager;
import de.bstly.we.partey.businesslogic.ParteyUserTexturesManager;
import de.bstly.we.partey.businesslogic.model.Room; import de.bstly.we.partey.businesslogic.model.Room;
import de.bstly.we.partey.model.ParteyUserTag; import de.bstly.we.partey.model.ParteyUserTag;
import de.bstly.we.partey.model.ParteyUserTextures;
/** /**
* The Class RoomController. * The Class RoomController.
@ -46,7 +50,11 @@ public class RoomController extends DebugLogger {
@Autowired @Autowired
private ParteyUserTagManager parteyUserTagManager; private ParteyUserTagManager parteyUserTagManager;
@Autowired @Autowired
private ParteyUserTexturesManager parteyUserTexturesManager;
@Autowired
private UserManager userManager; private UserManager userManager;
@Autowired
private WokaListManager wokaListManager;
@Value("${we.bstly.partey.visitCardUrlFormat:}") @Value("${we.bstly.partey.visitCardUrlFormat:}")
private String visitCardUrlFormat; private String visitCardUrlFormat;
@ -57,13 +65,16 @@ public class RoomController extends DebugLogger {
* Access. * Access.
* *
* @param userIdentifier the user identifier * @param userIdentifier the user identifier
* @param roomId the room id * @param roomId the room id
* @param request the request * @param characterLayers the character layers
* @param ipAddress the ip address
* @param request the request
* @return the member data * @return the member data
*/ */
@GetMapping("/access") @GetMapping("/access")
public MemberData access(@RequestParam("userIdentifier") String userIdentifier, public MemberData access(@RequestParam("userIdentifier") String userIdentifier,
@RequestParam("roomId") Optional<String> roomId, @RequestParam("roomId") Optional<String> roomId,
@RequestParam("characterLayers[]") Optional<String[]> characterLayers,
@RequestParam("ipAddress") Optional<String> ipAddress, HttpServletRequest request) { @RequestParam("ipAddress") Optional<String> ipAddress, HttpServletRequest request) {
parteyApiAuthentication.authenticateRequest(request); parteyApiAuthentication.authenticateRequest(request);
@ -78,29 +89,81 @@ public class RoomController extends DebugLogger {
} }
MemberData memberData = new MemberData(); MemberData memberData = new MemberData();
memberData.setEmail("");
memberData.setUserRoomToken("");
memberData.setUserUuid(userIdentifier); memberData.setUserUuid(userIdentifier);
memberData.setAnonymous(true); memberData.setAnonymous(true);
memberData.setTags(Lists.newArrayList()); memberData.setTags(Lists.newArrayList());
memberData.setTextures(Lists.newArrayList());
boolean setTextures = false;
User user = null;
try { try {
Long userId = Long.parseLong(userIdentifier); Long userId = Long.parseLong(userIdentifier);
User user = userManager.get(userId); user = userManager.get(userId);
if (user != null && permissionManager.isFullUser(userId) } catch (NumberFormatException e) {
&& permissionManager.hasPermission(userId, ParteyPermissions.PARTEY)) { user = userManager.getByUsername(userIdentifier);
if (user == null) {
user = userManager.getByBstlyEmail(userIdentifier);
}
}
if (StringUtils.hasText(visitCardUrlFormat)) { if (user != null && permissionManager.isFullUser(user.getId())
memberData && permissionManager.hasPermission(user.getId(), ParteyPermissions.PARTEY)) {
.setVisitCardUrl(String.format(visitCardUrlFormat, user.getUsername()));
}
memberData.setAnonymous(false); ParteyUserTextures parteyUserTextures = parteyUserTexturesManager
.getByTarget(user.getId());
for (ParteyUserTag parteyUserTag : parteyUserTagManager if (characterLayers.isPresent()) {
.getNonExpiredForUsername(user.getUsername())) { if (parteyUserTextures == null) {
memberData.getTags().add(parteyUserTag.getTag()); parteyUserTextures = new ParteyUserTextures();
parteyUserTextures.setTarget(user.getId());
parteyUserTextures.setUsername(user.getUsername());
parteyUserTextures.setTextures(Lists.newArrayList(characterLayers.get()));
parteyUserTextures = parteyUserTexturesManager.save(parteyUserTextures);
} else {
if (parteyUserTextures.getTextures() == null) {
parteyUserTextures.setTextures(Lists.newArrayList());
}
if (parteyUserTextures.getTextures().size() != characterLayers.get().length
|| !parteyUserTextures.getTextures()
.containsAll(Lists.newArrayList(characterLayers.get()))) {
parteyUserTextures.setTextures(Lists.newArrayList(characterLayers.get()));
parteyUserTextures = parteyUserTexturesManager.save(parteyUserTextures);
}
}
}
if (StringUtils.hasText(visitCardUrlFormat)) {
memberData.setVisitCardUrl(String.format(visitCardUrlFormat, user.getUsername()));
}
memberData.setAnonymous(false);
memberData.setEmail(userManager.getBstlyEmail(user.getUsername()));
if (parteyUserTextures != null && parteyUserTextures.getTextures() != null) {
for (String layer : parteyUserTextures.getTextures()) {
CharacterTexture characterTexture = wokaListManager.getCharacterTexture(layer);
if (characterTexture != null) {
memberData.getTextures().add(characterTexture);
setTextures = true;
}
}
}
for (ParteyUserTag parteyUserTag : parteyUserTagManager
.getNonExpiredForUsername(user.getUsername())) {
memberData.getTags().add(parteyUserTag.getTag());
}
}
if (!setTextures && characterLayers.isPresent()) {
for (String layer : characterLayers.get()) {
CharacterTexture characterTexture = wokaListManager.getCharacterTexture(layer);
if (characterTexture != null) {
memberData.getTextures().add(characterTexture);
} }
} }
} catch (NumberFormatException e) {
// ignore
} }
debugPrintResponse(request, Optional.of(memberData)); debugPrintResponse(request, Optional.of(memberData));

View File

@ -0,0 +1,49 @@
/**
*
*/
package de.bstly.we.partey.api.controller;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import de.bstly.we.partey.api.controller.model.WokaLayer;
import de.bstly.we.partey.api.controller.support.DebugLogger;
import de.bstly.we.partey.api.controller.support.WokaListManager;
import de.bstly.we.partey.api.security.ParteyApiAuthentication;
/**
* The Class WokaController.
*/
@RestController
@RequestMapping("/partey/api/woka")
public class WokaController extends DebugLogger {
@Autowired
private ParteyApiAuthentication parteyApiAuthentication;
@Autowired
private WokaListManager wokaListManager;
/**
* Gets the woka list.
*
* @param roomUrl the room url
* @param request the request
* @return the woka list
*/
@GetMapping("list")
public Map<String, WokaLayer> getWokaList(@RequestParam("roomUrl") String roomUrl,
HttpServletRequest request) {
parteyApiAuthentication.authenticateRequest(request);
debugPrintRequest(request);
return wokaListManager.getWokaList();
}
}

View File

@ -8,17 +8,16 @@ package de.bstly.we.partey.api.controller.model;
*/ */
public class CharacterTexture { public class CharacterTexture {
private int id; private String id;
private int level;
private String url; private String url;
private String rights; private String layer;
/** /**
* Gets the id. * Gets the id.
* *
* @return the id * @return the id
*/ */
public int getId() { public String getId() {
return id; return id;
} }
@ -27,28 +26,10 @@ public class CharacterTexture {
* *
* @param id the new id * @param id the new id
*/ */
public void setId(int id) { public void setId(String id) {
this.id = id; this.id = id;
} }
/**
* Gets the level.
*
* @return the level
*/
public int getLevel() {
return level;
}
/**
* Sets the level.
*
* @param level the new level
*/
public void setLevel(int level) {
this.level = level;
}
/** /**
* Gets the url. * Gets the url.
* *
@ -68,21 +49,21 @@ public class CharacterTexture {
} }
/** /**
* Gets the rights. * Gets the layer.
* *
* @return the rights * @return the layer
*/ */
public String getRights() { public String getLayer() {
return rights; return layer;
} }
/** /**
* Sets the rights. * Sets the layer.
* *
* @param rights the new rights * @param layer the new layer
*/ */
public void setRights(String rights) { public void setLayer(String layer) {
this.rights = rights; this.layer = layer;
} }
} }

View File

@ -25,48 +25,62 @@ public class MapDetailsData {
private String iframeAuthentication; private String iframeAuthentication;
/** /**
* @return the roomSlug * Gets the room slug.
*
* @return the room slug
*/ */
public String getRoomSlug() { public String getRoomSlug() {
return roomSlug; return roomSlug;
} }
/** /**
* @param roomSlug the roomSlug to set * Sets the room slug.
*
* @param roomSlug the new room slug
*/ */
public void setRoomSlug(String roomSlug) { public void setRoomSlug(String roomSlug) {
this.roomSlug = roomSlug; this.roomSlug = roomSlug;
} }
/** /**
* @return the mapUrl * Gets the map url.
*
* @return the map url
*/ */
public String getMapUrl() { public String getMapUrl() {
return mapUrl; return mapUrl;
} }
/** /**
* @param mapUrl the mapUrl to set * Sets the map url.
*
* @param mapUrl the new map url
*/ */
public void setMapUrl(String mapUrl) { public void setMapUrl(String mapUrl) {
this.mapUrl = mapUrl; this.mapUrl = mapUrl;
} }
/** /**
* @return the policy_type * Gets the policy type.
*
* @return the policy type
*/ */
public GameRoomPolicyTypes getPolicy_type() { public GameRoomPolicyTypes getPolicy_type() {
return policy_type; return policy_type;
} }
/** /**
* @param policy_type the policy_type to set * Sets the policy type.
*
* @param policy_type the new policy type
*/ */
public void setPolicy_type(GameRoomPolicyTypes policy_type) { public void setPolicy_type(GameRoomPolicyTypes policy_type) {
this.policy_type = policy_type; this.policy_type = policy_type;
} }
/** /**
* Gets the tags.
*
* @return the tags * @return the tags
*/ */
public List<String> getTags() { public List<String> getTags() {
@ -74,13 +88,17 @@ public class MapDetailsData {
} }
/** /**
* @param tags the tags to set * Sets the tags.
*
* @param tags the new tags
*/ */
public void setTags(List<String> tags) { public void setTags(List<String> tags) {
this.tags = tags; this.tags = tags;
} }
/** /**
* Gets the textures.
*
* @return the textures * @return the textures
*/ */
public List<CharacterTexture> getTextures() { public List<CharacterTexture> getTextures() {
@ -88,41 +106,53 @@ public class MapDetailsData {
} }
/** /**
* @param textures the textures to set * Sets the textures.
*
* @param textures the new textures
*/ */
public void setTextures(List<CharacterTexture> textures) { public void setTextures(List<CharacterTexture> textures) {
this.textures = textures; this.textures = textures;
} }
/** /**
* @return the contactPage * Gets the contact page.
*
* @return the contact page
*/ */
public String getContactPage() { public String getContactPage() {
return contactPage; return contactPage;
} }
/** /**
* @param contactPage the contactPage to set * Sets the contact page.
*
* @param contactPage the new contact page
*/ */
public void setContactPage(String contactPage) { public void setContactPage(String contactPage) {
this.contactPage = contactPage; this.contactPage = contactPage;
} }
/** /**
* @return the authenticationMandatory * Checks if is authentication mandatory.
*
* @return true, if is authentication mandatory
*/ */
public boolean isAuthenticationMandatory() { public boolean isAuthenticationMandatory() {
return authenticationMandatory; return authenticationMandatory;
} }
/** /**
* @param authenticationMandatory the authenticationMandatory to set * Sets the authentication mandatory.
*
* @param authenticationMandatory the new authentication mandatory
*/ */
public void setAuthenticationMandatory(boolean authenticationMandatory) { public void setAuthenticationMandatory(boolean authenticationMandatory) {
this.authenticationMandatory = authenticationMandatory; this.authenticationMandatory = authenticationMandatory;
} }
/** /**
* Gets the group.
*
* @return the group * @return the group
*/ */
public String getGroup() { public String getGroup() {
@ -130,21 +160,27 @@ public class MapDetailsData {
} }
/** /**
* @param group the group to set * Sets the group.
*
* @param group the new group
*/ */
public void setGroup(String group) { public void setGroup(String group) {
this.group = group; this.group = group;
} }
/** /**
* @return the iframeAuthentication * Gets the iframe authentication.
*
* @return the iframe authentication
*/ */
public String getIframeAuthentication() { public String getIframeAuthentication() {
return iframeAuthentication; return iframeAuthentication;
} }
/** /**
* @param iframeAuthentication the iframeAuthentication to set * Sets the iframe authentication.
*
* @param iframeAuthentication the new iframe authentication
*/ */
public void setIframeAuthentication(String iframeAuthentication) { public void setIframeAuthentication(String iframeAuthentication) {
this.iframeAuthentication = iframeAuthentication; this.iframeAuthentication = iframeAuthentication;

View File

@ -12,12 +12,32 @@ import com.beust.jcommander.internal.Lists;
*/ */
public class MemberData { public class MemberData {
private String email;
private String userUuid; private String userUuid;
private List<String> tags = Lists.newArrayList(); private List<String> tags = Lists.newArrayList();
private String visitCardUrl; private String visitCardUrl;
private List<CharacterTexture> textures = Lists.newArrayList(); private List<CharacterTexture> textures = Lists.newArrayList();
private List<Object> messages = Lists.newArrayList(); private List<Object> messages = Lists.newArrayList();
private boolean anonymous; private boolean anonymous;
private String userRoomToken;
/**
* Gets the email.
*
* @return the email
*/
public String getEmail() {
return email;
}
/**
* Sets the email.
*
* @param email the new email
*/
public void setEmail(String email) {
this.email = email;
}
/** /**
* Gets the user uuid. * Gets the user uuid.
@ -127,4 +147,22 @@ public class MemberData {
this.anonymous = anonymous; this.anonymous = anonymous;
} }
/**
* Gets the user room token.
*
* @return the user room token
*/
public String getUserRoomToken() {
return userRoomToken;
}
/**
* Sets the user room token.
*
* @param userRoomToken the new user room token
*/
public void setUserRoomToken(String userRoomToken) {
this.userRoomToken = userRoomToken;
}
} }

View File

@ -0,0 +1,71 @@
/**
*
*/
package de.bstly.we.partey.api.controller.model;
import java.util.List;
/**
* The Class WokaCollection.
*/
public class WokaCollection {
private String name;
private int position;
private List<WokaTexture> textures;
/**
* Gets the name.
*
* @return the name
*/
public String getName() {
return name;
}
/**
* Sets the name.
*
* @param name the new name
*/
public void setName(String name) {
this.name = name;
}
/**
* Gets the position.
*
* @return the position
*/
public int getPosition() {
return position;
}
/**
* Sets the position.
*
* @param position the new position
*/
public void setPosition(int position) {
this.position = position;
}
/**
* Gets the textures.
*
* @return the textures
*/
public List<WokaTexture> getTextures() {
return textures;
}
/**
* Sets the textures.
*
* @param textures the new textures
*/
public void setTextures(List<WokaTexture> textures) {
this.textures = textures;
}
}

View File

@ -0,0 +1,52 @@
/**
*
*/
package de.bstly.we.partey.api.controller.model;
import java.util.List;
/**
* The Class WokaLayer.
*/
public class WokaLayer {
private boolean required;
private List<WokaCollection> collections;
/**
* Checks if is required.
*
* @return true, if is required
*/
public boolean isRequired() {
return required;
}
/**
* Sets the required.
*
* @param required the new required
*/
public void setRequired(boolean required) {
this.required = required;
}
/**
* Gets the collections.
*
* @return the collections
*/
public List<WokaCollection> getCollections() {
return collections;
}
/**
* Sets the collections.
*
* @param collections the new collections
*/
public void setCollections(List<WokaCollection> collections) {
this.collections = collections;
}
}

View File

@ -0,0 +1,88 @@
/**
*
*/
package de.bstly.we.partey.api.controller.model;
/**
* The Class WokaTexture.
*/
public class WokaTexture {
private String id;
private String name;
private String url;
private int position;
/**
* Gets the id.
*
* @return the id
*/
public String getId() {
return id;
}
/**
* Sets the id.
*
* @param id the new id
*/
public void setId(String id) {
this.id = id;
}
/**
* Gets the name.
*
* @return the name
*/
public String getName() {
return name;
}
/**
* Sets the name.
*
* @param name the new name
*/
public void setName(String name) {
this.name = name;
}
/**
* Gets the url.
*
* @return the url
*/
public String getUrl() {
return url;
}
/**
* Sets the url.
*
* @param url the new url
*/
public void setUrl(String url) {
this.url = url;
}
/**
* Gets the position.
*
* @return the position
*/
public int getPosition() {
return position;
}
/**
* Sets the position.
*
* @param position the new position
*/
public void setPosition(int position) {
this.position = position;
}
}

View File

@ -37,21 +37,31 @@ public class DebugLogger {
* @param payload the payload * @param payload the payload
*/ */
public void debugPrintRequest(HttpServletRequest request, Optional<Object> payload) { public void debugPrintRequest(HttpServletRequest request, Optional<Object> payload) {
logger.debug( logger.debug("Request: "
"Request: " + request.getMethod().toUpperCase() + " " + request.getRequestURI()); + request.getMethod().toUpperCase()
+ " "
+ request.getRequestURI());
logger.debug("Headers:"); logger.debug("Headers:");
for (Iterator<String> it = request.getHeaderNames().asIterator(); it.hasNext();) { for (Iterator<String> it = request.getHeaderNames().asIterator(); it.hasNext();) {
String headerName = it.next(); String headerName = it.next();
logger.debug("\t" + headerName + ": " + request.getHeader(headerName)); logger.debug("\t"
+ headerName
+ ": "
+ request.getHeader(headerName));
} }
if (!request.getParameterMap().isEmpty()) { if (!request.getParameterMap().isEmpty()) {
logger.debug("Parameters:"); logger.debug("Parameters:");
for (Iterator<String> it = request.getParameterNames().asIterator(); it.hasNext();) { for (Iterator<String> it = request.getParameterNames().asIterator(); it.hasNext();) {
String parameterName = it.next(); String parameterName = it.next();
logger.debug("\t" + parameterName + ": " + request.getParameter(parameterName)); for (String value : request.getParameterValues(parameterName)) {
logger.debug("\t"
+ parameterName
+ ": "
+ value);
}
} }
} }
@ -71,7 +81,8 @@ public class DebugLogger {
*/ */
public void debugPrintResponse(HttpServletRequest response, Optional<Object> payload) { public void debugPrintResponse(HttpServletRequest response, Optional<Object> payload) {
if (payload.isPresent()) { if (payload.isPresent()) {
logger.debug("Response: " + response.getRequestURI()); logger.debug("Response: "
+ response.getRequestURI());
logger.debug("Body:"); logger.debug("Body:");
logger.debug(gson.toJson(payload.get())); logger.debug(gson.toJson(payload.get()));
logger.debug(""); logger.debug("");

View File

@ -0,0 +1,105 @@
/**
*
*/
package de.bstly.we.partey.api.controller.support;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.util.Map;
import java.util.Map.Entry;
import org.springframework.beans.factory.SmartInitializingSingleton;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Component;
import com.beust.jcommander.internal.Maps;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import de.bstly.we.businesslogic.SystemPropertyManager;
import de.bstly.we.partey.api.controller.model.CharacterTexture;
import de.bstly.we.partey.api.controller.model.WokaCollection;
import de.bstly.we.partey.api.controller.model.WokaLayer;
import de.bstly.we.partey.api.controller.model.WokaTexture;
/**
* The Class WokaListManager.
*/
@Component
public class WokaListManager implements SmartInitializingSingleton {
@Autowired
private SystemPropertyManager systemPropertyManager;
@Autowired
private ResourceLoader resourceLoader;
private Gson gson = new Gson();
private Map<String, WokaLayer> wokaList = Maps.newHashMap();
Type wokaListType = new TypeToken<Map<String, WokaLayer>>() {
}.getType();
/*
* @see org.springframework.beans.factory.SmartInitializingSingleton#afterSingletonsInstantiated()
*/
/*
* @see org.springframework.beans.factory.SmartInitializingSingleton#
* afterSingletonsInstantiated()
*/
@Override
public void afterSingletonsInstantiated() {
if (!systemPropertyManager.has("partey.woka.list")) {
try {
Resource resource = resourceLoader.getResource("classpath:woka.json");
if (resource.exists()) {
wokaList = gson.fromJson(new InputStreamReader(resource.getInputStream()),
wokaListType);
systemPropertyManager.add("partey.woka.list", gson.toJson(wokaList));
}
} catch (IOException e) {
e.printStackTrace();
}
} else {
wokaList = gson.fromJson(systemPropertyManager.get("partey.woka.list"), wokaListType);
}
}
/**
* Gets the woka list.
*
* @return the woka list
*/
public Map<String, WokaLayer> getWokaList() {
return wokaList;
}
/**
* Gets the character texture.
*
* @param id the id
* @return the character texture
*/
public CharacterTexture getCharacterTexture(String id) {
CharacterTexture characterTexture = new CharacterTexture();
for (Entry<String, WokaLayer> entry : wokaList.entrySet()) {
for (WokaCollection wokaCollection : entry.getValue().getCollections()) {
for (WokaTexture wokaTexture : wokaCollection.getTextures()) {
if (wokaTexture.getId().equals(id)) {
characterTexture.setId(id);
characterTexture.setLayer(entry.getKey());
characterTexture.setUrl(wokaTexture.getUrl());
return characterTexture;
}
}
}
}
return null;
}
}

View File

@ -0,0 +1,125 @@
/**
*
*/
package de.bstly.we.partey.businesslogic;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Component;
import com.google.common.collect.Lists;
import de.bstly.we.businesslogic.UserDataProvider;
import de.bstly.we.model.UserData;
import de.bstly.we.partey.model.ParteyUserTextures;
import de.bstly.we.partey.model.QParteyUserTextures;
import de.bstly.we.partey.repository.ParteyUserTexturesRepository;
/**
* The Class ParteyUserTexturesManager.
*/
@Component
public class ParteyUserTexturesManager implements UserDataProvider {
@Autowired
private ParteyUserTexturesRepository parteyUserTexturesRepository;
private QParteyUserTextures qParteyUserTextures = QParteyUserTextures.parteyUserTextures;
/**
* Gets the all.
*
* @param page the page
* @param size the size
* @param sortBy the sort by
* @param descending the descending
* @return the all
*/
public Page<ParteyUserTextures> getAll(int page, int size, String sortBy, boolean descending) {
PageRequest pageRequest = PageRequest.of(page, size,
descending ? Sort.by(sortBy).descending() : Sort.by(sortBy).ascending());
return parteyUserTexturesRepository.findAll(pageRequest);
}
/**
* Gets the by target.
*
* @param userId the user id
* @return the by target
*/
public ParteyUserTextures getByTarget(Long userId) {
return parteyUserTexturesRepository.findOne(qParteyUserTextures.target.eq(userId))
.orElse(null);
}
/**
* Gets the by username.
*
* @param username the username
* @return the by username
*/
public ParteyUserTextures getByUsername(String username) {
return parteyUserTexturesRepository.findOne(qParteyUserTextures.username.eq(username))
.orElse(null);
}
/**
* Save.
*
* @param parteyUserTextures the partey user textures
* @return the partey user textures
*/
public ParteyUserTextures save(ParteyUserTextures parteyUserTextures) {
return parteyUserTexturesRepository.save(parteyUserTextures);
}
/**
* Delete.
*
* @param parteyUserTag the partey user tag
*/
public void delete(ParteyUserTextures parteyUserTag) {
if (parteyUserTag != null) {
parteyUserTexturesRepository.delete(parteyUserTag);
}
}
/**
* Delete by target.
*
* @param target the target
*/
public void deleteByTarget(Long target) {
delete(getByTarget(target));
}
/*
* @see de.bstly.we.businesslogic.UserDataProvider#getId()
*/
@Override
public String getId() {
return "partey-textures";
}
/*
* @see de.bstly.we.businesslogic.UserDataProvider#getUserData(java.lang.Long)
*/
@Override
public List<UserData> getUserData(Long userId) {
List<UserData> result = Lists.newArrayList(getByTarget(userId));
return result;
}
/*
* @see de.bstly.we.businesslogic.UserDataProvider#purgeUserData(java.lang.Long)
*/
@Override
public void purgeUserData(Long userId) {
deleteByTarget(userId);
}
}

View File

@ -0,0 +1,92 @@
/**
*
*/
package de.bstly.we.partey.model;
import java.util.List;
import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
import com.google.common.collect.Lists;
import de.bstly.we.model.UserData;
/**
* The Class ParteyUserTextures.
*/
@Entity
@Table(name = "partey_user_textures")
public class ParteyUserTextures implements UserData {
@Id
private Long target;
@Column(name = "username", nullable = false)
private String username;
@ElementCollection
@LazyCollection(LazyCollectionOption.FALSE)
@CollectionTable(name = "partey_user_textures_list")
private List<String> textures = Lists.newArrayList();
/**
* Gets the target.
*
* @return the target
*/
public Long getTarget() {
return target;
}
/**
* Sets the target.
*
* @param target the new target
*/
public void setTarget(Long target) {
this.target = target;
}
/**
* Gets the username.
*
* @return the username
*/
public String getUsername() {
return username;
}
/**
* Sets the username.
*
* @param username the new username
*/
public void setUsername(String username) {
this.username = username;
}
/**
* Gets the textures.
*
* @return the textures
*/
public List<String> getTextures() {
return textures;
}
/**
* Sets the textures.
*
* @param textures the new textures
*/
public void setTextures(List<String> textures) {
this.textures = textures;
}
}

View File

@ -0,0 +1,18 @@
/**
*
*/
package de.bstly.we.partey.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.stereotype.Repository;
import de.bstly.we.partey.model.ParteyUserTextures;
/**
* The Interface ParteyUserTexturesRepository.
*/
@Repository
public interface ParteyUserTexturesRepository extends JpaRepository<ParteyUserTextures, Long>,
QuerydslPredicateExecutor<ParteyUserTextures> {
}

View File

@ -57,15 +57,15 @@ public class TimeslotController extends BaseController {
/** /**
* Gets the timeslots. * Gets the timeslots.
* *
* @param pageParameter the page parameter * @param pageParameter the page parameter
* @param sizeParameter the size parameter * @param sizeParameter the size parameter
* @param sortParameter the sort parameter * @param sortParameter the sort parameter
* @param descParameter the desc parameter * @param descParameter the desc parameter
* @param ownerParameter the owner parameter * @param ownerParameter the owner parameter
* @param afterParameter the after parameter * @param afterParameter the after parameter
* @param typeParameter the type parameter * @param typeParameter the type parameter
* @param visibilityParameter the visibility parameter * @param visibilityParameter the visibility parameter
* @param searchParameter the search parameter * @param searchParameter the search parameter
* @return the timeslots * @return the timeslots
*/ */
@PreAuthorize("isAuthenticated()") @PreAuthorize("isAuthenticated()")

View File

@ -61,7 +61,7 @@ public class TimeslotValidator implements Validator {
* Validate time. * Validate time.
* *
* @param timeslot the timeslot * @param timeslot the timeslot
* @param errors the errors * @param errors the errors
*/ */
public void validateTime(Timeslot timeslot, Errors errors) { public void validateTime(Timeslot timeslot, Errors errors) {
if (timeslot.getStarts() == null) { if (timeslot.getStarts() == null) {
@ -136,7 +136,7 @@ public class TimeslotValidator implements Validator {
* Validate type. * Validate type.
* *
* @param timeslot the timeslot * @param timeslot the timeslot
* @param errors the errors * @param errors the errors
*/ */
public void validateType(Timeslot timeslot, Errors errors) { public void validateType(Timeslot timeslot, Errors errors) {
if (timeslot.getId() != null && timeslotRepository.existsById(timeslot.getId())) { if (timeslot.getId() != null && timeslotRepository.existsById(timeslot.getId())) {
@ -162,10 +162,10 @@ public class TimeslotValidator implements Validator {
} }
/** /**
* Validate type audio. * Validate share.
* *
* @param timeslot the timeslot * @param timeslot the timeslot
* @param errors the errors * @param errors the errors
*/ */
public void validateShare(Timeslot timeslot, Errors errors) { public void validateShare(Timeslot timeslot, Errors errors) {
timeslot.setStream(null); timeslot.setStream(null);
@ -177,10 +177,10 @@ public class TimeslotValidator implements Validator {
} }
/** /**
* Validate type audio. * Validate type audio stream.
* *
* @param timeslot the timeslot * @param timeslot the timeslot
* @param errors the errors * @param errors the errors
*/ */
public void validateTypeAudioStream(Timeslot timeslot, Errors errors) { public void validateTypeAudioStream(Timeslot timeslot, Errors errors) {
timeslot.setStream(null); timeslot.setStream(null);
@ -196,10 +196,10 @@ public class TimeslotValidator implements Validator {
} }
/** /**
* Validate type video. * Validate type video stream.
* *
* @param timeslot the timeslot * @param timeslot the timeslot
* @param errors the errors * @param errors the errors
*/ */
public void validateTypeVideoStream(Timeslot timeslot, Errors errors) { public void validateTypeVideoStream(Timeslot timeslot, Errors errors) {
timeslot.setSecret(null); timeslot.setSecret(null);

View File

@ -202,6 +202,8 @@ public class Timeslot implements UserData {
} }
/** /**
* Gets the share.
*
* @return the share * @return the share
*/ */
public String getShare() { public String getShare() {
@ -209,7 +211,9 @@ public class Timeslot implements UserData {
} }
/** /**
* @param share the share to set * Sets the share.
*
* @param share the new share
*/ */
public void setShare(String share) { public void setShare(String share) {
this.share = share; this.share = share;

View File

@ -13,7 +13,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>11</java.version> <java.version>11</java.version>
<log4j2.version>2.17.1</log4j2.version> <log4j2.version>2.17.1</log4j2.version>
<revision>1.6.3-SNAPSHOT</revision> <revision>1.6.5-SNAPSHOT</revision>
</properties> </properties>
<parent> <parent>