Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 58fdf8f4

Přidáno uživatelem Vojtěch Danišík před asi 5 roky(ů)

re #7778 Created classes representing tables in database with attributes and relations between them.

Zobrazit rozdíly:

src/main/java/vldc/aswi/domain/Assembly.java
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.List;
10

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

  
20
    /** Name of Assembly. */
21
    private String name;
22

  
23
    /** SQL query which gets data from database. */
24
    private String SQLQuery;
25

  
26
    /** Specific order of assembly in list of assemblies. */
27
    private int order;
28

  
29
    /** List of configurations, which using this assembly. */
30
    @OneToMany(mappedBy = "assembly")
31
    private List<Configuration> configurations;
32

  
33
    /** List of parameters, which using this assembly. */
34
    @OneToMany(mappedBy = "assembly")
35
    private List<Parameter> parameters;
36

  
37
    /**
38
     * Creating new table with M:N relationship between Assembly and Role.
39
     * Every assembly can be used by 0 - every role.
40
     */
41
    @ManyToMany
42
    @JoinTable(
43
            name = "Sestava_ma_Role",
44
            joinColumns = @JoinColumn(name = "sestava_id"),
45
            inverseJoinColumns = @JoinColumn(name = "role_id")
46
    )
47
    private List<Role> roles;
48

  
49
    /**
50
     * Constructor.
51
     * @param name - Name of Assembly.
52
     * @param SQLQuery - SQL query which gets data from database.
53
     * @param order - Specific order of assembly in list of assemblies.
54
     */
55
    public Assembly(String name, String SQLQuery, int order) {
56
        this.setName(name);
57
        this.setSQLQuery(SQLQuery);
58
        this.setOrder(order);
59
    }
60
}
src/main/java/vldc/aswi/domain/Configuration.java
1
package vldc.aswi.domain;
2

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

  
8
import javax.persistence.*;
9
import java.util.List;
10

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

  
20
    /** Name of configuration. */
21
    private String name;
22

  
23
    /** Name of contingent table. */
24
    private String tableName;
25

  
26
    /** Specific user, which created this configuration. */
27
    @ManyToOne(fetch= FetchType.LAZY)
28
    @JoinColumn(name = "uzivatel_id")
29
    private User user;
30

  
31
    /** Used assembly as template in configuration. */
32
    @ManyToOne(fetch= FetchType.LAZY)
33
    @JoinColumn(name = "sestava_id")
34
    private Assembly assembly;
35

  
36
    /** List of parametersInConfiguration, which is part of this configuration. */
37
    @OneToMany(mappedBy = "configuration")
38
    private List<ParameterInConfiguration> parametersInConfiguration;
39

  
40
    /**
41
     * Constructor.
42
     * @param name - Name of configuration.
43
     * @param tableName - Name of contingent table.
44
     */
45
    public Configuration(String name, String tableName) {
46
        this.setName(name);
47
        this.setTableName(tableName);
48
    }
49
}
src/main/java/vldc/aswi/domain/EntityParent.java
14 14
@Data
15 15
public class EntityParent {
16 16

  
17
    /** Specific identificator for every table. */
17 18
    @Id
18 19
    @GeneratedValue(strategy = GenerationType.AUTO)
19 20
    private Long id;
src/main/java/vldc/aswi/domain/Function.java
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
import vldc.aswi.domain.parameter.ParameterInConfiguration;
8

  
9
import javax.persistence.Entity;
10
import javax.persistence.ManyToMany;
11
import java.util.List;
12

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

  
22
    /** Name of function. */
23
    private String name;
24

  
25
    /** List of parameters, which defined that this function can be used. */
26
    @ManyToMany(mappedBy = "functions")
27
    private List<Parameter> parameters;
28

  
29
    /** List of parametersInConfigurations, which using this function. */
30
    @ManyToMany(mappedBy = "functions")
31
    private List<ParameterInConfiguration> parametersInConfigurations;
32

  
33
    /**
34
     * Constructor.
35
     * @param name - Name of function.
36
     */
37
    public Function(String name) {
38
        this.setName(name);
39
    }
40
}
src/main/java/vldc/aswi/domain/Location.java
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
import vldc.aswi.domain.parameter.ParameterInConfiguration;
8
import javax.persistence.Entity;
9
import javax.persistence.ManyToMany;
10
import javax.persistence.OneToMany;
11
import java.util.List;
12

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

  
22
    /** Name of location. */
23
    private String name;
24

  
25
    /** List of parameters which allows this location. */
26
    @ManyToMany(mappedBy = "locations")
27
    private List<Parameter> parameters;
28

  
29
    /** List of parametersInConfiguration which using this location. */
30
    @OneToMany(mappedBy = "location")
31
    private List<ParameterInConfiguration> parametersInConfiguration;
32

  
33
    /**
34
     * Constructor.
35
     * @param name - Name of location.
36
     */
37
    public Location(String name) {
38
        this.setName(name);
39
    }
40
}
src/main/java/vldc/aswi/domain/Operator.java
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
import vldc.aswi.domain.parameter.ParameterInConfiguration;
8
import javax.persistence.Entity;
9
import javax.persistence.ManyToMany;
10
import javax.persistence.OneToMany;
11
import java.util.List;
12

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

  
22
    /** Name of operator. */
23
    private String name;
24

  
25
    /** List of parameters which allowing this operator to be used. */
26
    @ManyToMany(mappedBy = "operators")
27
    private List<Parameter> parameters;
28

  
29
    /** List of parametersInConfiguration using this operator. */
30
    @OneToMany(mappedBy = "operator")
31
    private List<ParameterInConfiguration> parametersInConfiguration;
32

  
33
    /**
34
     * Constructor.
35
     * @param name - Name of operator.
36
     */
37
    public Operator(String name) {
38
        this.setName(name);
39
    }
40
}
src/main/java/vldc/aswi/domain/Role.java
1
package vldc.aswi.domain;
2

  
3
import lombok.Data;
4
import lombok.EqualsAndHashCode;
5
import lombok.NoArgsConstructor;
6
import javax.persistence.Entity;
7
import javax.persistence.ManyToMany;
8
import javax.persistence.OneToMany;
9
import java.util.List;
10

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

  
20
    /** Name of role. */
21
    private String name;
22

  
23
    /** List of assemblies, which using this role. */
24
    @ManyToMany(mappedBy = "roles")
25
    private List<Assembly> assemblies;
26

  
27
    /** List of users with this role. */
28
    @OneToMany(mappedBy = "role")
29
    private List<User> users;
30

  
31
    /**
32
     * Constructor.
33
     * @param name - Name of role.
34
     */
35
    public Role(String name) {
36
        this.setName(name);
37
    }
38

  
39
}
src/main/java/vldc/aswi/domain/User.java
5 5
import lombok.Data;
6 6
import lombok.EqualsAndHashCode;
7 7
import lombok.NoArgsConstructor;
8
import vldc.aswi.domain.EntityParent;
9

  
10
import java.util.List;
8 11

  
9 12
/**
10 13
 * Domain entity representing User in application. User is used for loging into application.
11 14
 */
12
@Entity
15
@Entity(name = "Uzivatel")
13 16
@Data
14 17
@EqualsAndHashCode(callSuper = true)
15 18
@NoArgsConstructor
16 19
public class User extends EntityParent {
17 20

  
21
    private String username;
22

  
23
    private String password;
24

  
25
    @ManyToOne(fetch=FetchType.LAZY)
26
    @JoinColumn(name = "role_id")
27
    private Role role;
28

  
29
    @OneToMany(mappedBy = "user")
30
    private List<Configuration> configurations;
31

  
32

  
33
    public User(String username, String password) {
34
        this.setUsername(username);
35
        this.setPassword(password);
36
    }
18 37
}
src/main/java/vldc/aswi/domain/parameter/Parameter.java
1
package vldc.aswi.domain.parameter;
2

  
3
import lombok.Data;
4
import lombok.EqualsAndHashCode;
5
import lombok.NoArgsConstructor;
6
import vldc.aswi.domain.*;
7
import javax.persistence.*;
8
import java.util.List;
9

  
10
/**
11
 * Domain entity representing Parameter in application.
12
 */
13
@Entity(name = "Parametr")
14
@Data
15
@EqualsAndHashCode(callSuper = true)
16
@NoArgsConstructor
17
public class Parameter extends EntityParent {
18

  
19
    /** Name of parameter in SQL query. */
20
    private String name;
21

  
22
    /** Admin-defined name of parameter, which will be used in assembly. */
23
    private String nameOfSelect;
24

  
25
    /** Specific assembly, in which this parameter will be part of. */
26
    @ManyToOne(fetch = FetchType.LAZY)
27
    @JoinColumn(name = "sestava_id")
28
    private Assembly assembly;
29

  
30
    /** Default value of this parameter. */
31
    private String defaultValue;
32

  
33
    /** List of parametersInConfiguration, which using this parameter. */
34
    @OneToMany(mappedBy = "parameter")
35
    private List<ParameterInConfiguration> parametersInConfiguration;
36

  
37
    /** List of parametersInConfiguration, which using this parameter. */
38
    @OneToMany(mappedBy = "parameter")
39
    private List<ParameterValue> parameterValues;
40

  
41
    /**
42
     * Creating new table with M:N relationship between Parameter and Location.
43
     * Specify which locations can be used for parameter.
44
     */
45
    @ManyToMany
46
    @JoinTable(
47
            name = "Parametr_ma_Umisteni",
48
            joinColumns = @JoinColumn(name = "parametr_id"),
49
            inverseJoinColumns = @JoinColumn(name = "umisteni_id")
50
    )
51
    private List<Location> locations;
52

  
53
    /**
54
     * Creating new table with M:N relationship between Parameter and Function.
55
     * Specify which functions can be used for parameter.
56
     */
57
    @ManyToMany
58
    @JoinTable(
59
            name = "Parametr_ma_Funkce",
60
            joinColumns = @JoinColumn(name = "parametr_id"),
61
            inverseJoinColumns = @JoinColumn(name = "funkce_id")
62
    )
63
    private List<Function> functions;
64

  
65
    /**
66
     * Creating new table with M:N relationship between Parameter and Operator.
67
     * Specify which operators can be used for parameter.
68
     */
69
    @ManyToMany
70
    @JoinTable(
71
            name = "Parametr_ma_Operator",
72
            joinColumns = @JoinColumn(name = "parametr_id"),
73
            inverseJoinColumns = @JoinColumn(name = "operator_id")
74
    )
75
    private List<Operator> operators;
76

  
77
    /**
78
     * Constructor.
79
     * @param name - Name of parameter in SQL query.
80
     * @param nameOfSelect - Admin-defined name of parameter, which will be used in assembly.
81
     * @param defaultValue - Default value of this parameter.
82
     */
83
    public Parameter(String name, String nameOfSelect, String defaultValue) {
84
        this.setName(name);
85
        this.setNameOfSelect(nameOfSelect);
86
        this.setDefaultValue(defaultValue);
87
    }
88
}
src/main/java/vldc/aswi/domain/parameter/ParameterInConfiguration.java
1
package vldc.aswi.domain.parameter;
2

  
3
import lombok.Data;
4
import lombok.EqualsAndHashCode;
5
import lombok.NoArgsConstructor;
6
import vldc.aswi.domain.*;
7
import javax.persistence.*;
8
import java.util.List;
9

  
10
/**
11
 * Domain entity representing ParameterInConfiguration in application.
12
 */
13
@Entity(name = "Parametr_konfigurace")
14
@Data
15
@EqualsAndHashCode(callSuper = true)
16
@NoArgsConstructor
17
public class ParameterInConfiguration extends EntityParent {
18

  
19
    /** Specific configuration in which is this parameterConfiguration presented. */
20
    @ManyToOne(fetch = FetchType.LAZY)
21
    @JoinColumn(name = "konfigurace_id")
22
    private Configuration configuration;
23

  
24
    /** Specific parameter of configuration, which is used as template. */
25
    @ManyToOne(fetch=FetchType.LAZY)
26
    @JoinColumn(name = "parametr_id")
27
    private Parameter parameter;
28

  
29
    /** Value of used operator. */
30
    private String operatorValue;
31

  
32
    /** Specific type of parameter, which represents type of entry. */
33
    @ManyToOne(fetch=FetchType.LAZY)
34
    @JoinColumn(name = "parametr_typ_id")
35
    private ParameterType parameterType;
36

  
37
    /** Specific location in which this parameterConfiguration will be used. */
38
    @ManyToOne(fetch=FetchType.LAZY)
39
    @JoinColumn(name = "umisteni_id")
40
    private Location location;
41

  
42
    /** User-defined name of this parameterConfiguration. */
43
    private String columnName;
44

  
45
    /** Specific operator which will be aplied onto data. */
46
    @ManyToOne(fetch=FetchType.LAZY)
47
    @JoinColumn(name = "operator_id")
48
    private Operator operator;
49

  
50
    /**
51
     * Creating new table with M:N relationship between ParameterInConfiguration and Function.
52
     * On every ParameterInConfiguration can be applied 0 - every function.
53
     */
54
    @ManyToMany
55
    @JoinTable(
56
            name = "Parametr_konfigurace_ma_Funkce",
57
            joinColumns = @JoinColumn(name = "parametr_konfigurace_id"),
58
            inverseJoinColumns = @JoinColumn(name = "funkce_id")
59
    )
60
    private List<Function> functions;
61

  
62
    /**
63
     * Constructor.
64
     * @param operatorValue - Value of used operator.
65
     * @param columnName - User-defined name of this parameterConfiguration.
66
     */
67
    public ParameterInConfiguration(String operatorValue, String columnName) {
68
        this.setOperatorValue(operatorValue);
69
        this.setColumnName(columnName);
70
    }
71
}
src/main/java/vldc/aswi/domain/parameter/ParameterType.java
1
package vldc.aswi.domain.parameter;
2

  
3
import lombok.Data;
4
import lombok.EqualsAndHashCode;
5
import lombok.NoArgsConstructor;
6
import vldc.aswi.domain.EntityParent;
7
import javax.persistence.Entity;
8
import javax.persistence.OneToMany;
9
import java.util.List;
10

  
11
/**
12
 * Domain entity representing Parameter type in application.
13
 */
14
@Entity(name = "Parametr_typ")
15
@Data
16
@EqualsAndHashCode(callSuper = true)
17
@NoArgsConstructor
18
public class ParameterType extends EntityParent {
19

  
20
    /** Name of parameter. */
21
    private String name;
22

  
23
    /** List of parameterInConfigurations, which using this parameter type. */
24
    @OneToMany(mappedBy = "parameterType")
25
    private List<ParameterInConfiguration> parametersInConfiguration;
26

  
27
    /**
28
     * Constructor.
29
     * @param name - Name of parameter.
30
     */
31
    public ParameterType(String name) {
32
        this.setName(name);
33
    }
34
}
src/main/java/vldc/aswi/domain/parameter/ParameterValue.java
1
package vldc.aswi.domain.parameter;
2

  
3
import lombok.Data;
4
import lombok.EqualsAndHashCode;
5
import lombok.NoArgsConstructor;
6
import vldc.aswi.domain.Assembly;
7
import vldc.aswi.domain.EntityParent;
8

  
9
import javax.persistence.Entity;
10
import javax.persistence.FetchType;
11
import javax.persistence.JoinColumn;
12
import javax.persistence.ManyToOne;
13

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

  
23
    /** Specific parameter which can use this value. */
24
    @ManyToOne(fetch = FetchType.LAZY)
25
    @JoinColumn(name = "parametr_id")
26
    private Parameter parameter;
27

  
28
    /** Value that can be used in specific parameter. */
29
    private String value;
30

  
31
    /**
32
     * Constructor.
33
     * @param value - Value that can be used in specific parameter.
34
     */
35
    public ParameterValue(String value) {
36
        this.setValue(value);
37
    }
38
}
src/main/resources/META-INF/additional-spring-configuration-metadata.json
1
{
2
  "properties": [
3
    {
4
      "name": "oracle.url",
5
      "type": "java.lang.String",
6
      "description": "Description for oracle.url."
7
    },
8
    {
9
      "name": "oracle.username",
10
      "type": "java.lang.String",
11
      "description": "Description for oracle.username."
12
    },
13
    {
14
      "name": "oracle.password",
15
      "type": "java.lang.String",
16
      "description": "Description for oracle.password."
17
    }
18
  ]
19
}
src/main/resources/application.properties
1 1
# Tell hibernate to use oracle dialect.
2 2
spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
3 3

  
4
# Oracle connection.
5
# oracle.url=jdbc:oracle:thin:@(DESCRIPTION=
6
# (ADDRESS_LIST=
7
# (ADDRESS=
8
# (PROTOCOL=TCP)(HOST=atreus-v.zcu.cz)(PORT=1521))
9
# )
10
# (LOAD_BALANCE=yes)
11
# (CONNECT_DATA=
12
# (SERVER=DEDICATED)
13
# (SERVICE_NAME=DEMO_SERVICE)
14
# )
15
# )#
16
# TNS format
4
# TNS format of connection to ORACLE 12c database.
17 5
oracle.url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=atreus-v.zcu.cz)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=DEMO_SERVICE)))
18
oracle.username=sasek
6
oracle.username=ondrous
19 7
oracle.password=demo

Také k dispozici: Unified diff