Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Antti Väyrynen
/
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 dc66d756
authored
Oct 18, 2012
by
Tuomas Riihimäki
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Searching may return eventuser instead of user...
1 parent
9c46e49d
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
133 additions
and
68 deletions
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/UserBean.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/EventUserFacade.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/UserFacade.java
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/UserBeanLocal.java
code/LanBortalWeb/WebContent/resources/cditools/user/edit.xhtml
code/LanBortalWeb/WebContent/resources/style/insomnia2/css/general.css
code/LanBortalWeb/WebContent/useradmin/list.xhtml
code/LanBortalWeb/src/fi/insomnia/bortal/web/cdiview/PaginationView.java
code/LanBortalWeb/src/fi/insomnia/bortal/web/cdiview/user/UserSearchView.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/UserBean.java
View file @
dc66d75
...
...
@@ -48,6 +48,7 @@ import fi.insomnia.bortal.utilities.I18n;
import
fi.insomnia.bortal.utilities.PasswordFunctions
;
import
fi.insomnia.bortal.utilities.SearchQuery
;
import
fi.insomnia.bortal.utilities.SearchResult
;
import
fi.insomnia.bortal.utilities.UserSearchQuery
;
/**
* Session Bean implementation class UserBean
...
...
@@ -502,11 +503,17 @@ public class UserBean implements UserBeanLocal {
public
SearchResult
<
User
>
getEventUsers
(
SearchQuery
search
)
{
if
(
search
.
getSearch
()
==
null
||
search
.
getSearch
().
isEmpty
())
{
return
userFacade
.
searchEventUsers
(
search
);
throw
new
RuntimeException
(
"You should be using getThisEventsUsers if not searching globally..."
);
// return userFacade.searchEventUsers(search);
}
else
{
return
userFacade
.
searchAllUsers
(
search
);
}
}
@Override
public
SearchResult
<
EventUser
>
getThisEventsUsers
(
UserSearchQuery
searchQuery
)
{
return
eventUserFacade
.
searchEventUsers
(
searchQuery
);
}
}
\ No newline at end of file
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/EventUserFacade.java
View file @
dc66d75
package
fi
.
insomnia
.
bortal
.
facade
;
import
java.util.ArrayList
;
import
java.util.List
;
import
javax.ejb.EJB
;
import
javax.ejb.LocalBean
;
import
javax.ejb.Stateless
;
import
javax.persistence.TypedQuery
;
import
javax.persistence.criteria.CriteriaBuilder
;
import
javax.persistence.criteria.CriteriaQuery
;
import
javax.persistence.criteria.Root
;
import
fi.insomnia.bortal.beans.EventBeanLocal
;
import
fi.insomnia.bortal.facade.callbacks.FacadeCallback
;
import
fi.insomnia.bortal.facade.callbacks.OrderCallback
;
import
fi.insomnia.bortal.facade.tools.EventLimiter
;
import
fi.insomnia.bortal.facade.tools.EventUserSearchPredicate
;
import
fi.insomnia.bortal.model.EventUser
;
import
fi.insomnia.bortal.model.EventUser_
;
import
fi.insomnia.bortal.model.PrintedCard
;
import
fi.insomnia.bortal.model.PrintedCard_
;
import
fi.insomnia.bortal.model.User
;
import
fi.insomnia.bortal.model.User_
;
import
fi.insomnia.bortal.utilities.SearchResult
;
import
fi.insomnia.bortal.utilities.UserSearchQuery
;
/**
* Session Bean implementation class EventUserFacade
...
...
@@ -78,6 +86,36 @@ public class EventUserFacade extends IntegerPkGenericFacade<EventUser> {
}
public
SearchResult
<
EventUser
>
searchEventUsers
(
UserSearchQuery
query
)
{
ArrayList
<
FacadeCallback
<
EventUser
>>
callbacks
=
new
ArrayList
<
FacadeCallback
<
EventUser
>>();
callbacks
.
add
(
new
OrderCallback
<
EventUser
>(
false
,
EventUser_
.
id
));
callbacks
.
add
(
new
EventLimiter
(
eventBean
.
getCurrentEvent
()));
if
(
query
.
getSearch
()
!=
null
&&
!
query
.
getSearch
().
isEmpty
())
{
callbacks
.
add
(
new
EventUserSearchPredicate
(
query
.
getSearch
(),
UserFacade
.
getAttrlist
()));
}
CriteriaBuilder
cb
=
getEm
().
getCriteriaBuilder
();
CriteriaQuery
<
EventUser
>
listCQuery
=
cb
.
createQuery
(
EventUser
.
class
);
CriteriaQuery
<
Long
>
countCQuery
=
cb
.
createQuery
(
Long
.
class
);
Root
<
EventUser
>
listRoot
=
searchCallbacks
(
listCQuery
,
callbacks
,
EventUser
.
class
);
Root
<
EventUser
>
countRoot
=
searchCallbacks
(
countCQuery
,
callbacks
,
EventUser
.
class
);
listCQuery
.
select
(
listRoot
);
countCQuery
.
select
(
cb
.
count
(
countRoot
));
TypedQuery
<
Long
>
countQ
=
getEm
().
createQuery
(
countCQuery
);
TypedQuery
<
EventUser
>
listQ
=
getEm
().
createQuery
(
listCQuery
);
if
(
query
.
getPagesize
()
>
0
)
{
listQ
.
setFirstResult
(
query
.
getPage
()
*
query
.
getPagesize
());
listQ
.
setMaxResults
(
query
.
getPagesize
());
}
return
new
SearchResult
<
EventUser
>(
listQ
.
getResultList
(),
countQ
.
getSingleResult
());
}
// public SearchResult<EventUser> searchUser(int page, int pagesize, String
// sort, String search) {
//
...
...
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/UserFacade.java
View file @
dc66d75
...
...
@@ -7,11 +7,8 @@ import java.util.List;
import
javax.ejb.EJB
;
import
javax.ejb.LocalBean
;
import
javax.ejb.Stateless
;
import
javax.persistence.TypedQuery
;
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.metamodel.SingularAttribute
;
...
...
@@ -22,9 +19,6 @@ import fi.insomnia.bortal.beans.EventBeanLocal;
import
fi.insomnia.bortal.facade.callbacks.FacadeCallback
;
import
fi.insomnia.bortal.facade.callbacks.OrderCallback
;
import
fi.insomnia.bortal.facade.callbacks.StringSearchPredicateCreator
;
import
fi.insomnia.bortal.model.EventUser
;
import
fi.insomnia.bortal.model.EventUser_
;
import
fi.insomnia.bortal.model.LanEvent
;
import
fi.insomnia.bortal.model.User
;
import
fi.insomnia.bortal.model.User_
;
import
fi.insomnia.bortal.utilities.SearchQuery
;
...
...
@@ -148,45 +142,35 @@ public class UserFacade extends IntegerPkGenericFacade<User> {
return
getEm
().
createQuery
(
cq
).
getResultList
();
}
public
SearchResult
<
User
>
searchEventUsers
(
SearchQuery
query
)
{
ArrayList
<
FacadeCallback
<
EventUser
>>
callbacks
=
new
ArrayList
<
FacadeCallback
<
EventUser
>>();
callbacks
.
add
(
new
OrderCallback
<
EventUser
>(
false
,
EventUser_
.
id
));
callbacks
.
add
(
new
Eventlimiter
(
eventBean
.
getCurrentEvent
()));
CriteriaBuilder
cb
=
getEm
().
getCriteriaBuilder
();
CriteriaQuery
<
User
>
listCQuery
=
cb
.
createQuery
(
User
.
class
);
CriteriaQuery
<
Long
>
countCQuery
=
cb
.
createQuery
(
Long
.
class
);
Root
<
EventUser
>
listRoot
=
searchCallbacks
(
listCQuery
,
callbacks
,
EventUser
.
class
);
Root
<
EventUser
>
countRoot
=
searchCallbacks
(
countCQuery
,
callbacks
,
EventUser
.
class
);
listCQuery
.
select
(
listRoot
.
join
(
EventUser_
.
user
));
countCQuery
.
select
(
cb
.
count
(
countRoot
.
get
(
EventUser_
.
user
)));
TypedQuery
<
Long
>
countQ
=
getEm
().
createQuery
(
countCQuery
);
TypedQuery
<
User
>
listQ
=
getEm
().
createQuery
(
listCQuery
);
if
(
query
.
getPagesize
()
>
0
)
{
listQ
.
setFirstResult
(
query
.
getPage
()
*
query
.
getPagesize
());
listQ
.
setMaxResults
(
query
.
getPagesize
());
}
return
new
SearchResult
<
User
>(
listQ
.
getResultList
(),
countQ
.
getSingleResult
());
}
public
class
Eventlimiter
implements
FacadeCallback
<
EventUser
>
{
private
LanEvent
ev
;
public
Eventlimiter
(
LanEvent
currentEvent
)
{
ev
=
currentEvent
;
}
@Override
public
void
exec
(
CriteriaBuilder
cb
,
CriteriaQuery
<?>
cq
,
Path
<
EventUser
>
root
,
List
<
Predicate
>
predicates
)
{
predicates
.
add
(
cb
.
equal
(
root
.
get
(
EventUser_
.
event
),
ev
));
}
// public SearchResult<User> searchEventUsers(SearchQuery query)
// {
// ArrayList<FacadeCallback<EventUser>> callbacks = new
// ArrayList<FacadeCallback<EventUser>>();
// callbacks.add(new OrderCallback<EventUser>(false, EventUser_.id));
// callbacks.add(new EventLimiter(eventBean.getCurrentEvent()));
//
// CriteriaBuilder cb = getEm().getCriteriaBuilder();
//
// CriteriaQuery<User> listCQuery = cb.createQuery(User.class);
// CriteriaQuery<Long> countCQuery = cb.createQuery(Long.class);
//
// Root<EventUser> listRoot = searchCallbacks(listCQuery, callbacks,
// EventUser.class);
// Root<EventUser> countRoot = searchCallbacks(countCQuery, callbacks,
// EventUser.class);
//
// listCQuery.select(listRoot.join(EventUser_.user));
// countCQuery.select(cb.count(countRoot.get(EventUser_.user)));
//
// TypedQuery<Long> countQ = getEm().createQuery(countCQuery);
// TypedQuery<User> listQ = getEm().createQuery(listCQuery);
//
// if (query.getPagesize() > 0) {
// listQ.setFirstResult(query.getPage() * query.getPagesize());
// listQ.setMaxResults(query.getPagesize());
// }
// return new SearchResult<User>(listQ.getResultList(),
// countQ.getSingleResult());
// }
}
}
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/UserBeanLocal.java
View file @
dc66d75
...
...
@@ -12,6 +12,7 @@ import fi.insomnia.bortal.model.User;
import
fi.insomnia.bortal.model.UserImage
;
import
fi.insomnia.bortal.utilities.SearchQuery
;
import
fi.insomnia.bortal.utilities.SearchResult
;
import
fi.insomnia.bortal.utilities.UserSearchQuery
;
@Local
public
interface
UserBeanLocal
{
...
...
@@ -71,4 +72,6 @@ public interface UserBeanLocal {
EventUser
getUserByBarcode
(
String
barcode
);
SearchResult
<
EventUser
>
getThisEventsUsers
(
UserSearchQuery
searchQuery
);
}
code/LanBortalWeb/WebContent/resources/cditools/user/edit.xhtml
View file @
dc66d75
This diff is collapsed.
Click to expand it.
code/LanBortalWeb/WebContent/resources/style/insomnia2/css/general.css
View file @
dc66d75
...
...
@@ -5,7 +5,7 @@
.userdata_popup
{
position
:
absolute
;
border
:
1px
solid
black
;
backgrond
:
white
;
backgro
u
nd
:
white
;
border-radius
:
3px
;
display
:
none
;
...
...
code/LanBortalWeb/WebContent/useradmin/list.xhtml
View file @
dc66d75
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
xmlns=
"http://www.w3.org/1999/xhtml"
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:users=
"http://java.sun.com/jsf/composite/cditools/user"
xmlns:tools=
"http://java.sun.com/jsf/composite/cditools"
xmlns:f=
"http://java.sun.com/jsf/core"
>
<html
xmlns=
"http://www.w3.org/1999/xhtml"
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:users=
"http://java.sun.com/jsf/composite/cditools/user"
xmlns:tools=
"http://java.sun.com/jsf/composite/cditools"
xmlns:f=
"http://java.sun.com/jsf/core"
>
<h:body>
<ui:composition
template=
"/layout/#{sessionHandler.layout}/template.xhtml"
>
<f:metadata>
...
...
@@ -16,15 +14,19 @@
<f:event
type=
"preRenderView"
listener=
"#{userSearchView.initView}"
/>
</f:metadata>
<ui:param
name=
"thispage"
value=
"page.user.create"
/>
<ui:define
name=
"content"
>
<h1>
#{i18n['userlist.header']}
</h1>
<h:form>
<h:outputLabel
for=
"onlythisevent"
value=
"#{i18n['userlist.onlythisevent']}"
/>
<h:selectBooleanCheckbox
id=
"onlythisevent"
value=
"#{userSearchView.searchQuery.onlyThisEvent}"
/>
<br
/>
<h:inputText
value=
"#{userSearchView.search}"
/>
<h:commandButton
value=
"#{i18n['userlist.search']}"
action=
"#{userSearchView.newSearch()}"
/>
</h:form>
<p>
<users:list
/>
<users:list
rendered=
"#{!userSearchView.searchQuery.onlyThisEvent}"
/>
<users:eventuserlist
rendered=
"#{userSearchView.searchQuery.onlyThisEvent}"
/>
</p>
<p>
<tools:paginationHeader
view=
"#{userSearchView}"
/>
...
...
code/LanBortalWeb/src/fi/insomnia/bortal/web/cdiview/PaginationView.java
View file @
dc66d75
...
...
@@ -34,10 +34,10 @@ public abstract class PaginationView<T extends ModelInterface> extends GenericCD
public
String
addToPage
(
Integer
count
)
{
pagechangeCallback
();
searchQuery
.
addPage
(
count
);
getSearchQuery
()
.
addPage
(
count
);
if
(
searchQuery
.
getPage
()
>=
pagecount
)
{
searchQuery
.
setPage
(
pagecount
.
intValue
()
-
1
);
if
(
getSearchQuery
()
.
getPage
()
>=
pagecount
)
{
getSearchQuery
()
.
setPage
(
pagecount
.
intValue
()
-
1
);
}
return
null
;
}
...
...
@@ -51,14 +51,14 @@ public abstract class PaginationView<T extends ModelInterface> extends GenericCD
public
String
gotoFirstpage
()
{
// logger.info("Setting page to first page");
pagechangeCallback
();
searchQuery
.
setPage
(
0
);
getSearchQuery
()
.
setPage
(
0
);
return
null
;
}
public
String
gotoLastpage
()
{
// logger.info("Setting page to last page");
pagechangeCallback
();
searchQuery
.
setPage
(
pagecount
.
intValue
()
-
1
);
getSearchQuery
()
.
setPage
(
pagecount
.
intValue
()
-
1
);
return
null
;
}
...
...
@@ -72,20 +72,20 @@ public abstract class PaginationView<T extends ModelInterface> extends GenericCD
@Override
public
Integer
getPage
()
{
return
searchQuery
.
getPage
();
return
getSearchQuery
()
.
getPage
();
}
public
void
setPage
(
Integer
page
)
{
searchQuery
.
setPage
(
page
);
getSearchQuery
()
.
setPage
(
page
);
}
@Override
public
Integer
getPagesize
()
{
return
searchQuery
.
getPagesize
();
return
getSearchQuery
()
.
getPagesize
();
}
public
void
setPagesize
(
Integer
pagesize
)
{
searchQuery
.
setPagesize
(
pagesize
);
getSearchQuery
()
.
setPagesize
(
pagesize
);
}
@Override
...
...
@@ -95,7 +95,7 @@ public abstract class PaginationView<T extends ModelInterface> extends GenericCD
public
void
setResultcount
(
Long
resultcount
)
{
this
.
resultcount
=
resultcount
;
pagecount
=
((
resultcount
+
searchQuery
.
getPagesize
()
-
1
)
/
searchQuery
.
getPagesize
());
pagecount
=
((
resultcount
+
getSearchQuery
().
getPagesize
()
-
1
)
/
getSearchQuery
()
.
getPagesize
());
}
@Override
...
...
@@ -108,19 +108,19 @@ public abstract class PaginationView<T extends ModelInterface> extends GenericCD
}
public
String
getSort
()
{
return
searchQuery
.
getSort
();
return
getSearchQuery
()
.
getSort
();
}
public
void
setSort
(
String
sort
)
{
searchQuery
.
setSort
(
sort
);
getSearchQuery
()
.
setSort
(
sort
);
}
public
String
getSearch
()
{
return
searchQuery
.
getSearch
();
return
getSearchQuery
()
.
getSearch
();
}
public
void
setSearch
(
String
search
)
{
searchQuery
.
setSearch
(
search
);
getSearchQuery
()
.
setSearch
(
search
);
}
public
String
newSearch
()
{
...
...
code/LanBortalWeb/src/fi/insomnia/bortal/web/cdiview/user/UserSearchView.java
View file @
dc66d75
package
fi
.
insomnia
.
bortal
.
web
.
cdiview
.
user
;
import
java.util.List
;
import
javax.ejb.EJB
;
import
javax.enterprise.context.RequestScoped
;
import
javax.inject.Named
;
import
fi.insomnia.bortal.beans.UserBeanLocal
;
import
fi.insomnia.bortal.enums.apps.UserPermission
;
import
fi.insomnia.bortal.model.EventUser
;
import
fi.insomnia.bortal.model.User
;
import
fi.insomnia.bortal.utilities.SearchResult
;
import
fi.insomnia.bortal.utilities.UserSearchQuery
;
import
fi.insomnia.bortal.web.cdiview.PaginationView
;
@Named
...
...
@@ -20,12 +25,37 @@ public class UserSearchView extends PaginationView<User> {
@EJB
private
transient
UserBeanLocal
userbean
;
private
List
<
EventUser
>
eventUserResults
;
private
UserSearchQuery
usersearch
=
new
UserSearchQuery
();
public
void
initView
()
{
if
(
requirePermissions
(
permbean
.
hasPermission
(
UserPermission
.
VIEW_ALL
)))
{
if
(
usersearch
.
isOnlyThisEvent
()
||
usersearch
.
getSearch
()
==
null
||
usersearch
.
getSearch
().
isEmpty
())
{
usersearch
.
setOnlyThisEvent
(
true
);
SearchResult
<
EventUser
>
eventusers
=
userbean
.
getThisEventsUsers
(
getSearchQuery
());
this
.
setResultcount
(
eventusers
.
getResultcount
());
this
.
setEventUserResults
(
eventusers
.
getResults
());
}
else
{
super
.
setResult
(
userbean
.
getEventUsers
(
getSearchQuery
()));
}
}
}
@Override
public
UserSearchQuery
getSearchQuery
()
{
return
usersearch
;
}
public
List
<
EventUser
>
getEventUserResults
()
{
return
eventUserResults
;
}
public
void
setEventUserResults
(
List
<
EventUser
>
eventUserResults
)
{
this
.
eventUserResults
=
eventUserResults
;
}
}
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