Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Linnea Samila
/
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 d052d87d
authored
May 08, 2014
by
Tuomas Riihimäki
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Card state filtering for eventusers
1 parent
957e503e
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
137 additions
and
37 deletions
code/MoyaBeans/ejbModule/fi/codecrew/moya/beans/PermissionBean.java
code/MoyaBeans/ejbModule/fi/codecrew/moya/beans/UserBean.java
code/MoyaBeans/ejbModule/fi/codecrew/moya/facade/EventUserFacade.java
code/MoyaBeans/ejbModule/fi/codecrew/moya/facade/callbacks/EventUserCardStateFilter.java
code/MoyaBeansClient/ejbModule/fi/codecrew/moya/util/UserSearchQuery.java
code/MoyaWeb/WebContent/resources/cditools/user/eventuserlist.xhtml
code/MoyaWeb/WebContent/resources/cditools/user/list.xhtml
code/MoyaWeb/WebContent/useradmin/list.xhtml
code/MoyaWeb/src/fi/codecrew/moya/web/converter/CardStateConverter.java
code/MoyaBeans/ejbModule/fi/codecrew/moya/beans/PermissionBean.java
View file @
d052d87
...
...
@@ -38,7 +38,7 @@ import fi.codecrew.moya.model.User;
UserPermission
.
S_MODIFY
,
UserPermission
.
S_MODIFY_ACCOUNTEVENTS
,
UserPermission
.
S_VIEW_ACCOUNTEVENTS
,
UserPermission
.
S_VIEW_OWN_ACCOUNTEVENTS
,
UserPermission
.
S_VIEW_OWN_ACCOUNTEVENTS
,
UserPermission
.
S_VIEW_ALL
,
UserPermission
.
S_VIEW_SELF
,
UserPermission
.
S_WRITE_ROLES
,
...
...
@@ -54,7 +54,7 @@ import fi.codecrew.moya.model.User;
MapPermission
.
S_MANAGE_MAPS
,
MapPermission
.
S_MANAGE_OTHERS
,
MapPermission
.
S_BUY_PLACES
,
//
MapPermission.S_RELEASE_PLACE,
//
MapPermission.S_RELEASE_PLACE,
ShopPermission
.
S_LIST_ALL_PRODUCTS
,
ShopPermission
.
S_LIST_USERPRODUCTS
,
...
...
@@ -166,7 +166,8 @@ public class PermissionBean implements PermissionBeanLocal {
}
/**
* Makes sure default user and public role exist and the user is member of the role.
* Makes sure default user and public role exist and the user is member of
* the role.
*/
@Override
public
EventUser
getAnonEventUser
()
{
...
...
code/MoyaBeans/ejbModule/fi/codecrew/moya/beans/UserBean.java
View file @
d052d87
...
...
@@ -731,20 +731,6 @@ public class UserBean implements UserBeanLocal {
return
userFacade
.
searchAllUsers
(
search
);
}
// @Override
// public SearchResult<User> getEventUsers(SearchQuery search) {
// if (search.getSearch() == null || search.getSearch().isEmpty())
// {
// throw new
// RuntimeException("You should be using getThisEventsUsers if not searching globally...");
// // return userFacade.searchEventUsers(search);
// } else {
// return userFacade.searchAllUsers(search);
// }
//
// }
//
@Override
@RolesAllowed
(
UserPermission
.
S_VIEW_ALL
)
public
SearchResult
<
EventUser
>
getThisEventsUsers
(
UserSearchQuery
searchQuery
)
{
...
...
@@ -761,9 +747,8 @@ public class UserBean implements UserBeanLocal {
newSearchList
.
addAll
(
returnUsers
.
getResults
());
returnUsers
=
new
SearchResult
<
EventUser
>(
newSearchList
,
(
long
)
newSearchList
.
size
());
}
else
if
(
searchQuery
.
isUsersWithUnusedCodes
())
{
}
else
if
(
searchQuery
.
isUsersWithUnusedCodes
())
{
List
<
EventUser
>
newSearchList
=
new
ArrayList
<
EventUser
>();
List
<
GroupMembership
>
groupMembers
=
new
ArrayList
<
GroupMembership
>();
groupMembers
=
gmfacade
.
findAllWithoutUser
();
...
...
code/MoyaBeans/ejbModule/fi/codecrew/moya/facade/EventUserFacade.java
View file @
d052d87
...
...
@@ -23,6 +23,7 @@ import fi.codecrew.moya.enums.DatabaseHasCompare;
import
fi.codecrew.moya.enums.DatabaseValueCompare
;
import
fi.codecrew.moya.facade.callbacks.EventLimiter
;
import
fi.codecrew.moya.facade.callbacks.EventUserAccountSaldoPredicate
;
import
fi.codecrew.moya.facade.callbacks.EventUserCardStateFilter
;
import
fi.codecrew.moya.facade.callbacks.EventUserPlacegroupPredicate
;
import
fi.codecrew.moya.facade.callbacks.EventUserRolefilter
;
import
fi.codecrew.moya.facade.callbacks.EventUserSearchPredicate
;
...
...
@@ -147,6 +148,11 @@ public class EventUserFacade extends IntegerPkGenericFacade<EventUser> {
if
(
query
.
getFilterRoles
()
!=
null
&&
!
query
.
getFilterRoles
().
isEmpty
())
{
callbacks
.
add
(
new
EventUserRolefilter
(
query
.
getFilterRoles
()));
}
if
(
query
.
getHasCardState
()
!=
null
&&
!
query
.
getHasCardState
().
isEmpty
())
{
callbacks
.
add
(
new
EventUserCardStateFilter
(
query
.
getHasCardState
()));
}
if
(
query
.
getAccountSaldo
()
!=
null
&&
query
.
getAccountSaldoCompare
()
!=
null
&&
!
DatabaseValueCompare
.
NONE
.
equals
(
query
.
getAccountSaldoCompare
()))
...
...
code/MoyaBeans/ejbModule/fi/codecrew/moya/facade/callbacks/EventUserCardStateFilter.java
0 → 100644
View file @
d052d87
package
fi
.
codecrew
.
moya
.
facade
.
callbacks
;
import
java.util.List
;
import
javax.persistence.criteria.CriteriaBuilder
;
import
javax.persistence.criteria.CriteriaQuery
;
import
javax.persistence.criteria.Path
;
import
javax.persistence.criteria.Predicate
;
import
javax.persistence.criteria.Root
;
import
javax.persistence.criteria.Subquery
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
fi.codecrew.moya.enums.CardState
;
import
fi.codecrew.moya.model.EventUser
;
import
fi.codecrew.moya.model.EventUser_
;
import
fi.codecrew.moya.model.PrintedCard
;
import
fi.codecrew.moya.model.PrintedCard_
;
import
fi.codecrew.moya.utilities.jpa.FacadeCallback
;
public
class
EventUserCardStateFilter
implements
FacadeCallback
<
EventUser
>
{
private
final
List
<
CardState
>
states
;
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
EventUserCardStateFilter
.
class
);
public
EventUserCardStateFilter
(
List
<
CardState
>
statelist
)
{
this
.
states
=
statelist
;
}
public
void
exec
(
CriteriaBuilder
cb
,
CriteriaQuery
<?>
cq
,
Path
<
EventUser
>
root
,
List
<
Predicate
>
predicates
)
{
if
(
states
!=
null
&&
!
states
.
isEmpty
())
{
for
(
CardState
s
:
states
)
{
logger
.
info
(
"Statte {}, type {}"
,
s
,
s
.
getClass
());
}
logger
.
debug
(
"Requiring states {}"
,
states
);
Path
<
Integer
>
rootId
=
root
.
get
(
EventUser_
.
id
);
Subquery
<
Integer
>
subq
=
cq
.
subquery
(
Integer
.
class
);
Root
<
PrintedCard
>
subroot
=
subq
.
from
(
PrintedCard
.
class
);
subq
.
select
(
subroot
.
join
(
PrintedCard_
.
user
).
get
(
EventUser_
.
id
));
subq
.
where
(
subroot
.
get
(
PrintedCard_
.
cardState
).
in
(
states
));
predicates
.
add
(
rootId
.
in
(
subq
));
}
}
}
code/MoyaBeansClient/ejbModule/fi/codecrew/moya/util/UserSearchQuery.java
View file @
d052d87
...
...
@@ -4,6 +4,7 @@ import java.math.BigDecimal;
import
java.util.ArrayList
;
import
java.util.List
;
import
fi.codecrew.moya.enums.CardState
;
import
fi.codecrew.moya.enums.DatabaseHasCompare
;
import
fi.codecrew.moya.enums.DatabaseValueCompare
;
import
fi.codecrew.moya.model.Role
;
...
...
@@ -18,6 +19,7 @@ public class UserSearchQuery extends SearchQuery {
private
boolean
placeAssoc
=
false
;
private
boolean
usersWithUnusedCodes
=
false
;
private
DatabaseHasCompare
requireImage
=
DatabaseHasCompare
.
NONE
;
private
List
<
CardState
>
hasCardState
=
new
ArrayList
<>();
private
BigDecimal
accountSaldo
;
private
DatabaseValueCompare
accountSaldoCompare
=
DatabaseValueCompare
.
NONE
;
...
...
@@ -26,6 +28,11 @@ public class UserSearchQuery extends SearchQuery {
super
();
}
public
CardState
[]
getCardStates
()
{
return
CardState
.
values
();
}
public
UserSearchQuery
(
int
page
,
int
pagesize
,
String
sort
,
String
search
,
QuerySortOrder
direction
)
{
super
(
page
,
pagesize
,
sort
,
search
,
direction
);
}
...
...
@@ -91,4 +98,12 @@ public class UserSearchQuery extends SearchQuery {
this
.
requireImage
=
requireImage
;
}
public
List
<
CardState
>
getHasCardState
()
{
return
hasCardState
;
}
public
void
setHasCardState
(
List
<
CardState
>
hasCardState
)
{
this
.
hasCardState
=
hasCardState
;
}
}
code/MoyaWeb/WebContent/resources/cditools/user/eventuserlist.xhtml
View file @
d052d87
...
...
@@ -12,7 +12,7 @@
<p:dataTable
styleClass=
"bordertable"
id=
"usertable"
value=
"#{userSearchView.eventuserModel}"
rows=
"20"
paginator=
"true"
lazy=
"true"
var=
"user"
>
<p:column
headerText=
"#{i18n['user.nick']}"
sortBy=
"
nick
"
>
<p:column
headerText=
"#{i18n['user.nick']}"
sortBy=
"
#{user.nick}
"
>
<h:outputText
styleClass=
"hoverable"
value=
"#{(empty user.nick)?'----':user.nick}"
/>
<div
class=
"userdata_popup"
>
<h:panelGrid
columns=
"3"
>
...
...
@@ -45,16 +45,16 @@
</div>
</p:column>
<p:column
sortBy=
"
login
"
headerText=
"#{i18n['user.login']}"
>
<p:column
sortBy=
"
#{user.login}
"
headerText=
"#{i18n['user.login']}"
>
<h:outputText
value=
"#{user.login}"
/>
</p:column>
<p:column
headerText=
"#{i18n['user.firstNames']}"
sortBy=
"
firstnames
"
>
<p:column
headerText=
"#{i18n['user.firstNames']}"
sortBy=
"
#{user.firstnames}
"
>
<h:outputText
value=
"#{user.firstnames}"
/>
</p:column>
<p:column
headerText=
"#{i18n['user.lastName']}"
sortBy=
"
lastname
"
>
<p:column
headerText=
"#{i18n['user.lastName']}"
sortBy=
"
#{user.lastname}
"
>
<h:outputText
value=
"#{user.lastname}"
/>
</p:column>
<p:column
headerText=
"#{i18n['user.email']}"
sortBy=
"
email
"
>
<p:column
headerText=
"#{i18n['user.email']}"
sortBy=
"
{user.email}
"
>
<h:outputText
value=
"#{user.email}"
/>
</p:column>
...
...
code/MoyaWeb/WebContent/resources/cditools/user/list.xhtml
View file @
d052d87
...
...
@@ -11,20 +11,20 @@
<p:dataTable
id=
"user"
value=
"#{userSearchView.userModel}"
rows=
"20"
var=
"wra"
paginator=
"true"
lazy=
"true"
>
<p:column
sortBy=
"
nick
"
headerText=
"#{i18n['user.nick']}"
>
<p:column
sortBy=
"
#{wra.user.nick}
"
headerText=
"#{i18n['user.nick']}"
>
<h:outputText
value=
"#{(empty wra.user.nick)?'----':wra.user.nick}"
/>
</p:column>
<p:column
sortBy=
"
login
"
headerText=
"#{i18n['user.login']}"
>
<p:column
sortBy=
"
#{wra.user.login}
"
headerText=
"#{i18n['user.login']}"
>
<h:outputText
value=
"#{wra.user.login}"
/>
</p:column>
<p:column
headerText=
"#{i18n['user.firstNames']}"
sortBy=
"
firstnames
"
>
<p:column
headerText=
"#{i18n['user.firstNames']}"
sortBy=
"
#{wra.user.firstnames}
"
>
<h:outputText
value=
"#{wra.user.firstnames}"
/>
</p:column>
<p:column
headerText=
"#{i18n['user.lastName']}"
sortBy=
"
lastname
"
>
<p:column
headerText=
"#{i18n['user.lastName']}"
sortBy=
"
#{wra.user.lastname}
"
>
<h:outputText
value=
"#{wra.user.lastname}"
/>
</p:column>
<p:column
headerText=
"#{i18n['user.email']}"
sortBy=
"
email
"
>
<p:column
headerText=
"#{i18n['user.email']}"
sortBy=
"
#{wra.user.email}
"
>
<h:outputText
value=
"#{wra.user.email}"
/>
</p:column>
...
...
code/MoyaWeb/WebContent/useradmin/list.xhtml
View file @
d052d87
...
...
@@ -24,26 +24,40 @@
<h:panelGrid
columns=
"2"
>
<h:panelGroup>
<a
onclick=
"$('#advancedSearch').show(); $(this).hide();"
><h:outputText
value=
"#{i18n['userlist.showAdvancedSearch']}"
/></a>
<span
id=
"advancedSearch"
style=
"display: none;"
>
<h:selectBooleanCheckbox
id=
"placeassoc"
value=
"#{userSearchView.searchQuery.placeAssoc}"
/>
<h:outputLabel
for=
"placeassoc"
value=
"#{i18n['userlist.placeassoc']}"
/>
<br
/>
<h:outputLabel
for=
"saldofilter"
value=
"#{i18n['userlist.saldofilter']}"
/>
<h:selectOneMenu
value=
"#{userSearchView.searchQuery.accountSaldoCompare}"
>
<div
id=
"advancedSearch"
style=
"display: none;"
>
<h:selectBooleanCheckbox
id=
"placeassoc"
value=
"#{userSearchView.searchQuery.placeAssoc}"
/>
<h:outputLabel
for=
"placeassoc"
value=
"#{i18n['userlist.placeassoc']}"
/>
<br
/>
<h:outputLabel
for=
"saldofilter"
value=
"#{i18n['userlist.saldofilter']}"
/>
<h:selectOneMenu
value=
"#{userSearchView.searchQuery.accountSaldoCompare}"
>
<f:selectItems
value=
"#{userSearchView.searchQuery.accountCompareValues}"
/>
</h:selectOneMenu>
<h:inputText
value=
"#{userSearchView.searchQuery.accountSaldo}"
>
</h:selectOneMenu>
<h:inputText
value=
"#{userSearchView.searchQuery.accountSaldo}"
>
<f:convertNumber
minFractionDigits=
"0"
maxFractionDigits=
"2"
/>
</h:inputText>
<br
/>
<h:outputLabel
for=
"rolefilter"
value=
"#{i18n['userlist.rolefilter']}"
/>
<h:selectManyCheckbox
layout=
"pageDirection"
styleClass=
"nowrap"
id=
"rolefilter"
value=
"#{userSearchView.searchQuery.filterRoles}"
converter=
"#{roleConverter}"
>
</h:inputText>
<br
/>
<h:outputLabel
for=
"rolefilter"
value=
"#{i18n['userlist.rolefilter']}"
/>
<h:selectManyCheckbox
layout=
"pageDirection"
styleClass=
"nowrap"
id=
"rolefilter"
value=
"#{userSearchView.searchQuery.filterRoles}"
converter=
"#{roleConverter}"
>
<f:selectItems
value=
"#{roleDataView.roles}"
var=
"r"
itemLabel=
"#{r.name}"
/>
</h:selectManyCheckbox>
<h:outputLabel
for=
"cardstatusfilter"
value=
"#{i18n['userlist.cardfilter']}"
/>
<h:selectManyCheckbox
layout=
"pageDirection"
styleClass=
"nowrap"
id=
"cardfilter"
value=
"#{userSearchView.searchQuery.hasCardState}"
converter=
"#{cardStateConverter}"
>
<f:selectItems
value=
"#{userSearchView.searchQuery.cardStates}"
var=
"r"
itemLabel=
"#{r}"
/>
</h:selectManyCheckbox>
</
span
>
</
div
>
<br
/>
<h:selectBooleanCheckbox
id=
"onlythisevent"
value=
"#{userSearchView.searchQuery.onlyThisEvent}"
/>
<h:outputLabel
for=
"onlythisevent"
value=
"#{i18n['userlist.onlythisevent']}"
/>
<br
/>
<h:selectBooleanCheckbox
id=
"userswithunusedcodes"
value=
"#{userSearchView.searchQuery.usersWithUnusedCodes}"
/>
<h:selectBooleanCheckbox
id=
"userswithunusedcodes"
value=
"#{userSearchView.searchQuery.usersWithUnusedCodes}"
/>
<h:outputLabel
for=
"userswithunusedcodes"
value=
"#{i18n['userlist.usersWithUnusedCodes']}"
/>
<br
/>
...
...
code/MoyaWeb/src/fi/codecrew/moya/web/converter/CardStateConverter.java
0 → 100644
View file @
d052d87
package
fi
.
codecrew
.
moya
.
web
.
converter
;
import
javax.ejb.EJB
;
import
javax.enterprise.context.RequestScoped
;
import
javax.faces.component.UIComponent
;
import
javax.faces.context.FacesContext
;
import
javax.faces.convert.Converter
;
import
javax.inject.Named
;
import
fi.codecrew.moya.beans.RoleBeanLocal
;
import
fi.codecrew.moya.enums.CardState
;
@Named
()
@RequestScoped
public
class
CardStateConverter
implements
Converter
{
@EJB
private
RoleBeanLocal
rolebean
;
@Override
public
Object
getAsObject
(
FacesContext
context
,
UIComponent
component
,
String
value
)
{
return
CardState
.
valueOf
(
value
);
}
@Override
public
String
getAsString
(
FacesContext
context
,
UIComponent
component
,
Object
value
)
{
return
value
.
toString
();
}
}
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