// Path: share/src/main/java/io/github/pivopil/share/builders/EntityBuilder.java
// public interface EntityBuilder<T extends BasicEntity, K extends EntityBuilder, V extends ViewModel<T>> {
// 
//     K newInstance();
// 
//     V buildViewModel();
// 
//     K newInstance(T entity);
// 
//     K id(Long val);
// 
//     K created(Date val);
// 
//     K updated(Date val);
// 
//     T build();
// 
//     K withOvalValidator(Validator ovalValidator);
// 
//     default void validate(Validator ovalValidator) {
//         if (ovalValidator != null) {
//             List<ConstraintViolation> constraintViolations = ovalValidator.validate(this);
//             if (constraintViolations.size() > 0) {
//                 final Map<String, List<String>> errorMap = new HashMap<>();
//                 final String className = this.getClass().getName() + ".";
// 
//                 constraintViolations
//                         .forEach(constraintViolation ->
//                                 errorMap.computeIfAbsent(constraintViolation.getCheckDeclaringContext().toString().replace(className, ""), k -> new ArrayList<>())
//                                         .add(constraintViolation.getMessage().replace(className, "")));
// 
//                 throw new ExceptionAdapter(new CustomOvalException(errorMap));
//             }
//         }
//     }
// }
// 
// Path: share/src/main/java/io/github/pivopil/share/entities/impl/Content.java
// @Entity
// public class Content extends BasicEntity {
//     String title;
// 
//     public String getTitle() {
//         return title;
//     }
// 
//     public void setTitle(String title) {
//         this.title = title;
//     }
// }
// 
// Path: share/src/main/java/io/github/pivopil/share/viewmodels/impl/ContentViewModel.java
// public class ContentViewModel implements ViewModel<Content> {
// 
//     private Long id;
// 
//     private Date created;
// 
//     private Date updated;
// 
//     private String title;
//     private String owner;
//     private List<String> acls;
// 
//     @Override
//     public Long getId() {
//         return id;
//     }
// 
//     @Override
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
//     @Override
//     public Date getCreated() {
//         return created;
//     }
// 
//     @Override
//     public void setCreated(Date created) {
//         this.created = created;
//     }
// 
//     @Override
//     public Date getUpdated() {
//         return updated;
//     }
// 
//     @Override
//     public void setUpdated(Date updated) {
//         this.updated = updated;
//     }
// 
//     public String getTitle() {
//         return title;
//     }
// 
//     public void setTitle(String title) {
//         this.title = title;
//     }
// 
//     public void setOwner(String owner) {
//         this.owner = owner;
//     }
// 
//     public String getOwner() {
//         return owner;
//     }
// 
//     public void setAcls(List<String> acls) {
//         this.acls = acls;
//     }
// 
//     public List<String> getAcls() {
//         return acls;
//     }
// }


import io.github.pivopil.share.builders.EntityBuilder;
import io.github.pivopil.share.entities.impl.Content;
import io.github.pivopil.share.viewmodels.impl.ContentViewModel;
import net.sf.oval.Validator;
import net.sf.oval.constraint.Length;
import net.sf.oval.constraint.NotEmpty;
import net.sf.oval.constraint.NotNull;
import java.util.Date;
    @Override
    public ContentBuilder newInstance(Content entity) {
        return new ContentBuilder(entity);
    }

    public ContentBuilder id(Long val) {
        id = val;
        return this;
    }

    public ContentBuilder created(Date val) {
        created = val;
        return this;
    }

    public ContentBuilder updated(Date val) {
        updated = val;
        return this;
    }

    public ContentBuilder title(String val) {
        title = val;
        return this;
    }

    @Override
    public Content build() {

        validate(ovalValidator);

// Path: share/src/main/java/io/github/pivopil/share/builders/EntityBuilder.java
// public interface EntityBuilder<T extends BasicEntity, K extends EntityBuilder, V extends ViewModel<T>> {
// 
//     K newInstance();
// 
//     V buildViewModel();
// 
//     K newInstance(T entity);
// 
//     K id(Long val);
// 
//     K created(Date val);
// 
//     K updated(Date val);
// 
//     T build();
// 
//     K withOvalValidator(Validator ovalValidator);
// 
//     default void validate(Validator ovalValidator) {
//         if (ovalValidator != null) {
//             List<ConstraintViolation> constraintViolations = ovalValidator.validate(this);
//             if (constraintViolations.size() > 0) {
//                 final Map<String, List<String>> errorMap = new HashMap<>();
//                 final String className = this.getClass().getName() + ".";
// 
//                 constraintViolations
//                         .forEach(constraintViolation ->
//                                 errorMap.computeIfAbsent(constraintViolation.getCheckDeclaringContext().toString().replace(className, ""), k -> new ArrayList<>())
//                                         .add(constraintViolation.getMessage().replace(className, "")));
// 
//                 throw new ExceptionAdapter(new CustomOvalException(errorMap));
//             }
//         }
//     }
// }
// 
// Path: share/src/main/java/io/github/pivopil/share/entities/impl/Content.java
// @Entity
// public class Content extends BasicEntity {
//     String title;
// 
//     public String getTitle() {
//         return title;
//     }
// 
//     public void setTitle(String title) {
//         this.title = title;
//     }
// }
// 
// Path: share/src/main/java/io/github/pivopil/share/viewmodels/impl/ContentViewModel.java
// public class ContentViewModel implements ViewModel<Content> {
// 
//     private Long id;
// 
//     private Date created;
// 
//     private Date updated;
// 
//     private String title;
//     private String owner;
//     private List<String> acls;
// 
//     @Override
//     public Long getId() {
//         return id;
//     }
// 
//     @Override
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
//     @Override
//     public Date getCreated() {
//         return created;
//     }
// 
//     @Override
//     public void setCreated(Date created) {
//         this.created = created;
//     }
// 
//     @Override
//     public Date getUpdated() {
//         return updated;
//     }
// 
//     @Override
//     public void setUpdated(Date updated) {
//         this.updated = updated;
//     }
// 
//     public String getTitle() {
//         return title;
//     }
// 
//     public void setTitle(String title) {
//         this.title = title;
//     }
// 
//     public void setOwner(String owner) {
//         this.owner = owner;
//     }
// 
//     public String getOwner() {
//         return owner;
//     }
// 
//     public void setAcls(List<String> acls) {
//         this.acls = acls;
//     }
// 
//     public List<String> getAcls() {
//         return acls;
//     }
// }


// Path: share/src/main/java/io/github/pivopil/share/builders/impl/ContentBuilder.java
import io.github.pivopil.share.builders.EntityBuilder;
import io.github.pivopil.share.entities.impl.Content;
import io.github.pivopil.share.viewmodels.impl.ContentViewModel;
import net.sf.oval.Validator;
import net.sf.oval.constraint.Length;
import net.sf.oval.constraint.NotEmpty;
import net.sf.oval.constraint.NotNull;
import java.util.Date;

    @Override
    public ContentBuilder newInstance(Content entity) {
        return new ContentBuilder(entity);
    }

    public ContentBuilder id(Long val) {
        id = val;
        return this;
    }

    public ContentBuilder created(Date val) {
        created = val;
        return this;
    }

    public ContentBuilder updated(Date val) {
        updated = val;
        return this;
    }

    public ContentBuilder title(String val) {
        title = val;
        return this;
    }

    @Override
    public Content build() {

        validate(ovalValidator);

        Content content = new Content();