Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
minerva
core
Commits
40865050
Commit
40865050
authored
Oct 27, 2016
by
Piotr Gawron
Browse files
issue
#12
PrivilegeType in db is mapped by privilege name not id of enum
parent
cff9d812
Changes
3
Hide whitespace changes
Inline
Side-by-side
model/src/main/java/lcsb/mapviewer/model/user/BasicPrivilege.java
View file @
40865050
package
lcsb.mapviewer.model.user
;
import
java.io.Serializable
;
import
javax.persistence.Column
;
import
javax.persistence.DiscriminatorColumn
;
import
javax.persistence.DiscriminatorType
;
import
javax.persistence.DiscriminatorValue
;
import
javax.persistence.Entity
;
import
javax.persistence.FetchType
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GenerationType
;
import
javax.persistence.Id
;
import
javax.persistence.Inheritance
;
import
javax.persistence.InheritanceType
;
import
javax.persistence.ManyToOne
;
import
javax.persistence.Table
;
/**
* Class that defines user privilege. Privilege has an access level (typicaly 0,
* 1 value), type of the privilege and user reference.
*
* @author Piotr Gawron
*
*/
@Entity
@Table
(
name
=
"privilege_table"
)
@Inheritance
(
strategy
=
InheritanceType
.
SINGLE_TABLE
)
@DiscriminatorColumn
(
name
=
"privilege_class_type_db"
,
discriminatorType
=
DiscriminatorType
.
STRING
)
@DiscriminatorValue
(
"BASIC_PRIVILEGE"
)
public
class
BasicPrivilege
implements
Serializable
{
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
/**
* Unique identifier in the database.
*/
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"idDb"
,
unique
=
true
,
nullable
=
false
)
private
int
id
;
/**
* Which user this privilege concerns.
*/
@ManyToOne
(
fetch
=
FetchType
.
LAZY
)
private
User
user
;
/**
* Type of the privilege.
*/
private
PrivilegeType
type
;
/**
* Access level of the privilege. By default 0 means that user doesn't have
* privilege and value greater than 0 means that user has privilege. It's
* possible to implement different behaviour for different level values.
*/
private
int
level
;
/**
* Constructor that initialize the privilege with given data.
*
* @param level
* level on which the privilege is set
* @param type
* type of the privilege
* @param user
* user for which this privilege is set
*/
public
BasicPrivilege
(
int
level
,
PrivilegeType
type
,
User
user
)
{
this
.
level
=
level
;
this
.
type
=
type
;
this
.
user
=
user
;
}
/**
* Default constructor.
*/
public
BasicPrivilege
()
{
}
/**
* Checks if the privilege is with the same type as privilege given in the
* parameter.
*
* @param privilege
* other privilege to compare
* @return <code>true</code> if privilege is of the same type as an argument,
* <code>false</code> otherwise
*/
public
boolean
equalsPrivilege
(
BasicPrivilege
privilege
)
{
if
(
privilege
==
null
)
{
return
false
;
}
return
type
.
equals
(
privilege
.
getType
());
}
/**
* @return the id
* @see #id
*/
public
int
getId
()
{
return
id
;
}
/**
* @param id
* the id to set
* @see #id
*/
public
void
setId
(
int
id
)
{
this
.
id
=
id
;
}
/**
* @return the user
* @see #user
*/
public
User
getUser
()
{
return
user
;
}
/**
* @param user
* the user to set
* @see #user
*/
public
void
setUser
(
User
user
)
{
this
.
user
=
user
;
}
/**
* @return the type
* @see #type
*/
public
PrivilegeType
getType
()
{
return
type
;
}
/**
* @param type
* the type to set
* @see #type
*/
public
void
setType
(
PrivilegeType
type
)
{
this
.
type
=
type
;
}
/**
* @return the level
* @see #level
*/
public
int
getLevel
()
{
return
level
;
}
/**
* @param level
* the level to set
* @see #level
*/
public
void
setLevel
(
int
level
)
{
this
.
level
=
level
;
}
}
package
lcsb.mapviewer.model.user
;
import
java.io.Serializable
;
import
javax.persistence.Column
;
import
javax.persistence.DiscriminatorColumn
;
import
javax.persistence.DiscriminatorType
;
import
javax.persistence.DiscriminatorValue
;
import
javax.persistence.Entity
;
import
javax.persistence.EnumType
;
import
javax.persistence.Enumerated
;
import
javax.persistence.FetchType
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GenerationType
;
import
javax.persistence.Id
;
import
javax.persistence.Inheritance
;
import
javax.persistence.InheritanceType
;
import
javax.persistence.ManyToOne
;
import
javax.persistence.Table
;
/**
* Class that defines user privilege. Privilege has an access level (typicaly 0,
* 1 value), type of the privilege and user reference.
*
* @author Piotr Gawron
*
*/
@Entity
@Table
(
name
=
"privilege_table"
)
@Inheritance
(
strategy
=
InheritanceType
.
SINGLE_TABLE
)
@DiscriminatorColumn
(
name
=
"privilege_class_type_db"
,
discriminatorType
=
DiscriminatorType
.
STRING
)
@DiscriminatorValue
(
"BASIC_PRIVILEGE"
)
public
class
BasicPrivilege
implements
Serializable
{
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
/**
* Unique identifier in the database.
*/
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"idDb"
,
unique
=
true
,
nullable
=
false
)
private
int
id
;
/**
* Which user this privilege concerns.
*/
@ManyToOne
(
fetch
=
FetchType
.
LAZY
)
private
User
user
;
/**
* Type of the privilege.
*/
@Enumerated
(
EnumType
.
STRING
)
private
PrivilegeType
type
;
/**
* Access level of the privilege. By default 0 means that user doesn't have
* privilege and value greater than 0 means that user has privilege. It's
* possible to implement different behaviour for different level values.
*/
private
int
level
;
/**
* Constructor that initialize the privilege with given data.
*
* @param level
* level on which the privilege is set
* @param type
* type of the privilege
* @param user
* user for which this privilege is set
*/
public
BasicPrivilege
(
int
level
,
PrivilegeType
type
,
User
user
)
{
this
.
level
=
level
;
this
.
type
=
type
;
this
.
user
=
user
;
}
/**
* Default constructor.
*/
public
BasicPrivilege
()
{
}
/**
* Checks if the privilege is with the same type as privilege given in the
* parameter.
*
* @param privilege
* other privilege to compare
* @return <code>true</code> if privilege is of the same type as an argument,
* <code>false</code> otherwise
*/
public
boolean
equalsPrivilege
(
BasicPrivilege
privilege
)
{
if
(
privilege
==
null
)
{
return
false
;
}
return
type
.
equals
(
privilege
.
getType
());
}
/**
* @return the id
* @see #id
*/
public
int
getId
()
{
return
id
;
}
/**
* @param id
* the id to set
* @see #id
*/
public
void
setId
(
int
id
)
{
this
.
id
=
id
;
}
/**
* @return the user
* @see #user
*/
public
User
getUser
()
{
return
user
;
}
/**
* @param user
* the user to set
* @see #user
*/
public
void
setUser
(
User
user
)
{
this
.
user
=
user
;
}
/**
* @return the type
* @see #type
*/
public
PrivilegeType
getType
()
{
return
type
;
}
/**
* @param type
* the type to set
* @see #type
*/
public
void
setType
(
PrivilegeType
type
)
{
this
.
type
=
type
;
}
/**
* @return the level
* @see #level
*/
public
int
getLevel
()
{
return
level
;
}
/**
* @param level
* the level to set
* @see #level
*/
public
void
setLevel
(
int
level
)
{
this
.
level
=
level
;
}
}
persist/src/db/10.0.3/fix_db_20161027.sql
View file @
40865050
...
...
@@ -3,3 +3,20 @@ alter table project_table add column sbgnformat boolean default false ;
update
project_table
set
sbgnformat
=
(
select
sbgnformat
from
model_table
where
project_iddb
=
project_table
.
iddb
);
alter
table
model_table
drop
column
sbgnformat
;
--PrivilegeType should be mapped in database by name not by index
alter
table
privilege_table
add
column
type_string
character
varying
;
update
privilege_table
set
type_string
=
'VIEW_PROJECT'
where
type
=
0
;
update
privilege_table
set
type_string
=
'ADD_MAP'
where
type
=
1
;
update
privilege_table
set
type_string
=
'EDIT_MISSING_CONNECTIONS_PROJECT'
where
type
=
2
;
update
privilege_table
set
type_string
=
'EDIT_COMMENTS_PROJECT'
where
type
=
3
;
update
privilege_table
set
type_string
=
'DRUG_TARGETING_ADVANCED_VIEW_PROJECT'
where
type
=
4
;
update
privilege_table
set
type_string
=
'PROJECT_MANAGEMENT'
where
type
=
5
;
update
privilege_table
set
type_string
=
'USER_MANAGEMENT'
where
type
=
6
;
update
privilege_table
set
type_string
=
'CUSTOM_LAYOUTS'
where
type
=
7
;
update
privilege_table
set
type_string
=
'LAYOUT_VIEW'
where
type
=
8
;
update
privilege_table
set
type_string
=
'CONFIGURATION_MANAGE'
where
type
=
9
;
update
privilege_table
set
type_string
=
'LAYOUT_MANAGEMENT'
where
type
=
10
;
update
privilege_table
set
type_string
=
'MANAGE_GENOMES'
where
type
=
11
;
alter
table
privilege_table
drop
column
type
;
alter
table
privilege_table
rename
type_string
TO
type
;
persist/src/test/java/lcsb/mapviewer/persist/dao/user/UserDaoTest.java
View file @
40865050
...
...
@@ -20,6 +20,8 @@ import org.springframework.security.crypto.password.PasswordEncoder;
import
lcsb.mapviewer.model.map.MiriamType
;
import
lcsb.mapviewer.model.map.reaction.Reaction
;
import
lcsb.mapviewer.model.map.species.Species
;
import
lcsb.mapviewer.model.user.BasicPrivilege
;
import
lcsb.mapviewer.model.user.PrivilegeType
;
import
lcsb.mapviewer.model.user.User
;
import
lcsb.mapviewer.model.user.UserAnnotationSchema
;
import
lcsb.mapviewer.model.user.UserClassAnnotators
;
...
...
@@ -61,6 +63,7 @@ public class UserDaoTest extends PersistTestFunctions {
user
=
new
User
();
user
.
setLogin
(
testLogin
);
user
.
addPrivilege
(
new
BasicPrivilege
(
0
,
PrivilegeType
.
ADD_MAP
,
user
));
userDao
.
add
(
user
);
long
counter2
=
userDao
.
getCount
();
...
...
@@ -81,7 +84,7 @@ public class UserDaoTest extends PersistTestFunctions {
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
fail
(
"Unexpected exception occured"
)
;
throw
e
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment