package de.flower.rmt.service; import de.flower.common.util.Check; import de.flower.rmt.model.db.entity.AbstractClubRelatedEntity; import de.flower.rmt.model.db.entity.Club; import de.flower.rmt.model.db.entity.User; import de.flower.rmt.security.ISecurityService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; import javax.validation.Validator; import java.util.Set; import static de.flower.common.util.Check.*; /** * @author flowerrrr */ @Transactional(readOnly = true, propagation = Propagation.REQUIRED) public abstract class AbstractService { protected final Logger log = LoggerFactory.getLogger(getClass()); @Autowired protected ISecurityService securityService; @Autowired private Validator validator; /** * Returns club of currently logged in user. * * @return */ protected Club getClub() { User currentUser = securityService.getUser(); notNull(currentUser, "Security Context must be filled with a user"); return Check.notNull(currentUser.getClub()); } protected void assertClub(AbstractClubRelatedEntity entity) { if (entity != null) { Check.isEqual(entity.getClub(), getClub(), null); } } protected void validate(Object entity) throws ConstraintViolationException { Set<?> violations = validator.validate(entity); if (!violations.isEmpty()) { String message = violations.toString(); //noinspection unchecked throw new ConstraintViolationException(message, (Set<ConstraintViolation<?>>) violations); } } }