com.haulmont.timesheets.entity.Task.java Source code

Java tutorial

Introduction

Here is the source code for com.haulmont.timesheets.entity.Task.java

Source

/*
 * Copyright (c) 2016 Haulmont
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.haulmont.timesheets.entity;

import com.haulmont.chile.core.annotations.Composition;
import com.haulmont.chile.core.annotations.MetaProperty;
import com.haulmont.chile.core.annotations.NamePattern;
import com.haulmont.cuba.core.entity.StandardEntity;
import com.haulmont.cuba.core.entity.annotation.OnDelete;
import com.haulmont.cuba.core.global.DeletePolicy;
import org.apache.commons.lang.StringUtils;

import javax.persistence.*;
import java.util.Set;

/**
 * @author gorelov
 */
@NamePattern("[%s] %s|project,name")
@Table(name = "TS_TASK")
@Entity(name = "ts$Task")
public class Task extends StandardEntity {

    private static final long serialVersionUID = 4693836896751773146L;

    @Column(name = "NAME", nullable = false, length = 100)
    protected String name;

    @Column(name = "CODE", nullable = false, length = 50)
    protected String code;

    @Column(name = "DESCRIPTION")
    protected String description;

    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "PROJECT_ID")
    protected Project project;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "TYPE_ID")
    protected TaskType type;

    @Column(name = "STATUS", nullable = false)
    protected String status;

    @JoinTable(name = "TS_TASK_TAG_TYPE_LINK", joinColumns = @JoinColumn(name = "TASK_ID"), inverseJoinColumns = @JoinColumn(name = "TAG_TYPE_ID"))
    @ManyToMany
    protected Set<TagType> requiredTagTypes;

    @JoinTable(name = "TS_TASK_TAG_LINK", joinColumns = @JoinColumn(name = "TASK_ID"), inverseJoinColumns = @JoinColumn(name = "TAG_ID"))
    @ManyToMany
    protected Set<Tag> defaultTags;

    @JoinTable(name = "TS_TASK_PROJECT_PARTICIPANT_LINK", joinColumns = @JoinColumn(name = "TASK_ID"), inverseJoinColumns = @JoinColumn(name = "PROJECT_PARTICIPANT_ID"))
    @ManyToMany
    protected Set<ProjectParticipant> exclusiveParticipants;

    @Composition
    @OnDelete(DeletePolicy.CASCADE)
    @OneToMany(mappedBy = "task")
    protected Set<TimeEntry> timeEntries;

    public void setExclusiveParticipants(Set<ProjectParticipant> exclusiveParticipants) {
        this.exclusiveParticipants = exclusiveParticipants;
    }

    public Set<ProjectParticipant> getExclusiveParticipants() {
        return exclusiveParticipants;
    }

    public TaskStatus getStatus() {
        return status == null ? null : TaskStatus.fromId(status);
    }

    public void setStatus(TaskStatus status) {
        this.status = status == null ? null : status.getId();
    }

    public void setRequiredTagTypes(Set<TagType> requiredTagTypes) {
        this.requiredTagTypes = requiredTagTypes;
    }

    public Set<TagType> getRequiredTagTypes() {
        return requiredTagTypes;
    }

    public void setTimeEntries(Set<TimeEntry> timeEntries) {
        this.timeEntries = timeEntries;
    }

    public Set<TimeEntry> getTimeEntries() {
        return timeEntries;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public void setDefaultTags(Set<Tag> defaultTags) {
        this.defaultTags = defaultTags;
    }

    public Set<Tag> getDefaultTags() {
        return defaultTags;
    }

    public TaskType getType() {
        return type;
    }

    public void setType(TaskType type) {
        this.type = type;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getDescription() {
        return description;
    }

    public void setProject(Project project) {
        this.project = project;
    }

    public Project getProject() {
        return project;
    }

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

    public String getName() {
        return name;
    }

    @MetaProperty
    public String getDefaultTagsList() {
        if (defaultTags != null) {
            StringBuilder stringBuilder = new StringBuilder();
            for (Tag defaultTag : defaultTags) {
                stringBuilder.append(defaultTag.getInstanceName()).append(",");
            }
            return StringUtils.chop(stringBuilder.toString());
        }

        return "";
    }

    @MetaProperty
    public String getRequiredTagTypesList() {
        if (requiredTagTypes != null) {
            StringBuilder stringBuilder = new StringBuilder();
            for (TagType requiredTagType : requiredTagTypes) {
                stringBuilder.append(requiredTagType.getInstanceName()).append(",");
            }
            return StringUtils.chop(stringBuilder.toString());
        }

        return "";
    }
}