Projekt

Obecné

Profil

Stáhnout (2.77 KB) Statistiky
| Větev: | Revize:
1
package vldc.aswi.domain;
2

    
3
import lombok.Data;
4
import lombok.EqualsAndHashCode;
5
import lombok.NoArgsConstructor;
6
import vldc.aswi.domain.parameter.Parameter;
7

    
8
import javax.persistence.*;
9
import java.util.Collection;
10
import java.util.Collections;
11
import java.util.List;
12

    
13
/**
14
 * Domain entity representing Assembly in application.
15
 */
16
@Entity(name = "Sestava")
17
@Data
18
@EqualsAndHashCode(callSuper = true)
19
@NoArgsConstructor
20
public class Assembly extends EntityParent {
21

    
22
    /** Name of Assembly. */
23
    @Column(name = "nazev")
24
    private String name;
25

    
26
    /** SQL query which gets data from database. */
27
    @Column(name = "sql_dotaz")
28
    private String SQLQuery;
29

    
30
    /** Specific order of assembly in list of assemblies. */
31
    @Column(name = "poradi")
32
    private int assemblyOrder;
33

    
34
    @Column(name = "verejny")
35
    private int isPublic;
36

    
37
    /** List of configurations, which using this assembly. */
38
    @OneToMany(mappedBy = "assembly")
39
    private List<Configuration> configurations;
40

    
41
    /** List of parameters, which using this assembly. */
42
    @OneToMany(mappedBy = "assembly", fetch = FetchType.EAGER, orphanRemoval = true)
43
    private List<Parameter> parameters;
44

    
45
    /**
46
     * Creating new table with M:N relationship between Assembly and Role.
47
     * Every assembly can be used by 0 - every role.
48
     */
49
    @ManyToMany
50
    @JoinTable(
51
            name = "Sestava_ma_Role",
52
            joinColumns = @JoinColumn(name = "sestava_id"),
53
            inverseJoinColumns = @JoinColumn(name = "role_id")
54
    )
55
    private List<Role> roles;
56

    
57
    /**
58
     * Constructor.
59
     * @param name - Name of Assembly.
60
     * @param SQLQuery - SQL query which gets data from database.
61
     * @param assemblyOrder - Specific order of assembly in list of assemblies.
62
     */
63
    public Assembly(String name, String SQLQuery, int assemblyOrder, int isPublic) {
64
        this.setName(name);
65
        this.setSQLQuery(SQLQuery);
66
        this.setAssemblyOrder(assemblyOrder);
67
        this.setIsPublic(isPublic);
68
    }
69

    
70
    /**
71
     * Equal method for comparing two objects.
72
     * @param obj - Comparing object.
73
     * @return true if objects are same.
74
     */
75
    @Override
76
    public boolean equals(Object obj) {
77
        return super.equals(obj);
78
    }
79

    
80
    /**
81
     * Overriding toString method to prevent StackOverflowError.
82
     * @return Object with zero parameters.
83
     */
84
    @Override
85
    public String toString() {
86
        return "Assembly[]";
87
    }
88

    
89
    /**
90
     * Remove role from assembly in 'Sestava_ma_Role' table.
91
     * @param role - Role to be removed.
92
     */
93
    public void removeRole(Role role) {
94
        roles.remove(role);
95
        role.getAssemblies().remove(this);
96
    }
97

    
98
    /**
99
     * Sort parameter list by parameterOrder.
100
     */
101
    public void sortParameterList() {
102
        Collections.sort(parameters);
103
    }
104
}
(1-1/8)