// Path: stardao-core/src/main/java/io/stardog/stardao/annotations/Required.java
// public interface Required extends Default {
// }


import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
import com.google.auto.value.AutoValue;
import io.stardog.stardao.annotations.CreatedAt;
import io.stardog.stardao.annotations.CreatedBy;
import io.stardog.stardao.annotations.Id;
import io.stardog.stardao.annotations.Required;
import io.stardog.stardao.annotations.Updatable;
import io.stardog.stardao.annotations.UpdatedAt;
import io.stardog.stardao.annotations.UpdatedBy;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;
import javax.annotation.Nullable;
import javax.validation.constraints.Pattern;
import java.time.Instant;
import java.time.LocalDate;
import java.util.UUID;
package io.stardog.stardao.core;



@AutoValue
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonDeserialize(builder=AutoValue_TestModel.Builder.class)
public abstract class TestModel {
    @Nullable
    @Id
    public abstract UUID getId();

    @Nullable
    @Updatable
    @NotEmpty(groups = Required.class)
    public abstract String getName();

    @Nullable
    @Updatable
    @Email
    @Pattern(regexp=".+@.+\\..+", message = "invalid email")
    public abstract String getEmail();

    @Nullable
    @Updatable
// Path: stardao-core/src/main/java/io/stardog/stardao/annotations/Required.java
// public interface Required extends Default {
// }


// Path: stardao-core/src/test/java/io/stardog/stardao/core/TestModel.java
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
import com.google.auto.value.AutoValue;
import io.stardog.stardao.annotations.CreatedAt;
import io.stardog.stardao.annotations.CreatedBy;
import io.stardog.stardao.annotations.Id;
import io.stardog.stardao.annotations.Required;
import io.stardog.stardao.annotations.Updatable;
import io.stardog.stardao.annotations.UpdatedAt;
import io.stardog.stardao.annotations.UpdatedBy;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;
import javax.annotation.Nullable;
import javax.validation.constraints.Pattern;
import java.time.Instant;
import java.time.LocalDate;
import java.util.UUID;

package io.stardog.stardao.core;



@AutoValue
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonDeserialize(builder=AutoValue_TestModel.Builder.class)
public abstract class TestModel {
    @Nullable
    @Id
    public abstract UUID getId();

    @Nullable
    @Updatable
    @NotEmpty(groups = Required.class)
    public abstract String getName();

    @Nullable
    @Updatable
    @Email
    @Pattern(regexp=".+@.+\\..+", message = "invalid email")
    public abstract String getEmail();

    @Nullable
    @Updatable
    @NotEmpty(groups = Required.class)