// ----------> GENERATED FILE - DON'T TOUCH! <----------
// generator: ilarkesto.mda.legacy.generator.EntityGenerator
package scrum.server.project;
import java.util.*;
import ilarkesto.persistence.*;
import ilarkesto.core.logging.Log;
import ilarkesto.base.*;
import ilarkesto.base.time.*;
import ilarkesto.auth.*;
public abstract class GRequirement
extends AEntity
implements ilarkesto.auth.ViewProtected<scrum.server.admin.User>, ilarkesto.search.Searchable, java.lang.Comparable<Requirement> {
// --- AEntity ---
public final RequirementDao getDao() {
return requirementDao;
}
protected void repairDeadDatob(ADatob datob) {
}
@Override
public void storeProperties(Map properties) {
super.storeProperties(properties);
properties.put("projectId", this.projectId);
properties.put("sprintId", this.sprintId);
properties.put("issueId", this.issueId);
properties.put("number", this.number);
properties.put("qualitysIds", this.qualitysIds);
properties.put("label", this.label);
properties.put("description", this.description);
properties.put("testDescription", this.testDescription);
properties.put("estimatedWork", this.estimatedWork);
properties.put("rejectDate", this.rejectDate == null ? null : this.rejectDate.toString());
properties.put("closed", this.closed);
properties.put("dirty", this.dirty);
properties.put("workEstimationVotingActive", this.workEstimationVotingActive);
properties.put("workEstimationVotingShowoff", this.workEstimationVotingShowoff);
properties.put("tasksOrderIds", this.tasksOrderIds);
}
public int compareTo(Requirement other) {
return toString().toLowerCase().compareTo(other.toString().toLowerCase());
}
private static final ilarkesto.core.logging.Log LOG = ilarkesto.core.logging.Log.get(GRequirement.class);
public static final String TYPE = "requirement";
// -----------------------------------------------------------
// - Searchable
// -----------------------------------------------------------
public boolean matchesKey(String key) {
if (super.matchesKey(key)) return true;
if (matchesKey(getLabel(), key)) return true;
if (matchesKey(getDescription(), key)) return true;
if (matchesKey(getTestDescription(), key)) return true;
return false;
}
// -----------------------------------------------------------
// - project
// -----------------------------------------------------------
private String projectId;
private transient scrum.server.project.Project projectCache;
private void updateProjectCache() {
projectCache = this.projectId == null ? null : (scrum.server.project.Project)projectDao.getById(this.projectId);
}
public final String getProjectId() {
return this.projectId;
}
public final scrum.server.project.Project getProject() {
if (projectCache == null) updateProjectCache();
return projectCache;
}
public final void setProject(scrum.server.project.Project project) {
project = prepareProject(project);
if (isProject(project)) return;
this.projectId = project == null ? null : project.getId();
projectCache = project;
fireModified("project="+project);
}
protected scrum.server.project.Project prepareProject(scrum.server.project.Project project) {
return project;
}
protected void repairDeadProjectReference(String entityId) {
if (this.projectId == null || entityId.equals(this.projectId)) {
repairMissingMaster();
}
}
public final boolean isProjectSet() {
return this.projectId != null;
}
public final boolean isProject(scrum.server.project.Project project) {
if (this.projectId == null && project == null) return true;
return project != null && project.getId().equals(this.projectId);
}
protected final void updateProject(Object value) {
setProject(value == null ? null : (scrum.server.project.Project)projectDao.getById((String)value));
}
// -----------------------------------------------------------
// - sprint
// -----------------------------------------------------------
private String sprintId;
private transient scrum.server.sprint.Sprint sprintCache;
private void updateSprintCache() {
sprintCache = this.sprintId == null ? null : (scrum.server.sprint.Sprint)sprintDao.getById(this.sprintId);
}
public final String getSprintId() {
return this.sprintId;
}
public final scrum.server.sprint.Sprint getSprint() {
if (sprintCache == null) updateSprintCache();
return sprintCache;
}
public final void setSprint(scrum.server.sprint.Sprint sprint) {
sprint = prepareSprint(sprint);
if (isSprint(sprint)) return;
this.sprintId = sprint == null ? null : sprint.getId();
sprintCache = sprint;
fireModified("sprint="+sprint);
}
protected scrum.server.sprint.Sprint prepareSprint(scrum.server.sprint.Sprint sprint) {
return sprint;
}
protected void repairDeadSprintReference(String entityId) {
if (this.sprintId == null || entityId.equals(this.sprintId)) {
setSprint(null);
}
}
public final boolean isSprintSet() {
return this.sprintId != null;
}
public final boolean isSprint(scrum.server.sprint.Sprint sprint) {
if (this.sprintId == null && sprint == null) return true;
return sprint != null && sprint.getId().equals(this.sprintId);
}
protected final void updateSprint(Object value) {
setSprint(value == null ? null : (scrum.server.sprint.Sprint)sprintDao.getById((String)value));
}
// -----------------------------------------------------------
// - issue
// -----------------------------------------------------------
private String issueId;
private transient scrum.server.issues.Issue issueCache;
private void updateIssueCache() {
issueCache = this.issueId == null ? null : (scrum.server.issues.Issue)issueDao.getById(this.issueId);
}
public final String getIssueId() {
return this.issueId;
}
public final scrum.server.issues.Issue getIssue() {
if (issueCache == null) updateIssueCache();
return issueCache;
}
public final void setIssue(scrum.server.issues.Issue issue) {
issue = prepareIssue(issue);
if (isIssue(issue)) return;
this.issueId = issue == null ? null : issue.getId();
issueCache = issue;
fireModified("issue="+issue);
}
protected scrum.server.issues.Issue prepareIssue(scrum.server.issues.Issue issue) {
return issue;
}
protected void repairDeadIssueReference(String entityId) {
if (this.issueId == null || entityId.equals(this.issueId)) {
setIssue(null);
}
}
public final boolean isIssueSet() {
return this.issueId != null;
}
public final boolean isIssue(scrum.server.issues.Issue issue) {
if (this.issueId == null && issue == null) return true;
return issue != null && issue.getId().equals(this.issueId);
}
protected final void updateIssue(Object value) {
setIssue(value == null ? null : (scrum.server.issues.Issue)issueDao.getById((String)value));
}
// -----------------------------------------------------------
// - number
// -----------------------------------------------------------
private int number;
public final int getNumber() {
return number;
}
public final void setNumber(int number) {
number = prepareNumber(number);
if (isNumber(number)) return;
this.number = number;
fireModified("number="+number);
}
protected int prepareNumber(int number) {
return number;
}
public final boolean isNumber(int number) {
return this.number == number;
}
protected final void updateNumber(Object value) {
setNumber((Integer)value);
}
// -----------------------------------------------------------
// - qualitys
// -----------------------------------------------------------
private java.util.Set<String> qualitysIds = new java.util.HashSet<String>();
public final java.util.Set<scrum.server.project.Quality> getQualitys() {
return (java.util.Set) qualityDao.getByIdsAsSet(this.qualitysIds);
}
public final void setQualitys(Collection<scrum.server.project.Quality> qualitys) {
qualitys = prepareQualitys(qualitys);
if (qualitys == null) qualitys = Collections.emptyList();
java.util.Set<String> ids = getIdsAsSet(qualitys);
if (this.qualitysIds.equals(ids)) return;
this.qualitysIds = ids;
fireModified("qualitys="+Str.format(qualitys));
}
protected Collection<scrum.server.project.Quality> prepareQualitys(Collection<scrum.server.project.Quality> qualitys) {
return qualitys;
}
protected void repairDeadQualityReference(String entityId) {
if (this.qualitysIds.remove(entityId)) fireModified("qualitys-=" + entityId);
}
public final boolean containsQuality(scrum.server.project.Quality quality) {
if (quality == null) return false;
return this.qualitysIds.contains(quality.getId());
}
public final int getQualitysCount() {
return this.qualitysIds.size();
}
public final boolean isQualitysEmpty() {
return this.qualitysIds.isEmpty();
}
public final boolean addQuality(scrum.server.project.Quality quality) {
if (quality == null) throw new IllegalArgumentException("quality == null");
boolean added = this.qualitysIds.add(quality.getId());
if (added) fireModified("qualitys+=" + quality);
return added;
}
public final boolean addQualitys(Collection<scrum.server.project.Quality> qualitys) {
if (qualitys == null) throw new IllegalArgumentException("qualitys == null");
boolean added = false;
for (scrum.server.project.Quality quality : qualitys) {
added = added | this.qualitysIds.add(quality.getId());
}
if (added) fireModified("qualitys+="+Str.format(qualitys));
return added;
}
public final boolean removeQuality(scrum.server.project.Quality quality) {
if (quality == null) throw new IllegalArgumentException("quality == null");
if (this.qualitysIds == null) return false;
boolean removed = this.qualitysIds.remove(quality.getId());
if (removed) fireModified("qualitys-=" + quality);
return removed;
}
public final boolean removeQualitys(Collection<scrum.server.project.Quality> qualitys) {
if (qualitys == null) return false;
if (qualitys.isEmpty()) return false;
boolean removed = false;
for (scrum.server.project.Quality _element: qualitys) {
removed = removed | removeQuality(_element);
}
if (removed) fireModified("qualitys-="+Str.format(qualitys));
return removed;
}
public final boolean clearQualitys() {
if (this.qualitysIds.isEmpty()) return false;
this.qualitysIds.clear();
fireModified("qualitys cleared");
return true;
}
protected final void updateQualitys(Object value) {
Collection<String> ids = (Collection<String>) value;
setQualitys((java.util.Set) qualityDao.getByIdsAsSet(ids));
}
// -----------------------------------------------------------
// - label
// -----------------------------------------------------------
private java.lang.String label;
public final java.lang.String getLabel() {
return label;
}
public final void setLabel(java.lang.String label) {
label = prepareLabel(label);
if (isLabel(label)) return;
this.label = label;
fireModified("label="+label);
}
protected java.lang.String prepareLabel(java.lang.String label) {
label = Str.removeUnreadableChars(label);
return label;
}
public final boolean isLabelSet() {
return this.label != null;
}
public final boolean isLabel(java.lang.String label) {
if (this.label == null && label == null) return true;
return this.label != null && this.label.equals(label);
}
protected final void updateLabel(Object value) {
setLabel((java.lang.String)value);
}
// -----------------------------------------------------------
// - description
// -----------------------------------------------------------
private java.lang.String description;
public final java.lang.String getDescription() {
return description;
}
public final void setDescription(java.lang.String description) {
description = prepareDescription(description);
if (isDescription(description)) return;
this.description = description;
fireModified("description="+description);
}
protected java.lang.String prepareDescription(java.lang.String description) {
description = Str.removeUnreadableChars(description);
return description;
}
public final boolean isDescriptionSet() {
return this.description != null;
}
public final boolean isDescription(java.lang.String description) {
if (this.description == null && description == null) return true;
return this.description != null && this.description.equals(description);
}
protected final void updateDescription(Object value) {
setDescription((java.lang.String)value);
}
// -----------------------------------------------------------
// - testDescription
// -----------------------------------------------------------
private java.lang.String testDescription;
public final java.lang.String getTestDescription() {
return testDescription;
}
public final void setTestDescription(java.lang.String testDescription) {
testDescription = prepareTestDescription(testDescription);
if (isTestDescription(testDescription)) return;
this.testDescription = testDescription;
fireModified("testDescription="+testDescription);
}
protected java.lang.String prepareTestDescription(java.lang.String testDescription) {
testDescription = Str.removeUnreadableChars(testDescription);
return testDescription;
}
public final boolean isTestDescriptionSet() {
return this.testDescription != null;
}
public final boolean isTestDescription(java.lang.String testDescription) {
if (this.testDescription == null && testDescription == null) return true;
return this.testDescription != null && this.testDescription.equals(testDescription);
}
protected final void updateTestDescription(Object value) {
setTestDescription((java.lang.String)value);
}
// -----------------------------------------------------------
// - estimatedWork
// -----------------------------------------------------------
private java.lang.Float estimatedWork;
public final java.lang.Float getEstimatedWork() {
return estimatedWork;
}
public final void setEstimatedWork(java.lang.Float estimatedWork) {
estimatedWork = prepareEstimatedWork(estimatedWork);
if (isEstimatedWork(estimatedWork)) return;
this.estimatedWork = estimatedWork;
fireModified("estimatedWork="+estimatedWork);
}
protected java.lang.Float prepareEstimatedWork(java.lang.Float estimatedWork) {
return estimatedWork;
}
public final boolean isEstimatedWorkSet() {
return this.estimatedWork != null;
}
public final boolean isEstimatedWork(java.lang.Float estimatedWork) {
if (this.estimatedWork == null && estimatedWork == null) return true;
return this.estimatedWork != null && this.estimatedWork.equals(estimatedWork);
}
protected final void updateEstimatedWork(Object value) {
setEstimatedWork((java.lang.Float)value);
}
// -----------------------------------------------------------
// - rejectDate
// -----------------------------------------------------------
private ilarkesto.base.time.Date rejectDate;
public final ilarkesto.base.time.Date getRejectDate() {
return rejectDate;
}
public final void setRejectDate(ilarkesto.base.time.Date rejectDate) {
rejectDate = prepareRejectDate(rejectDate);
if (isRejectDate(rejectDate)) return;
this.rejectDate = rejectDate;
fireModified("rejectDate="+rejectDate);
}
protected ilarkesto.base.time.Date prepareRejectDate(ilarkesto.base.time.Date rejectDate) {
return rejectDate;
}
public final boolean isRejectDateSet() {
return this.rejectDate != null;
}
public final boolean isRejectDate(ilarkesto.base.time.Date rejectDate) {
if (this.rejectDate == null && rejectDate == null) return true;
return this.rejectDate != null && this.rejectDate.equals(rejectDate);
}
protected final void updateRejectDate(Object value) {
value = value == null ? null : new ilarkesto.base.time.Date((String)value);
setRejectDate((ilarkesto.base.time.Date)value);
}
// -----------------------------------------------------------
// - closed
// -----------------------------------------------------------
private boolean closed;
public final boolean isClosed() {
return closed;
}
public final void setClosed(boolean closed) {
closed = prepareClosed(closed);
if (isClosed(closed)) return;
this.closed = closed;
fireModified("closed="+closed);
}
protected boolean prepareClosed(boolean closed) {
return closed;
}
public final boolean isClosed(boolean closed) {
return this.closed == closed;
}
protected final void updateClosed(Object value) {
setClosed((Boolean)value);
}
// -----------------------------------------------------------
// - dirty
// -----------------------------------------------------------
private boolean dirty;
public final boolean isDirty() {
return dirty;
}
public final void setDirty(boolean dirty) {
dirty = prepareDirty(dirty);
if (isDirty(dirty)) return;
this.dirty = dirty;
fireModified("dirty="+dirty);
}
protected boolean prepareDirty(boolean dirty) {
return dirty;
}
public final boolean isDirty(boolean dirty) {
return this.dirty == dirty;
}
protected final void updateDirty(Object value) {
setDirty((Boolean)value);
}
// -----------------------------------------------------------
// - workEstimationVotingActive
// -----------------------------------------------------------
private boolean workEstimationVotingActive;
public final boolean isWorkEstimationVotingActive() {
return workEstimationVotingActive;
}
public final void setWorkEstimationVotingActive(boolean workEstimationVotingActive) {
workEstimationVotingActive = prepareWorkEstimationVotingActive(workEstimationVotingActive);
if (isWorkEstimationVotingActive(workEstimationVotingActive)) return;
this.workEstimationVotingActive = workEstimationVotingActive;
fireModified("workEstimationVotingActive="+workEstimationVotingActive);
}
protected boolean prepareWorkEstimationVotingActive(boolean workEstimationVotingActive) {
return workEstimationVotingActive;
}
public final boolean isWorkEstimationVotingActive(boolean workEstimationVotingActive) {
return this.workEstimationVotingActive == workEstimationVotingActive;
}
protected final void updateWorkEstimationVotingActive(Object value) {
setWorkEstimationVotingActive((Boolean)value);
}
// -----------------------------------------------------------
// - workEstimationVotingShowoff
// -----------------------------------------------------------
private boolean workEstimationVotingShowoff;
public final boolean isWorkEstimationVotingShowoff() {
return workEstimationVotingShowoff;
}
public final void setWorkEstimationVotingShowoff(boolean workEstimationVotingShowoff) {
workEstimationVotingShowoff = prepareWorkEstimationVotingShowoff(workEstimationVotingShowoff);
if (isWorkEstimationVotingShowoff(workEstimationVotingShowoff)) return;
this.workEstimationVotingShowoff = workEstimationVotingShowoff;
fireModified("workEstimationVotingShowoff="+workEstimationVotingShowoff);
}
protected boolean prepareWorkEstimationVotingShowoff(boolean workEstimationVotingShowoff) {
return workEstimationVotingShowoff;
}
public final boolean isWorkEstimationVotingShowoff(boolean workEstimationVotingShowoff) {
return this.workEstimationVotingShowoff == workEstimationVotingShowoff;
}
protected final void updateWorkEstimationVotingShowoff(Object value) {
setWorkEstimationVotingShowoff((Boolean)value);
}
// -----------------------------------------------------------
// - tasksOrderIds
// -----------------------------------------------------------
private java.util.List<java.lang.String> tasksOrderIds = new java.util.ArrayList<java.lang.String>();
public final java.util.List<java.lang.String> getTasksOrderIds() {
return new java.util.ArrayList<java.lang.String>(tasksOrderIds);
}
public final void setTasksOrderIds(Collection<java.lang.String> tasksOrderIds) {
tasksOrderIds = prepareTasksOrderIds(tasksOrderIds);
if (tasksOrderIds == null) tasksOrderIds = Collections.emptyList();
if (this.tasksOrderIds.equals(tasksOrderIds)) return;
this.tasksOrderIds = new java.util.ArrayList<java.lang.String>(tasksOrderIds);
fireModified("tasksOrderIds="+Str.format(tasksOrderIds));
}
protected Collection<java.lang.String> prepareTasksOrderIds(Collection<java.lang.String> tasksOrderIds) {
return tasksOrderIds;
}
public final boolean containsTasksOrderId(java.lang.String tasksOrderId) {
if (tasksOrderId == null) return false;
return this.tasksOrderIds.contains(tasksOrderId);
}
public final int getTasksOrderIdsCount() {
return this.tasksOrderIds.size();
}
public final boolean isTasksOrderIdsEmpty() {
return this.tasksOrderIds.isEmpty();
}
public final boolean addTasksOrderId(java.lang.String tasksOrderId) {
if (tasksOrderId == null) throw new IllegalArgumentException("tasksOrderId == null");
boolean added = this.tasksOrderIds.add(tasksOrderId);
if (added) fireModified("tasksOrderIds+=" + tasksOrderId);
return added;
}
public final boolean addTasksOrderIds(Collection<java.lang.String> tasksOrderIds) {
if (tasksOrderIds == null) throw new IllegalArgumentException("tasksOrderIds == null");
boolean added = false;
for (java.lang.String tasksOrderId : tasksOrderIds) {
added = added | this.tasksOrderIds.add(tasksOrderId);
}
if (added) fireModified("tasksOrderIds+="+Str.format(tasksOrderIds));
return added;
}
public final boolean removeTasksOrderId(java.lang.String tasksOrderId) {
if (tasksOrderId == null) throw new IllegalArgumentException("tasksOrderId == null");
if (this.tasksOrderIds == null) return false;
boolean removed = this.tasksOrderIds.remove(tasksOrderId);
if (removed) fireModified("tasksOrderIds-=" + tasksOrderId);
return removed;
}
public final boolean removeTasksOrderIds(Collection<java.lang.String> tasksOrderIds) {
if (tasksOrderIds == null) return false;
if (tasksOrderIds.isEmpty()) return false;
boolean removed = false;
for (java.lang.String _element: tasksOrderIds) {
removed = removed | removeTasksOrderId(_element);
}
if (removed) fireModified("tasksOrderIds-="+Str.format(tasksOrderIds));
return removed;
}
public final boolean clearTasksOrderIds() {
if (this.tasksOrderIds.isEmpty()) return false;
this.tasksOrderIds.clear();
fireModified("tasksOrderIds cleared");
return true;
}
public final String getTasksOrderIdsAsCommaSeparatedString() {
if (this.tasksOrderIds.isEmpty()) return null;
return Str.concat(this.tasksOrderIds,", ");
}
public final void setTasksOrderIdsAsCommaSeparatedString(String tasksOrderIds) {
this.tasksOrderIds = new java.util.ArrayList(Str.parseCommaSeparatedString(tasksOrderIds));
}
protected final void updateTasksOrderIds(Object value) {
setTasksOrderIds((java.util.List<java.lang.String>) value);
}
public void updateProperties(Map<?, ?> properties) {
for (Map.Entry entry : properties.entrySet()) {
String property = (String) entry.getKey();
if (property.equals("id")) continue;
Object value = entry.getValue();
if (property.equals("projectId")) updateProject(value);
if (property.equals("sprintId")) updateSprint(value);
if (property.equals("issueId")) updateIssue(value);
if (property.equals("number")) updateNumber(value);
if (property.equals("qualitysIds")) updateQualitys(value);
if (property.equals("label")) updateLabel(value);
if (property.equals("description")) updateDescription(value);
if (property.equals("testDescription")) updateTestDescription(value);
if (property.equals("estimatedWork")) updateEstimatedWork(value);
if (property.equals("rejectDate")) updateRejectDate(value);
if (property.equals("closed")) updateClosed(value);
if (property.equals("dirty")) updateDirty(value);
if (property.equals("workEstimationVotingActive")) updateWorkEstimationVotingActive(value);
if (property.equals("workEstimationVotingShowoff")) updateWorkEstimationVotingShowoff(value);
if (property.equals("tasksOrderIds")) updateTasksOrderIds(value);
}
}
protected void repairDeadReferences(String entityId) {
super.repairDeadReferences(entityId);
repairDeadProjectReference(entityId);
repairDeadSprintReference(entityId);
repairDeadIssueReference(entityId);
if (this.qualitysIds == null) this.qualitysIds = new java.util.HashSet<String>();
repairDeadQualityReference(entityId);
if (this.tasksOrderIds == null) this.tasksOrderIds = new java.util.ArrayList<java.lang.String>();
}
// --- ensure integrity ---
public void ensureIntegrity() {
super.ensureIntegrity();
if (!isProjectSet()) {
repairMissingMaster();
return;
}
try {
getProject();
} catch (EntityDoesNotExistException ex) {
LOG.info("Repairing dead project reference");
repairDeadProjectReference(this.projectId);
}
try {
getSprint();
} catch (EntityDoesNotExistException ex) {
LOG.info("Repairing dead sprint reference");
repairDeadSprintReference(this.sprintId);
}
try {
getIssue();
} catch (EntityDoesNotExistException ex) {
LOG.info("Repairing dead issue reference");
repairDeadIssueReference(this.issueId);
}
if (this.qualitysIds == null) this.qualitysIds = new java.util.HashSet<String>();
Set<String> qualitys = new HashSet<String>(this.qualitysIds);
for (String entityId : qualitys) {
try {
qualityDao.getById(entityId);
} catch (EntityDoesNotExistException ex) {
LOG.info("Repairing dead quality reference");
repairDeadQualityReference(entityId);
}
}
if (this.tasksOrderIds == null) this.tasksOrderIds = new java.util.ArrayList<java.lang.String>();
}
// -----------------------------------------------------------
// - dependencies
// -----------------------------------------------------------
static scrum.server.project.ProjectDao projectDao;
public static final void setProjectDao(scrum.server.project.ProjectDao projectDao) {
GRequirement.projectDao = projectDao;
}
static scrum.server.sprint.SprintDao sprintDao;
public static final void setSprintDao(scrum.server.sprint.SprintDao sprintDao) {
GRequirement.sprintDao = sprintDao;
}
static scrum.server.issues.IssueDao issueDao;
public static final void setIssueDao(scrum.server.issues.IssueDao issueDao) {
GRequirement.issueDao = issueDao;
}
static scrum.server.project.QualityDao qualityDao;
public static final void setQualityDao(scrum.server.project.QualityDao qualityDao) {
GRequirement.qualityDao = qualityDao;
}
static RequirementDao requirementDao;
public static final void setRequirementDao(RequirementDao requirementDao) {
GRequirement.requirementDao = requirementDao;
}
}