package org.karmaexchange.dao; import static org.karmaexchange.util.UserService.getCurrentUserKey; import java.util.List; import javax.xml.bind.annotation.XmlRootElement; import org.karmaexchange.resources.msg.BaseDaoView; import org.karmaexchange.resources.msg.ValidationErrorInfo; import org.karmaexchange.resources.msg.ValidationErrorInfo.ValidationError; import org.karmaexchange.resources.msg.ValidationErrorInfo.ValidationErrorType; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.ToString; import com.google.common.collect.Lists; import com.googlecode.objectify.annotation.Entity; @XmlRootElement @Entity @Data @NoArgsConstructor @EqualsAndHashCode(callSuper=true) @ToString(callSuper=true) public final class UserManagedEvent extends BaseEvent<UserManagedEvent> implements BaseDaoView<UserManagedEvent> { @Override protected void preProcessInsert() { super.preProcessInsert(); validateEvent(); } @Override protected void processUpdate(UserManagedEvent prevObj) { super.processUpdate(prevObj); validateEvent(); } private void validateEvent() { List<ValidationError> validationErrors = Lists.newArrayList(); if (owner == null) { validationErrors.add(new ResourceValidationError( this, ValidationErrorType.RESOURCE_FIELD_VALUE_REQUIRED, "owner")); } if (!validationErrors.isEmpty()) { throw ValidationErrorInfo.createException(validationErrors); } } @Override protected Permission evalPermission() { if (owner.equals(getCurrentUserKey())) { return Permission.ALL; } else { return Permission.READ; } } @Override public UserManagedEvent getDao() { return this; } }