package features.domain;
import features.domain.queries.ParentDChildBQueries;
import joist.domain.AbstractChanged;
import joist.domain.AbstractDomainObject;
import joist.domain.Changed;
import joist.domain.Shim;
import joist.domain.orm.ForeignKeyHolder;
import joist.domain.uow.UoW;
import joist.domain.validation.rules.MaxLength;
import joist.domain.validation.rules.NotEmpty;
import joist.domain.validation.rules.NotNull;
@SuppressWarnings("all")
public abstract class ParentDChildBCodegen extends AbstractDomainObject {
public static final ParentDChildBQueries queries;
private Long id = null;
private String name = null;
private Long version = null;
private final ForeignKeyHolder<ParentDChildB, ParentD> parentD = new ForeignKeyHolder<ParentDChildB, ParentD>(ParentDChildB.class, ParentD.class, Aliases.parentD(), Aliases.parentDChildB().parentD);
protected Changed changed;
static {
Aliases.parentDChildB();
queries = new ParentDChildBQueries();
}
protected ParentDChildBCodegen() {
this.addExtraRules();
}
private void addExtraRules() {
this.addRule(new NotNull<ParentDChildB>(Shims.name));
this.addRule(new MaxLength<ParentDChildB>(Shims.name, 100));
this.addRule(new NotEmpty<ParentDChildB>(Shims.name));
this.addRule(new NotNull<ParentDChildB>(Shims.parentDId));
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
if (this.id != null) {
throw new IllegalStateException(this + " id cannot be changed");
}
this.getChanged().record("id", this.id, id);
this.id = id;
if (UoW.isOpen()) {
UoW.getIdentityMap().store(this);
}
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.getChanged().record("name", this.name, name);
this.name = name;
}
protected void defaultName(String name) {
this.name = name;
}
public Long getVersion() {
return this.version;
}
public ParentD getParentD() {
return this.parentD.get();
}
public void setParentD(ParentD parentD) {
if (parentD == this.getParentD()) {
return;
}
if (this.parentD.get() != null) {
this.parentD.get().removeParentDChildBWithoutPercolation((ParentDChildB) this);
}
this.setParentDWithoutPercolation(parentD);
if (this.parentD.get() != null) {
this.parentD.get().addParentDChildBWithoutPercolation((ParentDChildB) this);
}
}
protected void setParentDWithoutPercolation(ParentD parentD) {
this.getChanged().record("parentD", this.parentD.get(), parentD);
this.parentD.set(parentD);
}
public ParentDChildBChanged getChanged() {
if (this.changed == null) {
this.changed = new ParentDChildBChanged((ParentDChildB) this);
}
return (ParentDChildBChanged) this.changed;
}
@Override
public void clearAssociations() {
super.clearAssociations();
this.setParentD(null);
}
static class Shims {
protected static final Shim<ParentDChildB, Long> id = new Shim<ParentDChildB, Long>() {
public void set(ParentDChildB instance, Long id) {
((ParentDChildBCodegen) instance).id = id;
}
public Long get(ParentDChildB instance) {
return ((ParentDChildBCodegen) instance).id;
}
public String getName() {
return "id";
}
};
protected static final Shim<ParentDChildB, String> name = new Shim<ParentDChildB, String>() {
public void set(ParentDChildB instance, String name) {
((ParentDChildBCodegen) instance).name = name;
}
public String get(ParentDChildB instance) {
return ((ParentDChildBCodegen) instance).name;
}
public String getName() {
return "name";
}
};
protected static final Shim<ParentDChildB, Long> version = new Shim<ParentDChildB, Long>() {
public void set(ParentDChildB instance, Long version) {
((ParentDChildBCodegen) instance).version = version;
}
public Long get(ParentDChildB instance) {
return ((ParentDChildBCodegen) instance).version;
}
public String getName() {
return "version";
}
};
protected static final Shim<ParentDChildB, Long> parentDId = new Shim<ParentDChildB, Long>() {
public void set(ParentDChildB instance, Long parentDId) {
((ParentDChildBCodegen) instance).parentD.setId(parentDId);
}
public Long get(ParentDChildB instance) {
return ((ParentDChildBCodegen) instance).parentD.getId();
}
public String getName() {
return "parentD";
}
};
}
public static class ParentDChildBChanged extends AbstractChanged {
public ParentDChildBChanged(ParentDChildB instance) {
super(instance);
}
public boolean hasId() {
return this.contains("id");
}
public Long getOriginalId() {
return (Long) this.getOriginal("id");
}
public boolean hasName() {
return this.contains("name");
}
public String getOriginalName() {
return (java.lang.String) this.getOriginal("name");
}
public boolean hasVersion() {
return this.contains("version");
}
public Long getOriginalVersion() {
return (Long) this.getOriginal("version");
}
public boolean hasParentD() {
return this.contains("parentD");
}
public ParentD getOriginalParentD() {
return (ParentD) this.getOriginal("parentD");
}
}
}