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

ivo.findByIdAudited.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 {

        private String id;
#foreach ( $field in $model.getPageableMembers() )
        private $field.getTypeAsString(false) $field.name;
#end

        /**
		 * This field is required.
		 * the id
		 *
		 * @param id the value to set
		 * @return the builder
		 *
		 **/
		@Nonnull
		@SuppressWarnings("unchecked")
		public E withId(String id) {
			this.id = id;
			return (E) this;
		}
#foreach ( $field in $model.getPageableMembers() )

        /**
         * This field is optional.
         * @param  p$field.name the value to set
         * @return the builder $field.filterable
         *
         **/
        @Nonnull
        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;
        }
#end

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

		/**
		 * @return the entry
		 **/
        @Nonnull
		public ${clazzName} build() {
			if (this.id == null) {
				throw new IllegalStateException("The attribute id must not be null!");
			}
			${clazzName} result = new ${clazzName}(this);
			return result;
		}
	}

	private final String id;
#foreach ( $field in $model.getPageableMembers() )
    private final $field.getTypeAsString(false) $field.name;
#end

	protected ${clazzName}(Abstract${clazzName}Builder builder) {
		this.id = builder.id;
#foreach ( $field in $model.getPageableMembers() )
        this.$field.name = builder.$field.name;
#end
	}

    @Override
	public String getId() {
		return this.id;
	}

    /**
     * @deprecated currently only kept for backwards compatibility. Use getId() instead!
     */
    @Deprecated
    @JsonIgnore
    public Collection getIds() {
        return Collections.singleton(this.id);
    }

#foreach ( $field in $model.getPageableMembers() )
    @Override
    public $field.getTypeAsString(false) get$tool.upperCaseFirst( $field.name )() {
        return this.$field.name;
    }
#end

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

	@SuppressWarnings("unchecked")
	@Override
	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