All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.esfinge.gamification.validate.ProhibitsGamificationAnnotationValidator Maven / Gradle / Ivy

package net.sf.esfinge.gamification.validate;

import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
import java.util.List;

import net.sf.esfinge.gamification.validate.annotation.ProhibitsGamification;
import net.sf.esfinge.metadata.AnnotationFinder;
import net.sf.esfinge.metadata.AnnotationValidationException;
import net.sf.esfinge.metadata.validate.ProhibitsAnnotationValidator;

public class ProhibitsGamificationAnnotationValidator extends ProhibitsAnnotationValidator {
	
	@Override
	public void initialize(Annotation self) {
		ProhibitsGamification ntp = (ProhibitsGamification) self;
		whatItNeedsToProhibits = ntp.value();
	}

	@Override
	public void validate(Annotation toValidate, AnnotatedElement annotated) throws AnnotationValidationException {		
		List annToProhibits = AnnotationFinder.findAnnotation(annotated, whatItNeedsToProhibits); 
		
		// property checking
		for (Annotation annotation : annToProhibits) {
			String nameAttributeOfProhibits = getAttributeOfAnnotation(annotation);
			String nameAttributeToValidate = getAttributeOfAnnotation(toValidate);
			
				// attribute checking
			if(nameAttributeOfProhibits.equals(nameAttributeToValidate)){			
				throw new AnnotationValidationException("The annotation it needs to prohibits was found: @" + whatItNeedsToProhibits.getSimpleName()+", attribute: "+nameAttributeOfProhibits);
			}
		}
	}

	private String getAttributeOfAnnotation(Annotation ann) {
		for (Method m : ann.annotationType().getDeclaredMethods()) {			
			try {
				Object o = m.invoke(ann);					
				if(m.getName().equals("name")) return o.toString();					
			} catch (Exception e) {
				e.getMessage(); 
			}			
		}
		return "";
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy