private <A extends Annotation> void findStringDynamicStatement(SQLiteDaoDefinition parent, Class<A> annotationClazz, List<Class<? extends Annotation>> unsupportedQueryType,
			OnFoundDynamicParameter listener) {

		int counter = 0;
		for (VariableElement p : element.getParameters()) {
			A annotation = p.getAnnotation(annotationClazz);
			if (annotation != null) {
				// Dynamic queries can not be used in Inser SQL.
				for (Class<? extends Annotation> item : unsupportedQueryType) {
					AssertKripton.assertTrueOrInvalidMethodSignException(element.getAnnotation(item) == null, this, "in this method is not allowed to mark parameters with @%s annotation.",
							annotationClazz.getSimpleName());
				}

				AssertKripton.assertTrueOrInvalidMethodSignException(TypeUtility.isString(TypeUtility.typeName(p)), this, "only String parameters can be marked with @%s annotation.",
						annotationClazz.getSimpleName());

				listener.onFoundParameter(p.getSimpleName().toString());
				counter++;
			}
		}
		AssertKripton.assertTrueOrInvalidMethodSignException(counter < 2, this, "there are %s parameters marked with @%s. Only one is allowed.", counter, annotationClazz.getSimpleName());
	}
private < A extends Annotation > void findStringDynamicStatement ( SQLiteDaoDefinition parent , Class < A > annotationClazz , List < Class < ? extends Annotation > > unsupportedQueryType , OnFoundDynamicParameter listener ) { int counter = 0 ; for ( VariableElement p : element . getParameters ( ) ) { A annotation = p . getAnnotation ( annotationClazz ) ; if ( annotation != null ) { for ( Class < ? extends Annotation > item : unsupportedQueryType ) { AssertKripton . assertTrueOrInvalidMethodSignException ( element . getAnnotation ( item ) == null , this , "in this method is not allowed to mark parameters with @%s annotation." , annotationClazz . getSimpleName ( ) ) ; } AssertKripton . assertTrueOrInvalidMethodSignException ( TypeUtility . isString ( TypeUtility . typeName ( p ) ) , this , "only String parameters can be marked with @%s annotation." , annotationClazz . getSimpleName ( ) ) ; listener . onFoundParameter ( p . getSimpleName ( ) . toString ( ) ) ; counter ++ ; } } AssertKripton . assertTrueOrInvalidMethodSignException ( counter < 2 , this , "there are %s parameters marked with @%s. Only one is allowed." , counter , annotationClazz . getSimpleName ( ) ) ; }
Look for a method parameter which is annotated with an annotationClass
annotation. When it is found, a client action is required through
listener.

@param <A>
the generic type
@param parent
the parent
@param annotationClazz
the annotation clazz
@param unsupportedQueryType
the unsupported query type
@param listener
the listener