// Path: src/main/java/ch/rasc/eds/starter/entity/AbstractPersistable.java
// @MappedSuperclass
// public abstract class AbstractPersistable {
// 
// 	@Id
// 	@GeneratedValue(strategy = GenerationType.AUTO)
// 	@ModelField(useNull = true, convert = "null")
// 	private Long id;
// 
// 	public Long getId() {
// 		return this.id;
// 	}
// 
// 	public void setId(Long id) {
// 		this.id = id;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return String.format("Entity of type %s with id: %s", this.getClass().getName(),
// 				getId());
// 	}
// 
// 	@Override
// 	public boolean equals(Object obj) {
// 
// 		if (null == obj) {
// 			return false;
// 		}
// 
// 		if (this == obj) {
// 			return true;
// 		}
// 
// 		if (!getClass().equals(obj.getClass())) {
// 			return false;
// 		}
// 
// 		AbstractPersistable that = (AbstractPersistable) obj;
// 
// 		return null == this.getId() ? false : this.getId().equals(that.getId());
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		int hashCode = 17;
// 		hashCode += null == getId() ? 0 : getId().hashCode() * 31;
// 		return hashCode;
// 	}
// }


import java.lang.invoke.MethodHandles;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import ch.ralscha.extdirectspring.ExtDirectSpring;
import ch.ralscha.extdirectspring.controller.ApiController;
import ch.rasc.eds.starter.entity.AbstractPersistable;
package ch.rasc.eds.starter;




@Configuration
@ComponentScan(basePackageClasses = { ExtDirectSpring.class, Application.class },
		excludeFilters = { @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,
				value = ApiController.class) })
@EnableAutoConfiguration(exclude = { MustacheAutoConfiguration.class,
		SpringDataWebAutoConfiguration.class })
@EnableAsync
@EnableScheduling
// Path: src/main/java/ch/rasc/eds/starter/entity/AbstractPersistable.java
// @MappedSuperclass
// public abstract class AbstractPersistable {
// 
// 	@Id
// 	@GeneratedValue(strategy = GenerationType.AUTO)
// 	@ModelField(useNull = true, convert = "null")
// 	private Long id;
// 
// 	public Long getId() {
// 		return this.id;
// 	}
// 
// 	public void setId(Long id) {
// 		this.id = id;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return String.format("Entity of type %s with id: %s", this.getClass().getName(),
// 				getId());
// 	}
// 
// 	@Override
// 	public boolean equals(Object obj) {
// 
// 		if (null == obj) {
// 			return false;
// 		}
// 
// 		if (this == obj) {
// 			return true;
// 		}
// 
// 		if (!getClass().equals(obj.getClass())) {
// 			return false;
// 		}
// 
// 		AbstractPersistable that = (AbstractPersistable) obj;
// 
// 		return null == this.getId() ? false : this.getId().equals(that.getId());
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		int hashCode = 17;
// 		hashCode += null == getId() ? 0 : getId().hashCode() * 31;
// 		return hashCode;
// 	}
// }


// Path: src/main/java/ch/rasc/eds/starter/Application.java
import java.lang.invoke.MethodHandles;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import ch.ralscha.extdirectspring.ExtDirectSpring;
import ch.ralscha.extdirectspring.controller.ApiController;
import ch.rasc.eds.starter.entity.AbstractPersistable;

package ch.rasc.eds.starter;




@Configuration
@ComponentScan(basePackageClasses = { ExtDirectSpring.class, Application.class },
		excludeFilters = { @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,
				value = ApiController.class) })
@EnableAutoConfiguration(exclude = { MustacheAutoConfiguration.class,
		SpringDataWebAutoConfiguration.class })
@EnableAsync
@EnableScheduling
@EntityScan(basePackageClasses = AbstractPersistable.class)