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

ivo.find.vm Maven / Gradle / Ivy

There is a newer version: 1.7
Show newest version
package ${model.getPackageName()}.requests;

#foreach ( $imp in $model.getImports() )
import $imp;
#end

/**
 * $model.getComment()
 *
 * @author $model.getAuthor()
 **/
@SuppressWarnings("all")
#if ($model.isDeprecated())
@Deprecated
@ToBeRemoved(date="$model.getRemoveDate()")
#end
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonDeserialize(builder = ${clazzName}.${clazzName}Builder.class)
public class ${clazzName} extends ${model.getParentClazzName()} implements I${clazzName} {

    private static final long serialVersionUID = ${model.getSerialVersion()}L;

	/**
	 * Builder for the read-only ivo
	 *
	 **/
#if ($model.isDeprecated())
	@Deprecated
	@ToBeRemoved(date="$model.getRemoveDate()")
#end
	@JsonPOJOBuilder()
	public static class ${clazzName}Builder extends Abstract${clazzName}Builder<${clazzName}Builder> implements IVOBuilder {

		// nothing to do here, really

	}

	/**
	 * Abstract Builder for the read-only ivo
	 *
	 * @param  type of builder
	 **/
	public abstract static class Abstract${clazzName}Builder> $model.getParentBuilder() implements IPageableBuilder {
#foreach ( $field in $model.getFilterableFields() )
#if ($field.filterable == 'single')
		private $field.getTypeAsString(false) $field.name;
#else
		private Set<$field.getTypeAsString(false)> $field.name;
#end
#end

#foreach ( $field in $model.getFilterableFields() )
		/**
		 * This field is optional.
		 * @param  p$field.name the value to set
		 * @return the builder $field.filterable
		 *
		 **/
	 	@Nonnull
#if ($field.filterable == 'single')
		public E with$tool.upperCaseFirst( $field.name )(@Nullable $field.getTypeAsString(false) p$field.name) {
			this.$field.name = p$field.name;
			return (E) this;
		}


		/**
		 * @return the field value
		 **/
		public $field.getTypeAsString(false) get$tool.upperCaseFirst( $field.name )() {
			return this.$field.name;
		}
#else
		public E with$tool.upperCaseFirst( $field.name )(@Nullable Set<$field.getTypeAsString(true)> p$field.name) {
			this.$field.name = p$field.name;
			return (E) this;
		}


		/**
		 * @return the field value
		 **/
		public Set<$field.getTypeAsString(true)> get$tool.upperCaseFirst( $field.name )() {
			return this.$field.name;
		}
#end
#end

		protected void internalFillFromIVO($clazzName ivo) {
#foreach ( $field in $model.getFilterableFields() )
            this.with$tool.upperCaseFirst( $field.name )(ivo.$field.name);
#end
		}

		/**
		 * @return the entry
		 **/
        @Nonnull
		public ${clazzName} build() {
			${clazzName} result = new ${clazzName}(this);
			return result;
		}
	}

#foreach ( $field in $model.getFilterableFields() )
#if ($field.filterable == 'single')
	private final#if ( $field.javaTransientFlag ) transient#end $field.getTypeAsString(false) $field.name;
#else
	private final#if ( $field.javaTransientFlag ) transient#end Set<$field.getTypeAsString(true)> $field.name;
#end
#end


	protected ${clazzName}(Abstract${clazzName}Builder builder) {
#if ( $model.hasParentClazz() )
        super(builder);
#end
#foreach ( $field in $model.getFilterableFields() )
		this.$field.name = builder.$field.name;
#end
	}

#foreach ( $field in $model.getFilterableFields() )
#if ( $field.jsonTransientFlag )
	@JsonIgnore
#end
	@Override
#if ($field.filterable == 'single')
	public $field.getTypeAsString(false) get$tool.upperCaseFirst( $field.name )() {
		return this.$field.name;
	}
#else
	public Set<$field.getTypeAsString(true)> get$tool.upperCaseFirst( $field.name )() {
		return this.$field.name;
	}
#end

#end

	@SuppressWarnings("unchecked")
	@Override
    @Nonnull
	public IPageableBuilder createPageableBuilder() {
		return (IPageableBuilder) createBuilder();
	}

	@SuppressWarnings("unchecked")
	@Override
    @Nonnull
	public  T createBuilder() {
		${clazzName}Builder builder = new ${clazzName}Builder();
		builder.internalFillFromIVO(this);
		return (T) builder;
	}

	@Override
	public ${clazzName} clone() {
		return (${clazzName}) super.clone();
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy