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

java.Validation.xpt Maven / Gradle / Ivy

There is a newer version: 1.24.1
Show newest version
«IMPORT uml»
«IMPORT JMM»
«EXTENSION java::Naming»
«EXTENSION java::GeneratorCommons»
«EXTENSION java::CustomValidationCommons»
«EXTENSION functions::Property»
«EXTENSION org::openarchitectureware::util::stdlib::io»

«DEFINE GenerateCustomValidation FOR CustomConstraint»
	«info("Processing «CustomConstraint» " + this.name + " (" + (this.fqn()) + ")")»
	«LET className.split("\\.").last() AS validationClass»
	«LET className.replaceFirst("\\."+validationClass, "") AS packageName»
	«info("Validation Class: " + validationClass)»
	«FILE className.packagePath() + ".java" src_gen»
package «packageName»;

import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.TYPE_USE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import «getEnterpriseJavaPackage()».validation.Constraint;
import «getEnterpriseJavaPackage()».validation.Payload;


@Target({ FIELD, METHOD, PARAMETER, ANNOTATION_TYPE, TYPE_USE })
@Retention(RUNTIME)
@Constraint(validatedBy = {«FOREACH validatedBy AS validatorClass SEPARATOR ', '»«validatorClass».class «ENDFOREACH»})
public @interface «validationClass» {
    «FOREACH this.ownedAttribute AS attribute»
	    «IF attribute.name.startsWith("base_") == false»
			«attribute.fqn()» «attribute.name»() 
			«IF attribute.defaultValue.isNull() == false-»
				default
			    «REM»Annotation supports either primitive types or enums.«ENDREM»
			    «IF attribute.isMultivalued()»{«ENDIF-»
			    «IF attribute.type.isPrimitiveType()-»
			    	«attribute.defaultValue.stringValue()-»
			    «ELSE-»
			    	«attribute.type.fqn()».«attribute.defaultValue.stringValue()-»
			    «ENDIF-»
			    «IF attribute.isMultivalued()»}«ENDIF-»
			«ENDIF-»;
	    «ENDIF-»
    «ENDFOREACH-»
	String message() default "{«className».message}";

	Class[] groups() default { };

	Class[] payload() default { };
}
	«ENDFILE»
	«ENDLET»«ENDLET»	
«ENDDEFINE»

«DEFINE ValidationAnnotation FOR NamedElement»
    «FOREACH this.getAppliedStereotypes() AS stereotype»
	    «IF stereotype.isValidationStereotype()»
			«IF stereotype.name == "DecimalMin"»
			  «EXPAND DecimalMinAnnotation FOR ((DecimalMin)this)»	
	
			«ELSEIF stereotype.name == "DecimalMax"»
			  «EXPAND DecimalMaxAnnotation FOR ((DecimalMax)this)»	
	
			«ELSEIF stereotype.name == "Min"»
			  «EXPAND MinAnnotation FOR ((Min)this)»	
			
			«ELSEIF stereotype.name == "Max"»
			  «EXPAND MaxAnnotation FOR ((Max)this)»	
	
			«ELSEIF stereotype.name == "Digits"»
			  «EXPAND DigitsAnnotation FOR ((Digits) this)»
	
			«ELSEIF stereotype.name == "Negative"»
			  «EXPAND NegativeAnnotation FOR ((Negative) this)»
	
			«ELSEIF stereotype.name == "NegativeOrZero"»
			  «EXPAND NegativeOrZeroAnnotation FOR ((NegativeOrZero) this)»
	
			«ELSEIF stereotype.name == "PositiveOrZero"»
			  «EXPAND PositiveOrZeroAnnotation FOR ((PositiveOrZero) this)»
	
			«ELSEIF stereotype.name == "Positive"»
			  «EXPAND PositiveAnnotation FOR ((Positive) this)»
	
			«ELSEIF stereotype.name == "Size"»
			  «EXPAND SizeAnnotation FOR ((Size) this)»
	
			«ELSEIF stereotype.name == "Pattern"»
			  «EXPAND PatternAnnotation FOR ((Pattern) this)»
	
			«ELSEIF stereotype.name == "Email"»
			  «EXPAND EmailAnnotation FOR ((Email) this)»
	
			«ELSEIF stereotype.name == "NotEmpty"»
			  «EXPAND NotEmptyAnnotation FOR ((NotEmpty) this)»
	
			«ELSEIF stereotype.name == "Null"»
			  «EXPAND NullAnnotation FOR ((Null) this)»
	
			«ELSEIF stereotype.name == "NotNull"»
			  «EXPAND NotNullAnnotation FOR ((NotNull) this)»
	
			«ELSEIF stereotype.name == "AssertTrue"»
			  «EXPAND AssertTrueAnnotation FOR ((AssertTrue) this)»
	
			«ELSEIF stereotype.name == "AssertFalse"»
			  «EXPAND AssertFalseAnnotation FOR ((AssertFalse) this)»
	
			«ELSEIF stereotype.name == "NotBlank"»
			  «EXPAND NotBlankAnnotation FOR ((NotBlank) this)»
	
			«ELSEIF stereotype.name == "Past"»
			  «EXPAND PastAnnotation FOR ((Past) this)»
	
			«ELSEIF stereotype.name == "PastOrPresent"»
			  «EXPAND PastOrPresentAnnotation FOR ((PastOrPresent) this)»
	
			«ELSEIF stereotype.name == "FutureOrPresent"»
			  «EXPAND FutureOrPresentAnnotation FOR ((FutureOrPresent) this)»
	
			«ELSEIF stereotype.name == "Future"»
			  «EXPAND FutureAnnotation FOR ((Future) this)»
	
			«ELSEIF stereotype.name == "Valid" -»
			  «EXPAND ValidAnnotation FOR ((Valid) this) -»
			
			«ELSE»
			  «EXPAND CustomValidationAnnotation (stereotype)»
			«ENDIF»
	    «ENDIF»
	«ENDFOREACH»
	«IF generateValidAnnotationsForClasses() &&(this.isStereotypeApplied("POJO") || this.isStereotypeApplied("ServiceObject") || this.isStereotypeApplied("DomainObject") || this.isStereotypeApplied("PersistentObject")) && this.isStereotypeApplied("Valid")==false »
	@«getEnterpriseJavaPackage()».validation.Valid
	«ENDIF»
    «IF generateValidAnnotationsForAssociations() && this.isProperty() &&(this.asProperty().type.isStereotypeApplied("POJO") || this.asProperty().type.isStereotypeApplied("ServiceObject") || this.asProperty().type.isStereotypeApplied("DomainObject") || this.asProperty().type.isStereotypeApplied("PersistentObject")) && this.isStereotypeApplied("Valid")==false »
    @«getEnterpriseJavaPackage()».validation.Valid
    «ENDIF»
«ENDDEFINE»


«DEFINE DecimalMinAnnotation FOR DecimalMin»
   @«getEnterpriseJavaPackage()».validation.constraints.DecimalMin(value = "«this.minValue»", inclusive = «this.inclusive» «EXPAND ValidationAnnotationBasics» )
«ENDDEFINE»

«DEFINE DecimalMaxAnnotation FOR DecimalMax»
   @«getEnterpriseJavaPackage()».validation.constraints.DecimalMax(value = "«this.maxValue»", inclusive = «this.inclusive» «EXPAND ValidationAnnotationBasics» )
«ENDDEFINE»

«DEFINE MinAnnotation FOR Min»
   @«getEnterpriseJavaPackage()».validation.constraints.Min(value = «this.minValue» «EXPAND ValidationAnnotationBasics»)
«ENDDEFINE»

«DEFINE MaxAnnotation FOR Max»
   @«getEnterpriseJavaPackage()».validation.constraints.Max(value = «this.maxValue» «EXPAND ValidationAnnotationBasics»)
«ENDDEFINE»

«DEFINE DigitsAnnotation FOR Digits»
   @«getEnterpriseJavaPackage()».validation.constraints.Digits(integer = «integer», fraction = «fraction» «EXPAND ValidationAnnotationBasics»)
«ENDDEFINE»

«DEFINE NegativeAnnotation FOR Negative»
   @«getEnterpriseJavaPackage()».validation.constraints.Negative«IF this.hasErrorCodeOrSeverity()»(«EXPAND ValidationAnnotationBasicsEmptyValidation»)«ENDIF»
«ENDDEFINE»

«DEFINE NegativeOrZeroAnnotation FOR NegativeOrZero»
   @«getEnterpriseJavaPackage()».validation.constraints.NegativeOrZero«IF this.hasErrorCodeOrSeverity()»(«EXPAND ValidationAnnotationBasicsEmptyValidation»)«ENDIF»
«ENDDEFINE»

«DEFINE PositiveOrZeroAnnotation FOR PositiveOrZero»
   @«getEnterpriseJavaPackage()».validation.constraints.PositiveOrZero«IF this.hasErrorCodeOrSeverity()»(«EXPAND ValidationAnnotationBasicsEmptyValidation»)«ENDIF»
«ENDDEFINE»

«DEFINE PositiveAnnotation FOR Positive»
   @«getEnterpriseJavaPackage()».validation.constraints.Positive«IF this.hasErrorCodeOrSeverity()»(«EXPAND ValidationAnnotationBasicsEmptyValidation»)«ENDIF»
«ENDDEFINE»

«DEFINE SizeAnnotation FOR Size»
   @«getEnterpriseJavaPackage()».validation.constraints.Size(min = «IF min != -1»«min»«ELSE»0«ENDIF», max = «IF max != -1»«max»«ELSE»Integer.MAX_VALUE«ENDIF»«EXPAND ValidationAnnotationBasics»)
«ENDDEFINE»

«DEFINE PatternAnnotation FOR Pattern»
   @«getEnterpriseJavaPackage()».validation.constraints.Pattern(«IF regexp.length > 0»regexp = "«regexp»"«ENDIF»«IF regexp.length > 0 && flags.size > 0», «ENDIF»«IF flags.size > 0»flags = {«FOREACH flags AS flag SEPARATOR ", "»«getEnterpriseJavaPackage()».validation.constraints.Pattern.Flag.«flag»«ENDFOREACH»}«ENDIF» «EXPAND ValidationAnnotationBasics»)
«ENDDEFINE»

«DEFINE EmailAnnotation FOR Email»
   @«getEnterpriseJavaPackage()».validation.constraints.Email(«IF regexp.length > 0»regexp = "«regexp»"«ENDIF»«IF regexp.length > 0 && flags.size > 0», «ENDIF»«IF flags.size > 0»flags = {«FOREACH flags AS flag SEPARATOR ", "»«getEnterpriseJavaPackage()».validation.constraints.Pattern.Flag.«flag»«ENDFOREACH»}«ENDIF» «EXPAND ValidationAnnotationBasics»)
«ENDDEFINE»

«DEFINE NotEmptyAnnotation FOR NotEmpty»
   @«getEnterpriseJavaPackage()».validation.constraints.NotEmpty«IF this.hasErrorCodeOrSeverity()»(«EXPAND ValidationAnnotationBasicsEmptyValidation»)«ENDIF»
«ENDDEFINE»

«DEFINE NullAnnotation FOR Null»
   @«getEnterpriseJavaPackage()».validation.constraints.Null«IF this.hasErrorCodeOrSeverity()»(«EXPAND ValidationAnnotationBasicsEmptyValidation»)«ENDIF»
«ENDDEFINE»

«DEFINE NotNullAnnotation FOR NotNull»
   @«getEnterpriseJavaPackage()».validation.constraints.NotNull«IF this.hasErrorCodeOrSeverity()»(«EXPAND ValidationAnnotationBasicsEmptyValidation»)«ENDIF»
«ENDDEFINE»

«DEFINE AssertTrueAnnotation FOR AssertTrue»
   @«getEnterpriseJavaPackage()».validation.constraints.AssertTrue«IF this.hasErrorCodeOrSeverity()»(«EXPAND ValidationAnnotationBasicsEmptyValidation»)«ENDIF»
«ENDDEFINE»

«DEFINE AssertFalseAnnotation FOR AssertFalse»
   @«getEnterpriseJavaPackage()».validation.constraints.AssertFalse«IF this.hasErrorCodeOrSeverity()»(«EXPAND ValidationAnnotationBasicsEmptyValidation»)«ENDIF»
«ENDDEFINE»

«DEFINE NotBlankAnnotation FOR NotBlank»
   @«getEnterpriseJavaPackage()».validation.constraints.NotBlank«IF this.hasErrorCodeOrSeverity()»(«EXPAND ValidationAnnotationBasicsEmptyValidation»)«ENDIF»
«ENDDEFINE»

«DEFINE PastAnnotation FOR Past»
   @«getEnterpriseJavaPackage()».validation.constraints.Past«IF this.hasErrorCodeOrSeverity()»(«EXPAND ValidationAnnotationBasicsEmptyValidation»)«ENDIF»
«ENDDEFINE»

«DEFINE PastOrPresentAnnotation FOR PastOrPresent»
   @«getEnterpriseJavaPackage()».validation.constraints.PastOrPresent«IF this.hasErrorCodeOrSeverity()»(«EXPAND ValidationAnnotationBasicsEmptyValidation»)«ENDIF»
«ENDDEFINE»

«DEFINE FutureOrPresentAnnotation FOR FutureOrPresent»
   @«getEnterpriseJavaPackage()».validation.constraints.FutureOrPresent«IF this.hasErrorCodeOrSeverity()»(«EXPAND ValidationAnnotationBasicsEmptyValidation»)«ENDIF»
«ENDDEFINE»

«DEFINE FutureAnnotation FOR Future»
   @«getEnterpriseJavaPackage()».validation.constraints.Future«IF this.hasErrorCodeOrSeverity()»(«EXPAND ValidationAnnotationBasicsEmptyValidation»)«ENDIF»
«ENDDEFINE»

«DEFINE ValidAnnotation FOR Valid -»
   @«getEnterpriseJavaPackage()».validation.Valid«IF this.hasErrorCodeOrSeverity()»(«EXPAND ValidationAnnotationBasicsEmptyValidation»)«ENDIF»
«ENDDEFINE»

«DEFINE CustomValidationAnnotation(Stereotype stereotype) FOR Element»
    @«getJavaAnnotatinClassForCustomValidation(stereotype.fqn())-»(
    «FOREACH stereotype.attribute.select(e|e.name.startsWith("base_") == false) AS attribute SEPARATOR ", "-»
	    «IF attribute.type.name == "String"-»
		    «attribute.name» = "«this.getValue(stereotype, attribute.name)-»"
	    «ELSEIF attribute.type.isPrimitiveType()-»
		    «attribute.name» = «this.getValue(stereotype, attribute.name)-»
	    «ELSEIF attribute.type.metaType.name == "uml::Enumeration" || attribute.type.metaType.name == "JMM::JEAFEnumeration"-»
	        «attribute.name» = 
		    «IF attribute.isMultivalued() == false-»
			    «attribute.type.fqn()».«((EnumerationLiteral)this.getValue(stereotype, attribute.name)).name-»
		    «ELSE-»
			    {«FOREACH ((Collection)this.getValue(stereotype, attribute.name)) AS literal SEPARATOR ", "»«attribute.type.fqn()».«((EnumerationLiteral)literal)»«ENDFOREACH-»}
		    «ENDIF-»
	    «ELSE-»
		    «attribute.name» = «this.getValue(stereotype, attribute.name)-»
	    «ENDIF-»
    «ENDFOREACH-»
    «LET this.getValue(stereotype, "errorCode") AS errorCode-»
    «LET (EnumerationLiteral)this.getValue(stereotype, "severity") AS severity-»
	«IF errorCode > 0», message = "«errorCode»"«ENDIF» «IF severity.name != "NotUsed"», payload = com.anaptecs.jeaf.tools.api.validation.Severity.«severity.name».class«ENDIF»    
    «ENDLET-»    
    «ENDLET-»
    )
«ENDDEFINE»

«DEFINE ValidationAnnotationBasics FOR Validation»
«IF errorCode > 0», message = "«errorCode»"«ENDIF» «IF severity.name != "NotUsed"», payload = com.anaptecs.jeaf.tools.api.validation.Severity.«severity.name».class«ENDIF»
«ENDDEFINE»

«DEFINE ValidationAnnotationBasicsEmptyValidation FOR Validation -»
«IF errorCode > 0»message = "«errorCode»"«ENDIF» «IF errorCode > 0 && severity.name != "NotUsed"», «ENDIF» «IF severity.name != "NotUsed"»payload = com.anaptecs.jeaf.tools.api.validation.Severity.«severity.name».class«ENDIF -»
«ENDDEFINE»





© 2015 - 2024 Weber Informatics LLC | Privacy Policy