保持项目,项目阶段和阶段模板的状态(TO_DO,IN_PROGRESS,已完成)的最佳方法是什么

时间:2018-08-18 12:43:17

标签: java

我需要为项目,阶段和模板做一个状态。

Example in photo

我试图制作一个具有(PhaseID,TemplateID,Status)的地图。 您能给我一个更好的主意吗,我可以拥有什么:项目ID,阶段ID,TemplateId和Status(TO_DO,Done)?

Project类:

@Entity
@Table(name = "projects")
public class Project {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;


    @NotNull
    @Size(max = 100)
    private java.lang.String name;

    @NotNull
    private Integer size;

    @ManyToMany(cascade = CascadeType.PERSIST)
    private List<ProjectPhase> phases = new ArrayList<>();

    public Project(){}

    public Project(java.lang.String name, Integer size, String status) {
        this.name = name;
        this.size = size;
        this.status = status;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public java.lang.String getName() {
        return name;
    }

    public void setName(java.lang.String name) {
        this.name = name;
    }

    public Integer getSize() {
        return size;
    }

    public void setSize(Integer size) {
        this.size = size;
    }

    public List<ProjectPhase> getPhases() {
        return phases;
    }

    public void setPhases(List<ProjectPhase> phases) {
        this.phases = phases;
    }
}

阶段类:

@Entity
@Table(name = "phases")
public class ProjectPhase {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @NotNull
    @Size(max = 100)
    private String name;

    @ManyToMany(cascade = CascadeType.PERSIST)
    private List<ProjectPhaseTemplate> projectPhaseTemplates;

    @ManyToMany(cascade = CascadeType.PERSIST)
    private List<Project> projects = new ArrayList<>();


    public ProjectPhase() {
    }

    public ProjectPhase(Long id, String name) {
        this.id = id;
        this.name = name;
    }


    public ProjectPhase(String name, List<ProjectPhaseTemplate> projectPhaseTemplates) {
        this.name = name;
        this.projectPhaseTemplates = projectPhaseTemplates;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<ProjectPhaseTemplate> getProjectPhaseTemplates() {
        return projectPhaseTemplates;
    }

    public void setProjectPhaseTemplates(List<ProjectPhaseTemplate> projectPhaseTemplates) {
        this.projectPhaseTemplates = projectPhaseTemplates;
    }

    public List<Project> getProjects() {
        return projects;
    }

    public void setProjects(List<Project> projects) {
        this.projects = projects;
    }

}

Template类:

@Entity
@Table(name = "template")
public class ProjectPhaseTemplate {

    @Id
    @GeneratedValue
    private Long id;
    private String name;
    private String url;

    public ProjectPhaseTemplate() {
    }

    public ProjectPhaseTemplate(String name, String url) {
        this.name = name;
        this.url = url;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }
}

我每个人都没有一个“状态”字段,因为“阶段”可以位于更多项目中,而“模板”可以位于更多阶段中。如果我将“状态”设置为模板,则具有该模板的所有阶段的状态都将相同。

我想成为这样。 如果所有模板都标记为“完成”,则阶段会将状态更改为“完成”。 如果属于项目的所有阶段都标记为“完成”,则项目会将状态更改为“完成” 所以我只需要一个状态模板即可。

1 个答案:

答案 0 :(得分:0)

您可以创建一个新类StatusInformation,其中包含给定项目阶段模板路径及其状态的所有信息。看起来像这样:

public class StatusInformation {
    private Project project;
    private Phase phase;
    private Template template;
    private StatusEnum status;

    // getters and setters
}

这样,您可以表达以下语句:

  

“项目Z中使用的Y阶段的模板X处于TODO状态”

对于稍微不同的组合,您可以具有不同的状态值:

  

“在项目 A 中使用的阶段y中的模板X处于完成状态”