
com.dulanywebsite.sharedresources.entities.Group Maven / Gradle / Ivy
package com.dulanywebsite.sharedresources.entities;
import com.dulanywebsite.sharedresources.exceptions.InvalidEntityException;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.springframework.cloud.gcp.data.datastore.core.mapping.Entity;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@Entity(name = "groups")
public class Group extends DuWebEntity {
private String groupName;
private String groupManager;
private Integer groupSize = Integer.MAX_VALUE;
private String password;
private Integer spotsFilled;
private List groupMembers;
@Override
public void UpdateEntity(String propertyName, Object updateValue) throws NoSuchFieldException, IllegalAccessException {
if (propertyName.equals("groupName") || propertyName.equals("groupMembers")) {
throw new IllegalArgumentException("This property cannot be updated: " + propertyName);
}
getClass().getDeclaredField(propertyName).set(this, updateValue);
}
@Override
public void AddItem(String propertyName, Object addValue) {
if (!propertyName.equals("groupMembers")) {
throw new IllegalArgumentException("This property cannot be added to");
}
groupMembers.add((Long) addValue);
}
public void addGroupMember(Long user) {
if (!containsUser(user)) {
groupMembers.add(user);
spotsFilled++;
}
}
private boolean containsUser(Long user) {
boolean isFound = false;
for (Long groupMember : groupMembers) {
if (groupMember.equals(user)) {
isFound = true;
break;
}
}
return isFound;
}
@Override
protected void ValidateSub() throws InvalidEntityException {
if (groupName == null || groupManager == null) {
throw new InvalidEntityException(this.getClass().toString() + " class has a null value that shouldn't be null");
}
if (groupSize < 0) {
throw new InvalidEntityException("Group size is not valid less than 0");
}
if (spotsFilled < 0) {
throw new InvalidEntityException("Spots filled less than 0");
}
if (groupMembers.size() > groupSize) {
throw new InvalidEntityException("Too many group members in the group");
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy