Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Max Mecklin
/
Moya
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 452fe870
authored
Mar 26, 2011
by
Tuomas Riihimäki
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Moved BortalLocalContextHolder to LanBortalBeansClient project
1 parent
d59a8755
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
183 additions
and
74 deletions
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/PlaceGroupBean.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/UserBean.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/GenericFacade.java
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/UserBeanLocal.java
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/clientutils/BortalLocalContextHolder.java
code/LanBortalDatabase/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
code/LanBortalWeb/WebContent/user/list.xhtml
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/PlaceGroupBean.java
View file @
452fe87
package
fi
.
insomnia
.
bortal
.
beans
;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
java.util.ArrayList
;
import
java.util.Calendar
;
import
java.util.List
;
import
javax.ejb.EJB
;
...
...
@@ -13,14 +10,11 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
com.pdfjet.A4
;
import
com.pdfjet.Box
;
import
com.pdfjet.CoreFont
;
import
com.pdfjet.Font
;
import
com.pdfjet.Image
;
import
com.pdfjet.ImageType
;
import
com.pdfjet.JPEGImage
;
import
com.pdfjet.PDF
;
import
com.pdfjet.PNGImage
;
import
com.pdfjet.Page
;
import
com.pdfjet.TextLine
;
...
...
@@ -30,8 +24,6 @@ import fi.insomnia.bortal.exceptions.PermissionDeniedException;
import
fi.insomnia.bortal.facade.GroupMembershipFacade
;
import
fi.insomnia.bortal.facade.PlaceGroupFacade
;
import
fi.insomnia.bortal.model.GroupMembership
;
import
fi.insomnia.bortal.model.Place
;
import
fi.insomnia.bortal.model.PlaceGroup
;
import
fi.insomnia.bortal.model.User
;
/**
...
...
@@ -166,7 +158,7 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal {
@Override
public
void
releaseAndGenerateToken
(
GroupMembership
gmem
)
{
if
(!
userbean
.
getCurrentUser
().
getId
().
equals
(
gmem
.
getPlaceGroup
().
getCreator
().
getId
())
||
!
userbean
.
has
CurrentUser
Permission
(
Permission
.
MAP
,
RolePermission
.
WRITE
))
{
!
userbean
.
hasPermission
(
Permission
.
MAP
,
RolePermission
.
WRITE
))
{
throw
new
PermissionDeniedException
(
secubean
,
userbean
.
getCurrentUser
(),
"User tried to release and generate group membership: "
+
gmem
);
}
gmem
.
setUser
(
null
);
...
...
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/UserBean.java
View file @
452fe87
...
...
@@ -19,7 +19,6 @@ import javax.persistence.PersistenceContext;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
fi.insomnia.bortal.clientutils.BortalLocalContextHolder
;
import
fi.insomnia.bortal.enums.Permission
;
import
fi.insomnia.bortal.enums.RolePermission
;
...
...
@@ -78,13 +77,6 @@ public class UserBean implements UserBeanLocal {
@EJB
private
GroupMembershipFacade
groupMembershipFacade
;
/**
* Default constructor.
*/
public
UserBean
()
{
// TODO Auto-generated constructor stub
}
@Override
public
List
<
User
>
getUsers
()
{
fatalPermission
(
Permission
.
USER_MANAGEMENT
,
RolePermission
.
READ
);
...
...
@@ -239,11 +231,6 @@ public class UserBean implements UserBeanLocal {
}
@Override
public
boolean
hasCurrentUserPermission
(
Permission
permission
,
RolePermission
rolePermission
)
{
return
this
.
hasPermission
(
permission
,
rolePermission
);
}
@Override
public
void
fatalPermission
(
Permission
target
,
RolePermission
permission
,
Object
...
failmessage
)
{
boolean
ret
=
hasPermission
(
target
,
permission
);
if
(!
ret
)
{
...
...
@@ -379,4 +366,8 @@ public class UserBean implements UserBeanLocal {
return
userFacade
.
find
(
id
);
}
@Override
public
List
<
User
>
getUsers
(
int
page
,
int
pagesize
,
String
sort
)
{
return
userFacade
.
findAll
(
page
,
pagesize
,
sort
);
}
}
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/GenericFacade.java
View file @
452fe87
...
...
@@ -11,7 +11,6 @@ import javax.persistence.criteria.CriteriaQuery;
import
javax.persistence.criteria.Path
;
import
javax.persistence.criteria.Predicate
;
import
javax.persistence.criteria.Root
;
import
javax.persistence.metamodel.SingularAttribute
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -25,7 +24,7 @@ public abstract class GenericFacade<PK, T extends ModelInterface> {
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
GenericFacade
.
class
);
private
Class
<
T
>
entClass
;
private
final
Class
<
T
>
entClass
;
public
GenericFacade
(
Class
<
T
>
entityClass
)
{
this
.
entClass
=
entityClass
;
...
...
@@ -51,18 +50,20 @@ public abstract class GenericFacade<PK, T extends ModelInterface> {
}
public
T
find
(
PK
id
)
{
if
(
id
==
null
)
{
return
null
;
}
T
ret
=
getEm
().
find
(
getEntityClass
(),
id
);
return
ret
;
}
public
List
<
T
>
findAll
()
{
CriteriaBuilder
cb
=
getEm
().
getCriteriaBuilder
();
CriteriaQuery
<
T
>
cq
=
cb
.
createQuery
(
getEntityClass
());
Root
<
T
>
root
=
cq
.
from
(
getEntityClass
());
cq
.
orderBy
(
cb
.
asc
(
root
.
get
(
"id"
)));
return
findAll
(
null
);
cq
.
select
(
root
);
return
getEm
().
createQuery
(
cq
).
getResultList
();
}
public
List
<
T
>
findAll
(
String
sort
)
{
return
findAll
(
0
,
0
,
sort
);
}
public
List
<
T
>
findRange
(
int
[]
range
)
{
...
...
@@ -99,54 +100,73 @@ public abstract class GenericFacade<PK, T extends ModelInterface> {
}
protected
List
<
T
>
search
(
String
query
,
String
[]
fields
,
String
orderfield
)
{
return
search
(
0
,
0
,
query
,
fields
,
orderfield
);
}
protected
List
<
T
>
search
(
int
page
,
int
pagesize
,
String
query
,
String
[]
fields
,
String
orderfield
)
{
CriteriaBuilder
cb
=
getEm
().
getCriteriaBuilder
();
CriteriaQuery
<
T
>
cq
=
cb
.
createQuery
(
getEntityClass
());
Root
<
T
>
root
=
cq
.
from
(
getEntityClass
());
List
<
Predicate
>
preds
=
new
ArrayList
<
Predicate
>();
for
(
String
field
:
fields
)
{
Path
<
String
>
rootfield
=
root
.
get
(
field
);
preds
.
add
(
cb
.
like
(
rootfield
,
query
));
}
cq
.
where
(
cb
.
or
(
preds
.
toArray
(
new
Predicate
[
preds
.
size
()])));
addPredicates
(
cb
,
cq
,
root
,
query
,
fields
);
if
(
orderfield
!=
null
)
{
cq
.
orderBy
(
cb
.
asc
(
root
.
get
(
orderfield
)));
}
cq
.
select
(
root
);
TypedQuery
<
T
>
q
=
getEm
().
createQuery
(
cq
);
logger
.
debug
(
"Creating search query from fields {} query: {}"
,
fields
,
cq
);
if
(
pagesize
>
0
)
{
q
.
setFirstResult
(
page
*
pagesize
);
q
.
setMaxResults
(
pagesize
);
}
List
<
T
>
ret
=
q
.
getResultList
();
logger
.
debug
(
"resultlist size {}"
,
ret
.
size
());
return
ret
;
}
//
// @SuppressWarnings("unchecked")
// public List<T> search(String query, String[] fields) {
// CompassSession sess =
// EclipseLinkHelper.getCurrentCompassSession(getEm());
// CompassQueryBuilder qb = sess.queryBuilder();
// CompassMultiPropertyQueryStringBuilder properties =
// qb.multiPropertyQueryString(query);
//
// for (String field : fields) {
// properties.add(field);
// }
// String alias = getClass().getSimpleName().toLowerCase();
//
// logger.debug("searching class {}", alias);
// CompassHits hits =
// qb.bool().addMust(qb.alias(alias)).addMust(properties.toQuery()).toQuery().hits();
//
// Iterator<CompassHit> iter = hits.iterator();
// ArrayList<T> ret = new ArrayList<T>();
// while (iter.hasNext()) {
//
// Object data = iter.next().getData();
// logger.debug("Found user {}", data);
// ret.add((T) data);
//
// }
// return ret;
//
// }
protected
long
searchCount
(
String
query
,
String
[]
fields
)
{
CriteriaBuilder
cb
=
getEm
().
getCriteriaBuilder
();
CriteriaQuery
<
Long
>
cq
=
cb
.
createQuery
(
Long
.
class
);
Root
<
T
>
root
=
cq
.
from
(
getEntityClass
());
addPredicates
(
cb
,
cq
,
root
,
query
,
fields
);
cq
.
select
(
getEm
().
getCriteriaBuilder
().
count
(
root
));
TypedQuery
<
Long
>
q
=
getEm
().
createQuery
(
cq
);
return
q
.
getSingleResult
();
}
private
void
addPredicates
(
CriteriaBuilder
cb
,
CriteriaQuery
<?>
cq
,
Root
<
T
>
root
,
String
query
,
String
[]
fields
)
{
List
<
Predicate
>
preds
=
new
ArrayList
<
Predicate
>();
for
(
String
field
:
fields
)
{
Path
<
String
>
rootfield
=
root
.
get
(
field
);
preds
.
add
(
cb
.
like
(
cb
.
lower
(
rootfield
),
query
));
}
cq
.
where
(
cb
.
or
(
preds
.
toArray
(
new
Predicate
[
preds
.
size
()])));
}
public
List
<
T
>
findAll
(
int
page
,
int
pagesize
,
String
sort
)
{
CriteriaBuilder
cb
=
getEm
().
getCriteriaBuilder
();
CriteriaQuery
<
T
>
cq
=
cb
.
createQuery
(
getEntityClass
());
Root
<
T
>
root
=
cq
.
from
(
getEntityClass
());
if
(
sort
!=
null
)
{
cq
.
orderBy
(
cb
.
asc
(
root
.
get
(
sort
)));
}
cq
.
select
(
cq
.
from
(
getEntityClass
()));
TypedQuery
<
T
>
q
=
getEm
().
createQuery
(
cq
);
if
(
pagesize
>
0
)
{
q
.
setFirstResult
(
page
*
pagesize
);
q
.
setMaxResults
(
pagesize
);
}
return
q
.
getResultList
();
}
}
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/UserBeanLocal.java
View file @
452fe87
...
...
@@ -6,8 +6,6 @@ import javax.ejb.Local;
import
fi.insomnia.bortal.enums.Permission
;
import
fi.insomnia.bortal.enums.RolePermission
;
import
fi.insomnia.bortal.model.Place
;
import
fi.insomnia.bortal.model.Product
;
import
fi.insomnia.bortal.model.Role
;
import
fi.insomnia.bortal.model.User
;
import
fi.insomnia.bortal.model.UserImage
;
...
...
@@ -17,6 +15,8 @@ public interface UserBeanLocal {
List
<
User
>
getUsers
();
List
<
User
>
getUsers
(
int
page
,
int
pagesize
,
String
sort
);
User
getUser
(
String
nick
);
User
mergeChanges
(
User
currentUser
);
...
...
@@ -29,7 +29,8 @@ public interface UserBeanLocal {
boolean
isCurrentUser
(
User
thisuser
);
boolean
hasCurrentUserPermission
(
Permission
userManagement
,
RolePermission
execute
);
// boolean hasCurrentUserPermission(Permission userManagement,
// RolePermission execute);
boolean
isLoggedIn
();
...
...
@@ -55,6 +56,4 @@ public interface UserBeanLocal {
User
findById
(
Integer
integer
);
}
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/clientutils/BortalLocalContextHolder.java
0 → 100644
View file @
452fe87
package
fi
.
insomnia
.
bortal
.
clientutils
;
import
java.util.HashMap
;
import
java.util.Map
;
import
fi.insomnia.bortal.enums.Permission
;
import
fi.insomnia.bortal.enums.RolePermission
;
import
fi.insomnia.bortal.model.RoleRight
;
public
class
BortalLocalContextHolder
{
private
static
final
ThreadLocal
<
BortalLocalContextHolder
>
THREAD_WITH_CONTEXT
=
new
ThreadLocal
<
BortalLocalContextHolder
>();
private
String
hostname
;
private
final
Map
<
Permission
,
Map
<
RolePermission
,
Boolean
>>
rightcache
=
new
HashMap
<
Permission
,
Map
<
RolePermission
,
Boolean
>>();
public
BortalLocalContextHolder
()
{
}
public
static
void
setHostname
(
String
hostname
)
{
getThread
().
hostname
=
hostname
;
}
public
static
String
getHostname
()
{
return
getThread
().
getHolderHostname
();
}
public
static
void
cleanupThread
()
{
if
(
THREAD_WITH_CONTEXT
!=
null
)
{
THREAD_WITH_CONTEXT
.
remove
();
}
}
public
String
getHolderHostname
()
{
return
hostname
;
}
public
static
Boolean
hasPermission
(
Permission
target
,
RolePermission
permission
)
{
return
getThread
().
hasHolderPermission
(
target
,
permission
);
}
private
static
BortalLocalContextHolder
getThread
()
{
if
(
THREAD_WITH_CONTEXT
.
get
()
==
null
)
{
THREAD_WITH_CONTEXT
.
set
(
new
BortalLocalContextHolder
());
}
return
THREAD_WITH_CONTEXT
.
get
();
}
private
Boolean
hasHolderPermission
(
Permission
target
,
RolePermission
permission
)
{
Map
<
RolePermission
,
Boolean
>
permmap
=
rightcache
.
get
(
target
);
if
(
permmap
==
null
)
{
permmap
=
new
HashMap
<
RolePermission
,
Boolean
>();
rightcache
.
put
(
target
,
permmap
);
}
return
permmap
.
get
(
permission
);
}
public
static
void
setPermission
(
Permission
target
,
RolePermission
permission
,
Boolean
ret
)
{
getThread
().
setHolderPermission
(
target
,
permission
,
ret
);
}
private
void
setHolderPermission
(
Permission
target
,
RolePermission
permission
,
Boolean
ret
)
{
Map
<
RolePermission
,
Boolean
>
permmap
=
rightcache
.
get
(
target
);
if
(
permmap
==
null
)
{
permmap
=
new
HashMap
<
RolePermission
,
Boolean
>();
rightcache
.
put
(
target
,
permmap
);
}
permmap
.
put
(
permission
,
ret
);
}
public
static
void
setPermission
(
RoleRight
rr
)
{
if
(
rr
.
isExecute
())
{
setPermission
(
rr
.
getPermission
(),
RolePermission
.
EXECUTE
,
true
);
}
if
(
rr
.
isWrite
())
{
setPermission
(
rr
.
getPermission
(),
RolePermission
.
WRITE
,
true
);
}
if
(
rr
.
isRead
())
{
setPermission
(
rr
.
getPermission
(),
RolePermission
.
READ
,
true
);
}
}
public
static
BortalLocalContextHolder
getInstance
()
{
return
getThread
();
}
}
\ No newline at end of file
code/LanBortalDatabase/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
0 → 100644
View file @
452fe87
<root>
<facet
id=
"jpt.jpa"
>
<node
name=
"libprov"
>
<attribute
name=
"provider-id"
value=
"eclipselink-210-osgi-bundles-library-provider"
/>
</node>
<node
name=
"osgi-bundles-container"
>
<attribute
name=
"bundles"
value=
"javax.persistence:[2.0.0,2.1.0);org.eclipse.persistence.core:[2.1.0,2.2.0);org.eclipse.persistence.jpa:[2.1.0,2.2.0);org.eclipse.persistence.asm:[2.1.0,2.2.0);org.eclipse.persistence.antlr:[2.1.0,2.2.0)"
/>
<attribute
name=
"label"
value=
"EclipseLink 2.1.x"
/>
</node>
</facet>
</root>
code/LanBortalWeb/WebContent/user/list.xhtml
View file @
452fe87
...
...
@@ -12,7 +12,8 @@
<ui:param
name=
"thispage"
value=
"page.user.create"
/>
<ui:define
name=
"content"
>
<users:list
/>
<!-- <users:list /> -->
</ui:define>
</ui:composition>
</h:body>
...
...
Write
Preview
Markdown
is supported
Attach a file
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 post a comment