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 836e68ce
authored
Oct 27, 2010
by
Tuomas Riihimäki
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Kauppa jossain kunnossa.
1 parent
0b7ab654
Show whitespace changes
Inline
Side-by-side
Showing
38 changed files
with
621 additions
and
193 deletions
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/AccountEventBean.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/BarcodeBean.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/CardTemplateBean.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/ProductBean.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/ReaderBean.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/UserBean.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/UtilBean.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/GenericFacade.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/ReaderFacade.java
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/UserFacade.java
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/AccountEventBeanLocal.java
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/CardTemplateBeanLocal.java
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/ProductBeanLocal.java
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/ReaderBeanLocal.java
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/UserBeanLocal.java
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/UtilBeanLocal.java
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/exceptions/BortalCatchableException.java
code/LanBortalDatabase/src/fi/insomnia/bortal/model/AccountEvent.java
code/LanBortalDatabase/src/fi/insomnia/bortal/model/EventMap.java
code/LanBortalDatabase/src/fi/insomnia/bortal/model/Reader.java
code/LanBortalDatabase/src/fi/insomnia/bortal/model/User.java
code/LanBortalWeb/WebContent/generateTestData.xhtml
code/LanBortalWeb/WebContent/layout/insomnia1/sidebar-admin.xhtml
code/LanBortalWeb/WebContent/layout/insomnia1/sidebar-placemap.xhtml
code/LanBortalWeb/WebContent/layout/insomnia1/template.xhtml
code/LanBortalWeb/WebContent/product/createBill.xhtml
code/LanBortalWeb/WebContent/resources/style/insomnia1/style.css
code/LanBortalWeb/WebContent/resources/tools/user/list.xhtml
code/LanBortalWeb/WebContent/shop/listReaders.xhtml
code/LanBortalWeb/WebContent/shop/showReaderEvents.xhtml
code/LanBortalWeb/WebContent/user/sendPicture.xhtml
code/LanBortalWeb/src/fi/insomnia/bortal/view/ProductShopView.java
code/LanBortalWeb/src/fi/insomnia/bortal/view/ReaderView.java
code/LanBortalWeb/src/fi/insomnia/bortal/view/RfidContainer.java
code/LanBortalWeb/src/fi/insomnia/bortal/view/TestDataView.java
code/LanBortalWeb/src/fi/insomnia/bortal/view/UserView.java
code/LanBortalWeb/src/resources/i18n.properties
code/LanBortalWeb/src/resources/i18n_fi.properties
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/AccountEventBean.java
View file @
836e68c
package
fi
.
insomnia
.
bortal
.
beans
;
package
fi
.
insomnia
.
bortal
.
beans
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.Calendar
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
javax.ejb.EJB
;
import
javax.ejb.EJB
;
import
javax.ejb.Stateless
;
import
javax.ejb.Stateless
;
...
@@ -10,6 +15,8 @@ import fi.insomnia.bortal.enums.RolePermission;
...
@@ -10,6 +15,8 @@ import fi.insomnia.bortal.enums.RolePermission;
import
fi.insomnia.bortal.facade.AccountEventFacade
;
import
fi.insomnia.bortal.facade.AccountEventFacade
;
import
fi.insomnia.bortal.model.AccountEvent
;
import
fi.insomnia.bortal.model.AccountEvent
;
import
fi.insomnia.bortal.model.EventPk
;
import
fi.insomnia.bortal.model.EventPk
;
import
fi.insomnia.bortal.model.LanEvent
;
import
fi.insomnia.bortal.model.Product
;
import
fi.insomnia.bortal.model.Role
;
import
fi.insomnia.bortal.model.Role
;
import
fi.insomnia.bortal.model.User
;
import
fi.insomnia.bortal.model.User
;
...
@@ -28,6 +35,8 @@ public class AccountEventBean implements AccountEventBeanLocal {
...
@@ -28,6 +35,8 @@ public class AccountEventBean implements AccountEventBeanLocal {
private
SecurityBeanLocal
sessionbean
;
private
SecurityBeanLocal
sessionbean
;
@EJB
@EJB
private
EventBeanLocal
eventBean
;
private
EventBeanLocal
eventBean
;
@EJB
private
ProductBeanLocal
prodbean
;
public
AccountEventBean
()
{
public
AccountEventBean
()
{
super
();
super
();
...
@@ -64,4 +73,30 @@ public class AccountEventBean implements AccountEventBeanLocal {
...
@@ -64,4 +73,30 @@ public class AccountEventBean implements AccountEventBeanLocal {
public
List
<
Role
>
getRolesFromAccountEvents
(
User
u
)
{
public
List
<
Role
>
getRolesFromAccountEvents
(
User
u
)
{
return
accountfacade
.
findProvidedRoles
(
eventBean
.
getCurrentEvent
(),
u
);
return
accountfacade
.
findProvidedRoles
(
eventBean
.
getCurrentEvent
(),
u
);
}
}
@Override
public
List
<
AccountEvent
>
shopCash
(
User
shoppingUser
,
Map
<
Product
,
BigDecimal
>
shopMap
,
boolean
buyInstant
)
{
userbean
.
fatalPermission
(
Permission
.
SHOP
,
RolePermission
.
EXECUTE
,
"User tried to create accountEvents via shop without SHOP:EXECUTE"
);
ArrayList
<
AccountEvent
>
ret
=
new
ArrayList
<
AccountEvent
>();
LanEvent
ev
=
eventBean
.
getCurrentEvent
();
User
seller
=
userbean
.
getCurrentUser
();
BigDecimal
tot
=
BigDecimal
.
ZERO
;
for
(
Entry
<
Product
,
BigDecimal
>
prodentry
:
shopMap
.
entrySet
())
{
AccountEvent
ac
=
new
AccountEvent
(
ev
,
shoppingUser
,
prodentry
.
getKey
(),
prodentry
.
getKey
().
getPrice
(),
prodentry
.
getValue
(),
Calendar
.
getInstance
());
if
(
buyInstant
&&
prodentry
.
getKey
().
getPrice
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
tot
=
tot
.
add
(
prodentry
.
getValue
().
multiply
(
prodentry
.
getKey
().
getPrice
()));
}
ac
.
setSeller
(
seller
);
shoppingUser
.
getAccountEvents
().
add
(
ac
);
}
if
(
buyInstant
&&
tot
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
Product
creditProd
=
prodbean
.
findCreditProduct
();
AccountEvent
ac
=
new
AccountEvent
(
ev
,
shoppingUser
,
creditProd
,
creditProd
.
getPrice
(),
tot
,
Calendar
.
getInstance
());
shoppingUser
.
getAccountEvents
().
add
(
ac
);
}
userbean
.
mergeChanges
(
shoppingUser
);
return
ret
;
}
}
}
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/BarcodeBean.java
View file @
836e68c
...
@@ -23,7 +23,6 @@ import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
...
@@ -23,7 +23,6 @@ import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
import
com.pdfjet.A4
;
import
com.pdfjet.A4
;
import
com.pdfjet.Image
;
import
com.pdfjet.Image
;
import
com.pdfjet.ImageType
;
import
com.pdfjet.ImageType
;
import
com.pdfjet.IoStream
;
import
com.pdfjet.PDF
;
import
com.pdfjet.PDF
;
import
com.pdfjet.Page
;
import
com.pdfjet.Page
;
...
...
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/CardTemplateBean.java
View file @
836e68c
package
fi
.
insomnia
.
bortal
.
beans
;
package
fi
.
insomnia
.
bortal
.
beans
;
import
java.util.ArrayList
;
import
java.util.Calendar
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Set
;
import
javax.ejb.EJB
;
import
javax.ejb.EJB
;
import
javax.ejb.Stateless
;
import
javax.ejb.Stateless
;
...
@@ -17,7 +13,6 @@ import fi.insomnia.bortal.enums.RolePermission;
...
@@ -17,7 +13,6 @@ import fi.insomnia.bortal.enums.RolePermission;
import
fi.insomnia.bortal.facade.CardTemplateFacade
;
import
fi.insomnia.bortal.facade.CardTemplateFacade
;
import
fi.insomnia.bortal.facade.PrintedCardFacade
;
import
fi.insomnia.bortal.facade.PrintedCardFacade
;
import
fi.insomnia.bortal.model.CardTemplate
;
import
fi.insomnia.bortal.model.CardTemplate
;
import
fi.insomnia.bortal.model.GroupMembership
;
import
fi.insomnia.bortal.model.LanEvent
;
import
fi.insomnia.bortal.model.LanEvent
;
import
fi.insomnia.bortal.model.PrintedCard
;
import
fi.insomnia.bortal.model.PrintedCard
;
import
fi.insomnia.bortal.model.Role
;
import
fi.insomnia.bortal.model.Role
;
...
@@ -77,7 +72,10 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
...
@@ -77,7 +72,10 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
}
}
}
}
public
void
checkPrintedCard
(
User
user
)
{
/**
* Checks users printed card roles and return the biggestCard
*/
public
PrintedCard
checkPrintedCard
(
User
user
)
{
LanEvent
currEvent
=
eventBean
.
getCurrentEvent
();
LanEvent
currEvent
=
eventBean
.
getCurrentEvent
();
List
<
PrintedCard
>
myCards
=
printedcardfacade
.
findForUser
(
currEvent
,
user
);
List
<
PrintedCard
>
myCards
=
printedcardfacade
.
findForUser
(
currEvent
,
user
);
...
@@ -117,7 +115,7 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
...
@@ -117,7 +115,7 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
// user.getPrintedCards().add(pc);
// user.getPrintedCards().add(pc);
printedcardfacade
.
create
(
pc
);
printedcardfacade
.
create
(
pc
);
biggestCard
=
pc
;
logger
.
debug
(
"User {} has too little power old role {} New role {}"
,
new
Object
[]
{
user
.
getLogin
(),
existingPower
,
newPower
});
logger
.
debug
(
"User {} has too little power old role {} New role {}"
,
new
Object
[]
{
user
.
getLogin
(),
existingPower
,
newPower
});
}
else
if
(
existingPower
>
newPower
)
{
}
else
if
(
existingPower
>
newPower
)
{
MailMessage
msg
=
new
MailMessage
();
MailMessage
msg
=
new
MailMessage
();
...
@@ -135,6 +133,7 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
...
@@ -135,6 +133,7 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
}
else
{
}
else
{
logger
.
debug
(
"User {} has power {} and roles has power {}"
,
new
Object
[]
{
user
.
getLogin
(),
existingPower
,
newPower
});
logger
.
debug
(
"User {} has power {} and roles has power {}"
,
new
Object
[]
{
user
.
getLogin
(),
existingPower
,
newPower
});
}
}
return
biggestCard
;
}
}
...
@@ -153,4 +152,16 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
...
@@ -153,4 +152,16 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
}
}
@Override
public
PrintedCard
setRfidUid
(
String
tag
,
User
user
)
{
PrintedCard
ct
=
checkPrintedCard
(
user
);
return
setRfidUid
(
tag
,
ct
);
}
@Override
public
PrintedCard
setRfidUid
(
String
tag
,
PrintedCard
card
)
{
card
.
setRfidUid
(
tag
);
return
printedcardfacade
.
merge
(
card
);
}
}
}
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/ProductBean.java
View file @
836e68c
...
@@ -70,7 +70,6 @@ public class ProductBean implements ProductBeanLocal {
...
@@ -70,7 +70,6 @@ public class ProductBean implements ProductBeanLocal {
@Override
@Override
public
List
<
Product
>
getProducts
()
{
public
List
<
Product
>
getProducts
()
{
userbean
.
fatalPermission
(
Permission
.
PRODUCT
,
RolePermission
.
READ
,
"User tried to fetch all products"
);
userbean
.
fatalPermission
(
Permission
.
PRODUCT
,
RolePermission
.
READ
,
"User tried to fetch all products"
);
return
productFacade
.
findAll
(
eventBean
.
getCurrentEvent
());
return
productFacade
.
findAll
(
eventBean
.
getCurrentEvent
());
}
}
...
@@ -151,5 +150,10 @@ public class ProductBean implements ProductBeanLocal {
...
@@ -151,5 +150,10 @@ public class ProductBean implements ProductBeanLocal {
return
productFacade
.
find
(
eventBean
.
getCurrentEvent
().
getId
(),
id
);
return
productFacade
.
find
(
eventBean
.
getCurrentEvent
().
getId
(),
id
);
}
}
@Override
public
List
<
Product
>
findForStaffshop
()
{
userbean
.
fatalPermission
(
Permission
.
SHOP
,
RolePermission
.
EXECUTE
,
"user tried to get adminshoppable products from productbean without SHOP:EXECUTE"
);
return
productFacade
.
findAll
(
eventBean
.
getCurrentEvent
());
}
}
}
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/ReaderBean.java
View file @
836e68c
...
@@ -5,9 +5,12 @@ import java.util.Calendar;
...
@@ -5,9 +5,12 @@ import java.util.Calendar;
import
javax.ejb.EJB
;
import
javax.ejb.EJB
;
import
javax.ejb.Stateless
;
import
javax.ejb.Stateless
;
import
fi.insomnia.bortal.exceptions.BortalCatchableException
;
import
fi.insomnia.bortal.facade.GroupMembershipFacade
;
import
fi.insomnia.bortal.facade.PrintedCardFacade
;
import
fi.insomnia.bortal.facade.PrintedCardFacade
;
import
fi.insomnia.bortal.facade.ReaderEventFacade
;
import
fi.insomnia.bortal.facade.ReaderEventFacade
;
import
fi.insomnia.bortal.facade.ReaderFacade
;
import
fi.insomnia.bortal.facade.ReaderFacade
;
import
fi.insomnia.bortal.model.GroupMembership
;
import
fi.insomnia.bortal.model.LanEvent
;
import
fi.insomnia.bortal.model.LanEvent
;
import
fi.insomnia.bortal.model.PrintedCard
;
import
fi.insomnia.bortal.model.PrintedCard
;
import
fi.insomnia.bortal.model.Reader
;
import
fi.insomnia.bortal.model.Reader
;
...
@@ -27,18 +30,54 @@ public class ReaderBean implements ReaderBeanLocal {
...
@@ -27,18 +30,54 @@ public class ReaderBean implements ReaderBeanLocal {
private
PrintedCardFacade
cardfacade
;
private
PrintedCardFacade
cardfacade
;
@EJB
@EJB
private
ReaderEventFacade
readerEventFacade
;
private
ReaderEventFacade
readerEventFacade
;
@EJB
private
GroupMembershipFacade
gmfacade
;
@EJB
private
CardTemplateBeanLocal
cardtemplatebean
;
@Override
@Override
public
ReaderEvent
checkTag
(
String
ident
,
String
tag
,
String
hash
)
{
public
ReaderEvent
checkTag
(
String
ident
,
String
tag
,
String
hash
)
{
LanEvent
ev
=
eventbean
.
getCurrentEvent
();
LanEvent
ev
=
eventbean
.
getCurrentEvent
();
Reader
reader
=
readerfacade
.
findByIdent
(
ev
,
ident
);
PrintedCard
card
=
cardfacade
.
findByRfid
(
ev
,
tag
);
PrintedCard
card
=
cardfacade
.
findByRfid
(
ev
,
tag
);
ReaderEvent
ret
=
null
;
ReaderEvent
ret
=
null
;
if
(
reader
!=
null
&&
card
!=
null
)
{
if
(
card
!=
null
)
{
ret
=
new
ReaderEvent
(
ev
,
Calendar
.
getInstance
(),
card
,
reader
);
ret
=
createReaderEvent
(
ident
,
card
);
readerEventFacade
.
create
(
ret
);
}
}
return
ret
;
return
ret
;
}
}
@Override
public
ReaderEvent
assocTagToPlacecode
(
String
tag
,
String
readerIdent
,
String
placecode
)
throws
BortalCatchableException
{
GroupMembership
gm
=
gmfacade
.
findByToken
(
placecode
);
if
(
gm
==
null
)
{
throw
new
BortalCatchableException
(
"Token"
+
placecode
+
" not found!"
,
"readerbean.tokenNotFound"
);
}
if
(
gm
.
getUser
()
==
null
)
{
throw
new
BortalCatchableException
(
"Token "
+
placecode
+
"found but not assoc to user!"
,
"readerbean.userNotAssociateToMembership"
);
}
PrintedCard
card
=
cardtemplatebean
.
setRfidUid
(
tag
,
gm
.
getUser
());
return
createReaderEvent
(
readerIdent
,
card
);
}
private
ReaderEvent
createReaderEvent
(
String
readerIdent
,
PrintedCard
card
)
{
LanEvent
ev
=
eventbean
.
getCurrentEvent
();
Reader
reader
=
readerfacade
.
findOrCreateByIdent
(
ev
,
readerIdent
);
ReaderEvent
ret
=
new
ReaderEvent
(
ev
,
Calendar
.
getInstance
(),
card
,
reader
);
readerEventFacade
.
create
(
ret
);
return
ret
;
}
@Override
public
ReaderEvent
assocTagToCard
(
String
tag
,
String
readerIdent
,
PrintedCard
card
)
{
card
=
cardtemplatebean
.
setRfidUid
(
tag
,
card
);
return
createReaderEvent
(
readerIdent
,
card
);
}
}
}
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/UserBean.java
View file @
836e68c
...
@@ -303,8 +303,9 @@ public class UserBean implements UserBeanLocal {
...
@@ -303,8 +303,9 @@ public class UserBean implements UserBeanLocal {
return
ret
;
return
ret
;
}
}
public
List
<
User
>
searchName
(
String
name
)
{
public
List
<
User
>
searchName
(
String
name
)
{
return
userFacade
.
search
(
name
,
new
String
[]
{
"nick"
,
"login"
,
"firstnames"
,
"lastname"
}
);
return
userFacade
.
search
ForName
(
name
);
}
}
@Override
@Override
...
@@ -360,4 +361,6 @@ public class UserBean implements UserBeanLocal {
...
@@ -360,4 +361,6 @@ public class UserBean implements UserBeanLocal {
return
true
;
return
true
;
}
}
}
}
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/UtilBean.java
View file @
836e68c
package
fi
.
insomnia
.
bortal
.
beans
;
package
fi
.
insomnia
.
bortal
.
beans
;
import
java.awt.image.BufferedImage
;
import
java.io.ByteArrayInputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.IOException
;
import
java.util.Date
;
import
java.util.Date
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.ejb.EJB
;
import
javax.ejb.Local
;
import
javax.ejb.Local
;
import
javax.ejb.Stateless
;
import
javax.ejb.Stateless
;
import
javax.imageio.ImageIO
;
import
javax.jms.JMSException
;
import
javax.jms.JMSException
;
import
javax.jms.ObjectMessage
;
import
javax.jms.ObjectMessage
;
import
javax.jms.Queue
;
import
javax.jms.Queue
;
...
@@ -19,6 +25,8 @@ import javax.persistence.PersistenceUnit;
...
@@ -19,6 +25,8 @@ import javax.persistence.PersistenceUnit;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
fi.insomnia.bortal.model.User
;
import
fi.insomnia.bortal.model.UserImage
;
import
fi.insomnia.bortal.util.MailMessage
;
import
fi.insomnia.bortal.util.MailMessage
;
/**
/**
...
@@ -36,6 +44,8 @@ public class UtilBean implements UtilBeanLocal {
...
@@ -36,6 +44,8 @@ public class UtilBean implements UtilBeanLocal {
@PersistenceUnit
@PersistenceUnit
private
EntityManagerFactory
emf
;
private
EntityManagerFactory
emf
;
@EJB
private
UserBean
userbean
;
/**
/**
* Default constructor.
* Default constructor.
...
@@ -62,8 +72,44 @@ public class UtilBean implements UtilBeanLocal {
...
@@ -62,8 +72,44 @@ public class UtilBean implements UtilBeanLocal {
}
catch
(
JMSException
e
)
{
}
catch
(
JMSException
e
)
{
logger
.
debug
(
"Got exception sending mail"
,
e
);
logger
.
debug
(
"Got exception sending mail"
,
e
);
}
}
logger
.
debug
(
"Message time {}"
,
new
Date
().
getTime
()
-
d
.
getTime
());
logger
.
debug
(
"Message time {}"
,
new
Date
().
getTime
()
-
d
.
getTime
());
return
true
;
return
true
;
}
}
public
void
checkAllUsersImages
()
{
for
(
User
usr
:
userbean
.
getUsers
())
{
convertImage
(
usr
);
}
}
public
void
convertImage
(
User
user
)
{
UserImage
oldpic
=
user
.
getCurrentImage
();
if
(
oldpic
==
null
||
oldpic
.
getMimeType
()
==
null
||
oldpic
.
getMimeType
().
isEmpty
()
||
oldpic
.
getMimeType
().
contains
(
"jpeg"
))
{
return
;
}
logger
.
debug
(
"converting users image id {}, type {} to jpeg"
,
oldpic
.
getId
(),
oldpic
.
getMimeType
());
ByteArrayInputStream
naamastream
=
new
ByteArrayInputStream
(
oldpic
.
getImageData
());
try
{
BufferedImage
face
=
ImageIO
.
read
(
naamastream
);
ByteArrayOutputStream
naamaout
=
new
ByteArrayOutputStream
();
ImageIO
.
write
(
face
,
"jpeg"
,
naamaout
);
UserImage
img
=
new
UserImage
();
img
.
setDescription
(
"changed imagetype from image id: "
+
oldpic
.
getId
());
img
.
setImageData
(
naamaout
.
toByteArray
());
img
.
setMimeType
(
"image/jpeg"
);
img
.
setName
(
"regenerated.jpg"
);
user
.
setCurrentImage
(
img
);
user
.
getUserImageList
().
add
(
img
);
userbean
.
mergeChanges
(
user
);
}
catch
(
IOException
e
)
{
logger
.
warn
(
"error converting image "
,
e
);
}
}
}
}
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/GenericFacade.java
View file @
836e68c
package
fi
.
insomnia
.
bortal
.
facade
;
package
fi
.
insomnia
.
bortal
.
facade
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
javax.persistence.EntityManager
;
import
javax.persistence.EntityManager
;
...
@@ -7,7 +8,10 @@ import javax.persistence.NoResultException;
...
@@ -7,7 +8,10 @@ import javax.persistence.NoResultException;
import
javax.persistence.TypedQuery
;
import
javax.persistence.TypedQuery
;
import
javax.persistence.criteria.CriteriaBuilder
;
import
javax.persistence.criteria.CriteriaBuilder
;
import
javax.persistence.criteria.CriteriaQuery
;
import
javax.persistence.criteria.CriteriaQuery
;
import
javax.persistence.criteria.Path
;
import
javax.persistence.criteria.Predicate
;
import
javax.persistence.criteria.Root
;
import
javax.persistence.criteria.Root
;
import
javax.persistence.metamodel.SingularAttribute
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
...
@@ -57,7 +61,7 @@ public abstract class GenericFacade<PK, T extends ModelInterface> {
...
@@ -57,7 +61,7 @@ public abstract class GenericFacade<PK, T extends ModelInterface> {
Root
<
T
>
root
=
cq
.
from
(
getEntityClass
());
Root
<
T
>
root
=
cq
.
from
(
getEntityClass
());
cq
.
orderBy
(
cb
.
asc
(
root
.
get
(
"id"
)));
cq
.
orderBy
(
cb
.
asc
(
root
.
get
(
"id"
)));
cq
.
select
(
cq
.
from
(
getEntityClass
())
);
cq
.
select
(
root
);
return
getEm
().
createQuery
(
cq
).
getResultList
();
return
getEm
().
createQuery
(
cq
).
getResultList
();
}
}
...
@@ -93,6 +97,28 @@ public abstract class GenericFacade<PK, T extends ModelInterface> {
...
@@ -93,6 +97,28 @@ public abstract class GenericFacade<PK, T extends ModelInterface> {
getEm
().
getEntityManagerFactory
().
getCache
().
evict
(
getEntityClass
(),
entity
.
getId
());
getEm
().
getEntityManagerFactory
().
getCache
().
evict
(
getEntityClass
(),
entity
.
getId
());
}
}
}
}
protected
List
<
T
>
search
(
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
()])));
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
);
List
<
T
>
ret
=
q
.
getResultList
();
logger
.
debug
(
"resultlist size {}"
,
ret
.
size
());
return
ret
;
}
//
//
// @SuppressWarnings("unchecked")
// @SuppressWarnings("unchecked")
// public List<T> search(String query, String[] fields) {
// public List<T> search(String query, String[] fields) {
...
...
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/ReaderFacade.java
View file @
836e68c
...
@@ -31,4 +31,21 @@ public class ReaderFacade extends EventChildGenericFacade<Reader> {
...
@@ -31,4 +31,21 @@ public class ReaderFacade extends EventChildGenericFacade<Reader> {
return
getSingleNullableResult
(
q
);
return
getSingleNullableResult
(
q
);
}
}
public
Reader
findOrCreateByIdent
(
LanEvent
ev
,
String
ident
)
{
Reader
ret
=
findByIdent
(
ev
,
ident
);
if
(
ret
==
null
)
{
ret
=
createIdent
(
this
,
ev
,
ident
);
}
return
ret
;
}
private
static
synchronized
Reader
createIdent
(
ReaderFacade
rf
,
LanEvent
ev
,
String
ident
)
{
Reader
ret
=
rf
.
findByIdent
(
ev
,
ident
);
if
(
ret
==
null
)
{
ret
=
new
Reader
(
ev
,
ident
);
ret
.
setDescription
(
"Automagically created"
);
rf
.
create
(
ret
);
}
return
ret
;
}
}
}
code/LanBortalBeans/ejbModule/fi/insomnia/bortal/facade/UserFacade.java
View file @
836e68c
...
@@ -40,9 +40,10 @@ public class UserFacade extends GenericFacade<Integer, User> {
...
@@ -40,9 +40,10 @@ public class UserFacade extends GenericFacade<Integer, User> {
return
getSingleNullableResult
(
q
);
return
getSingleNullableResult
(
q
);
}
}
public
List
<
User
>
search
(
String
name
,
String
[]
fields
)
{
private
static
final
String
[]
NAMEFIELDS
=
{
"nick"
,
"login"
,
"firstnames"
,
"lastname"
};
throw
new
RuntimeException
(
"NOT IMPLEMENTED!!!"
);
//TODO: Implement search
public
List
<
User
>
searchForName
(
String
name
)
{
return
this
.
search
(
name
,
NAMEFIELDS
,
"login"
);
}
}
}
}
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/AccountEventBeanLocal.java
View file @
836e68c
package
fi
.
insomnia
.
bortal
.
beans
;
package
fi
.
insomnia
.
bortal
.
beans
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
javax.ejb.Local
;
import
javax.ejb.Local
;
import
fi.insomnia.bortal.model.AccountEvent
;
import
fi.insomnia.bortal.model.AccountEvent
;
import
fi.insomnia.bortal.model.EventPk
;
import
fi.insomnia.bortal.model.EventPk
;
import
fi.insomnia.bortal.model.Product
;
import
fi.insomnia.bortal.model.Role
;
import
fi.insomnia.bortal.model.Role
;
import
fi.insomnia.bortal.model.User
;
import
fi.insomnia.bortal.model.User
;
...
@@ -19,4 +23,6 @@ public interface AccountEventBeanLocal {
...
@@ -19,4 +23,6 @@ public interface AccountEventBeanLocal {
List
<
Role
>
getRolesFromAccountEvents
(
User
u
);
List
<
Role
>
getRolesFromAccountEvents
(
User
u
);
List
<
AccountEvent
>
shopCash
(
User
shoppingUser
,
Map
<
Product
,
BigDecimal
>
shopMap
,
boolean
buyInstant
);
}
}
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/CardTemplateBeanLocal.java
View file @
836e68c
...
@@ -5,6 +5,7 @@ import java.util.List;
...
@@ -5,6 +5,7 @@ import java.util.List;
import
javax.ejb.Local
;
import
javax.ejb.Local
;
import
fi.insomnia.bortal.model.CardTemplate
;
import
fi.insomnia.bortal.model.CardTemplate
;
import
fi.insomnia.bortal.model.PrintedCard
;
import
fi.insomnia.bortal.model.User
;
import
fi.insomnia.bortal.model.User
;
@Local
@Local
...
@@ -16,8 +17,12 @@ public interface CardTemplateBeanLocal {
...
@@ -16,8 +17,12 @@ public interface CardTemplateBeanLocal {
CardTemplate
findById
(
Integer
id
);
CardTemplate
findById
(
Integer
id
);
voi
d
checkPrintedCard
(
User
user
);
PrintedCar
d
checkPrintedCard
(
User
user
);
void
checkAllUsersCardRights
();
void
checkAllUsersCardRights
();
PrintedCard
setRfidUid
(
String
tag
,
User
user
);
PrintedCard
setRfidUid
(
String
tag
,
PrintedCard
card
);
}
}
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/ProductBeanLocal.java
View file @
836e68c
...
@@ -32,4 +32,6 @@ public interface ProductBeanLocal {
...
@@ -32,4 +32,6 @@ public interface ProductBeanLocal {
Product
findById
(
int
parseInt
);
Product
findById
(
int
parseInt
);
List
<
Product
>
findForStaffshop
();
}
}
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/ReaderBeanLocal.java
View file @
836e68c
...
@@ -2,6 +2,8 @@ package fi.insomnia.bortal.beans;
...
@@ -2,6 +2,8 @@ package fi.insomnia.bortal.beans;
import
javax.ejb.Local
;
import
javax.ejb.Local
;
import
fi.insomnia.bortal.exceptions.BortalCatchableException
;
import
fi.insomnia.bortal.model.PrintedCard
;
import
fi.insomnia.bortal.model.ReaderEvent
;
import
fi.insomnia.bortal.model.ReaderEvent
;
@Local
@Local
...
@@ -9,4 +11,12 @@ public interface ReaderBeanLocal {
...
@@ -9,4 +11,12 @@ public interface ReaderBeanLocal {
ReaderEvent
checkTag
(
String
reader
,
String
tag
,
String
hash
);
ReaderEvent
checkTag
(
String
reader
,
String
tag
,
String
hash
);
ReaderEvent
assocTagToPlacecode
(
String
tag
,
String
readerIdent
,
String
placecode
)
throws
BortalCatchableException
;
ReaderEvent
assocTagToCard
(
String
tag
,
String
readerIdent
,
PrintedCard
card
);
}
}
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/UserBeanLocal.java
View file @
836e68c
...
@@ -54,4 +54,5 @@ public interface UserBeanLocal {
...
@@ -54,4 +54,5 @@ public interface UserBeanLocal {
List
<
Role
>
findUsersRoles
(
User
u
);
List
<
Role
>
findUsersRoles
(
User
u
);
}
}
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/beans/UtilBeanLocal.java
View file @
836e68c
...
@@ -9,4 +9,8 @@ public interface UtilBeanLocal {
...
@@ -9,4 +9,8 @@ public interface UtilBeanLocal {
boolean
sendMail
(
MailMessage
message
);
boolean
sendMail
(
MailMessage
message
);
void
convertImage
(
User
user
);
void
checkAllUsersImages
();
}
}
code/LanBortalBeansClient/ejbModule/fi/insomnia/bortal/exceptions/BortalCatchableException.java
View file @
836e68c
...
@@ -2,10 +2,25 @@ package fi.insomnia.bortal.exceptions;
...
@@ -2,10 +2,25 @@ package fi.insomnia.bortal.exceptions;
public
class
BortalCatchableException
extends
Exception
{
public
class
BortalCatchableException
extends
Exception
{
private
String
i18nMessage
;
public
BortalCatchableException
(
String
string
)
{
public
BortalCatchableException
(
String
string
)
{
super
(
string
);
super
(
string
);
}
}
public
BortalCatchableException
(
String
string
,
String
i18nMsg
)
{
super
(
string
);
setI18nMessage
(
i18nMsg
);
}
public
void
setI18nMessage
(
String
i18nMessage
)
{
this
.
i18nMessage
=
i18nMessage
;
}
public
String
getI18nMessage
()
{
return
i18nMessage
;
}
/**
/**
*
*
*/
*/
...
...
code/LanBortalDatabase/src/fi/insomnia/bortal/model/AccountEvent.java
View file @
836e68c
...
@@ -44,6 +44,8 @@ public class AccountEvent extends GenericEventChild {
...
@@ -44,6 +44,8 @@ public class AccountEvent extends GenericEventChild {
*/
*/
private
static
final
long
serialVersionUID
=
2588419823225148100L
;
private
static
final
long
serialVersionUID
=
2588419823225148100L
;
@Column
(
name
=
"cash"
,
nullable
=
false
)
private
boolean
cash
=
false
;
/**
/**
* What 1 unit of this product costs.
* What 1 unit of this product costs.
*/
*/
...
@@ -224,4 +226,12 @@ public class AccountEvent extends GenericEventChild {
...
@@ -224,4 +226,12 @@ public class AccountEvent extends GenericEventChild {
return
quantity
;
return
quantity
;
}
}
public
void
setCash
(
boolean
cash
)
{
this
.
cash
=
cash
;
}
public
boolean
isCash
()
{
return
cash
;
}
}
}
code/LanBortalDatabase/src/fi/insomnia/bortal/model/EventMap.java
View file @
836e68c
...
@@ -4,14 +4,9 @@
...
@@ -4,14 +4,9 @@
*/
*/
package
fi
.
insomnia
.
bortal
.
model
;
package
fi
.
insomnia
.
bortal
.
model
;
import
java.awt.Graphics2D
;
import
java.awt.image.BufferedImage
;
import
java.io.ByteArrayInputStream
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
javax.imageio.ImageIO
;
import
javax.persistence.CascadeType
;
import
javax.persistence.CascadeType
;
import
javax.persistence.Column
;
import
javax.persistence.Column
;
import
javax.persistence.EmbeddedId
;
import
javax.persistence.EmbeddedId
;
...
@@ -29,8 +24,6 @@ import javax.persistence.Version;
...
@@ -29,8 +24,6 @@ import javax.persistence.Version;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
fi.insomnia.bortal.utilities.apachecodec.binary.Base64
;
/**
/**
*
*
*/
*/
...
@@ -67,7 +60,7 @@ public class EventMap implements EventChildInterface {
...
@@ -67,7 +60,7 @@ public class EventMap implements EventChildInterface {
@Column
(
nullable
=
false
)
@Column
(
nullable
=
false
)
private
boolean
active
=
true
;
private
boolean
active
=
true
;
@Column
(
name
=
"notes"
)
@Column
(
name
=
"notes"
)
@Lob
@Lob
private
String
notes
;
private
String
notes
;
...
@@ -170,7 +163,6 @@ public class EventMap implements EventChildInterface {
...
@@ -170,7 +163,6 @@ public class EventMap implements EventChildInterface {
this
.
readers
=
readers
;
this
.
readers
=
readers
;
}
}
public
LanEvent
getEvent
()
{
public
LanEvent
getEvent
()
{
return
event
;
return
event
;
}
}
...
@@ -199,6 +191,4 @@ public class EventMap implements EventChildInterface {
...
@@ -199,6 +191,4 @@ public class EventMap implements EventChildInterface {
return
notes
;
return
notes
;
}
}
}
}
code/LanBortalDatabase/src/fi/insomnia/bortal/model/Reader.java
View file @
836e68c
...
@@ -29,6 +29,20 @@ import javax.persistence.UniqueConstraint;
...
@@ -29,6 +29,20 @@ import javax.persistence.UniqueConstraint;
@NamedQuery
(
name
=
"Reader.findByDescription"
,
query
=
"SELECT r FROM Reader r WHERE r.description = :description"
)
})
@NamedQuery
(
name
=
"Reader.findByDescription"
,
query
=
"SELECT r FROM Reader r WHERE r.description = :description"
)
})
public
class
Reader
extends
GenericEventChild
{
public
class
Reader
extends
GenericEventChild
{
public
Reader
()
{
super
();
}
public
Reader
(
LanEvent
ev
,
String
iden
)
{
super
(
ev
);
}
/**
*
*/
private
static
final
long
serialVersionUID
=
616803985117256035L
;
@Column
(
name
=
"reader_ident"
)
@Column
(
name
=
"reader_ident"
)
private
String
identification
;
private
String
identification
;
...
...
code/LanBortalDatabase/src/fi/insomnia/bortal/model/User.java
View file @
836e68c
...
@@ -42,6 +42,7 @@ import org.slf4j.LoggerFactory;
...
@@ -42,6 +42,7 @@ import org.slf4j.LoggerFactory;
import
fi.insomnia.bortal.enums.Gender
;
import
fi.insomnia.bortal.enums.Gender
;
import
fi.insomnia.bortal.utilities.PasswordFunctions
;
import
fi.insomnia.bortal.utilities.PasswordFunctions
;
/**
/**
*
*
*/
*/
...
...
code/LanBortalWeb/WebContent/generateTestData.xhtml
View file @
836e68c
...
@@ -29,6 +29,9 @@
...
@@ -29,6 +29,9 @@
<h:commandButton
value=
"Check all cards"
action=
"#{TestDataView.checkCards()}"
/>
<h:commandButton
value=
"Check all cards"
action=
"#{TestDataView.checkCards()}"
/>
<br
/>
<br
/>
<h:commandButton
value=
"Check all users images"
action=
"#{TestDataView.checkImages()}"
/>
<br
/>
</h:form>
</h:form>
</h:body>
</h:body>
</html>
</html>
...
...
code/LanBortalWeb/WebContent/layout/insomnia1/sidebar-admin.xhtml
View file @
836e68c
...
@@ -57,6 +57,9 @@
...
@@ -57,6 +57,9 @@
<li><h:outputText
styleClass=
"sidebartitle"
value=
"#{i18n['sidebar.other']}"
/>
<li><h:outputText
styleClass=
"sidebartitle"
value=
"#{i18n['sidebar.other']}"
/>
<ul>
<ul>
<li><h:link
outcome=
"/eventorg/list"
value=
"#{i18n['sidebar.eventorg.list']}"
/></li>
<li><h:link
outcome=
"/eventorg/list"
value=
"#{i18n['sidebar.eventorg.list']}"
/></li>
<li><h:link
outcome=
"/utils/flushCache"
value=
"#{i18n['sidebar.utils.flushCache']}"
/></li>
<li><h:link
outcome=
"/generateTestData"
value=
"#{i18n['sidebar.utils.testdata']}"
/></li>
</ul>
</ul>
</li>
</li>
</ul>
</ul>
...
...
code/LanBortalWeb/WebContent/layout/insomnia1/sidebar-placemap.xhtml
View file @
836e68c
<!DOCTYPE html
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
<html
xmlns=
"http://www.w3.org/1999/xhtml"
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns=
"http://www.w3.org/1999/xhtml"
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:f=
"http://java.sun.com/jsf/core"
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns:tools=
"http://java.sun.com/jsf/composite/tools"
xmlns:c=
"http://java.sun.com/jsp/jstl/core"
>
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:f=
"http://java.sun.com/jsf/core"
xmlns:tools=
"http://java.sun.com/jsf/composite/tools"
xmlns:c=
"http://java.sun.com/jsp/jstl/core"
>
<h:body>
<h:body>
<ui:composition
template=
"/layout/insomnia1/sidebartemplate.xhtml"
>
<ui:composition
template=
"/layout/insomnia1/sidebartemplate.xhtml"
>
<ui:param
name=
"rendered"
value=
"false"
/>
<ui:param
name=
"rendered"
value=
"false"
/>
<ui:define
name=
"sidebarcontent"
>
<ui:define
name=
"sidebarcontent"
>
</ui:define>
</ui:define>
</ui:composition>
</ui:composition>
</h:body>
</h:body>
...
...
code/LanBortalWeb/WebContent/layout/insomnia1/template.xhtml
View file @
836e68c
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html
<html
xmlns=
"http://www.w3.org/1999/xhtml"
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:f=
"http://java.sun.com/jsf/core"
xmlns=
"http://www.w3.org/1999/xhtml"
xmlns:tools=
"http://java.sun.com/jsf/composite/tools"
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:f=
"http://java.sun.com/jsf/core"
xmlns:tools=
"http://java.sun.com/jsf/composite/tools"
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns:c=
"http://java.sun.com/jsp/jstl/core"
>
xmlns:c=
"http://java.sun.com/jsp/jstl/core"
>
<f:view
locale=
"#{sessionHandler.locale}"
>
<f:view
locale=
"#{sessionHandler.locale}"
>
<ui:insert
name=
"metadata"
/>
<ui:insert
name=
"metadata"
/>
<h:head>
<h:head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
/>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
/>
<title><h:outputText
value=
"#{i18n['global.eventname']}"
/>
-
<h:outputText
value=
"#{i18n[util.concat(thispage,'.header') ] }"
/></title>
<title><h:outputText
value=
"#{i18n['global.eventname']}"
/>
-
<h:outputText
value=
"#{i18n[util.concat(thispage,'.header') ] }"
/></title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"#{request.contextPath}/resources/style/insomnia1/style.css"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"#{request.contextPath}/resources/style/insomnia1/style.css"
/>
</h:head>
</h:head>
<h:body>
<h:body>
<tools:canRead
target=
"USER_MANAGEMENT"
>
<div
class=
"link#{i18n[util.concat(thispage,'.pagegroup')] == 'admin'?'a':''}"
>
<h:link
outcome=
"/product/list"
value=
"#{i18n['topmenu.adminfront']}"
/></div>
</tools:canRead>
<div
id=
"wrapper"
>
<div
id=
"wrapper"
>
<div
id=
"navigation"
>
<div
id=
"navigation"
>
<img
id=
"head"
src=
"#{request.contextPath}/resources/style/insomnia1/img/header.gif"
alt=
"headerimage"
/>
<div
style=
"float: left"
>
<div
id=
"topheadercontainer"
><img
id=
"head"
<div
id=
"headerbox"
><tools:isLoggedIn>
#{sessionHandler.loginname}
</tools:isLoggedIn><tools:loginLogout
/></div
>
src=
"#{request.contextPath}/resources/style/insomnia1/img/header.gif"
alt=
"headerimage"
/
>
<div
style=
"float: left"
>
<div
id=
"headerbox"
><tools:isLoggedIn>
#{sessionHandler.loginname}
</tools:isLoggedIn><tools:loginLogout
/></div>
</div>
</div>
</div>
<div
id=
"mainmenu"
>
<div
id=
"mainmenu"
>
<div
class=
"link#{i18n[util.concat(thispage,'.pagegroup')] == 'frontpage'?'a':''}"
>
<h:link
outcome=
"/index"
value=
"#{i18n['topmenu.frontpage']}"
/></div>
<div
class=
"link#{i18n[util.concat(thispage,'.pagegroup')] == 'frontpage'?'a':''}"
><h:link
outcome=
"/index"
value=
"#{i18n['topmenu.frontpage']}"
/></div>
<tools:isLoggedIn>
<tools:isLoggedIn>
<div
class=
"link#{i18n[util.concat(thispage,'.pagegroup')] == 'user'?'a':''}"
>
<h:link
outcome=
"/user/editself"
value=
"#{i18n['topmenu.usersPreferences']}"
/></div>
<div
class=
"link#{i18n[util.concat(thispage,'.pagegroup')] == 'user'?'a':''}"
><h:link
outcome=
"/user/editself"
<div
class=
"link#{i18n[util.concat(thispage,'.pagegroup')] == 'shop'?'a': ''}"
>
<h:link
outcome=
"/product/createBill"
value=
"#{i18n['topmenu.shoppings']}"
/></div>
value=
"#{i18n['topmenu.usersPreferences']}"
/></div>
<div
class=
"link#{i18n[util.concat(thispage,'.pagegroup')] == 'shop'?'a': ''}"
><h:link
outcome=
"/product/createBill"
value=
"#{i18n['topmenu.shoppings']}"
/></div>
</tools:isLoggedIn>
</tools:isLoggedIn>
<div
class=
"link#{i18n[util.concat(thispage,'.pagegroup')] == 'placemap'?'a':''}"
>
<h:link
outcome=
"/place/placemap"
value=
"#{i18n['topmenu.placemap']}"
/></div>
<div
class=
"link#{i18n[util.concat(thispage,'.pagegroup')] == 'placemap'?'a':''}"
><h:link
outcome=
"/place/placemap"
value=
"#{i18n['topmenu.placemap']}"
/></div>
</div>
<tools:canRead
target=
"USER_MANAGEMENT"
>
<div
class=
"link#{i18n[util.concat(thispage,'.pagegroup')] == 'admin'?'a':''}"
><h:link
outcome=
"/product/list"
value=
"#{i18n['topmenu.adminfront']}"
/></div>
<div
class=
"link#{i18n[util.concat(thispage,'.pagegroup')] == 'rfidshop'?'a':''}"
><h:link
outcome=
"/shop/showReaderEvents"
value=
"#{i18n['topmenu.rfidshop']}"
/></div>
</tools:canRead></div>
</div>
</div>
<div
id=
"content"
>
<div
id=
"content"
>
<div
id=
"cwrap"
>
<div
id=
"cwrap"
><ui:include
src=
"/layout/insomnia1/sidebar-#{i18n[util.concat(thispage,'.pagegroup')]}.xhtml"
/>
<ui:include
src=
"/layout/insomnia1/sidebar-#{i18n[util.concat(thispage,'.pagegroup')]}.xhtml"
/>
<h:messages
globalOnly=
"true"
/>
<h:messages
globalOnly=
"true"
/>
<ui:insert
name=
"content"
/></div>
<ui:insert
name=
"content"
/>
</div>
</div>
</div>
<div
id=
"footer"
>
#{i18n['global.copyright']}
</div>
<div
id=
"footer"
>
#{i18n['global.copyright']}
</div>
</div>
</div>
</h:body>
</h:body>
</f:view>
</f:view>
</html>
</html>
\ No newline at end of file
code/LanBortalWeb/WebContent/product/createBill.xhtml
View file @
836e68c
<!DOCTYPE html
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
<html
xmlns=
"http://www.w3.org/1999/xhtml"
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns=
"http://www.w3.org/1999/xhtml"
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:tools=
"http://java.sun.com/jsf/composite/tools"
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns:products=
"http://java.sun.com/jsf/composite/tools/products"
xmlns:f=
"http://java.sun.com/jsf/core"
>
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:tools=
"http://java.sun.com/jsf/composite/tools"
xmlns:products=
"http://java.sun.com/jsf/composite/tools/products"
xmlns:f=
"http://java.sun.com/jsf/core"
>
<h:body>
<h:body>
...
@@ -15,7 +11,9 @@
...
@@ -15,7 +11,9 @@
<ui:param
name=
"thispage"
value=
"page.product.createBill"
/>
<ui:param
name=
"thispage"
value=
"page.product.createBill"
/>
<ui:define
name=
"content"
>
<ui:define
name=
"content"
>
<products:shop
commitaction=
"#{productShopView.commitBillCart()}"
items=
"#{productShopView.billCart}"
commitValue=
"#{i18n['productshop.commit']}"
/>
#{productShopView.initUsershoppable()}
<products:shop
commitaction=
"#{productShopView.commitBillCart()}"
items=
"#{productShopView.billCart}"
commitValue=
"#{i18n['productshop.commit']}"
/>
</ui:define>
</ui:define>
</ui:composition>
</ui:composition>
</h:body>
</h:body>
...
...
code/LanBortalWeb/WebContent/resources/style/insomnia1/style.css
View file @
836e68c
...
@@ -91,6 +91,7 @@ body {
...
@@ -91,6 +91,7 @@ body {
text-align
:
right
;
text-align
:
right
;
margin
:
15px
30px
5px
30px
;
margin
:
15px
30px
5px
30px
;
color
:
#FFFFFF
;
color
:
#FFFFFF
;
width
:
425px
;
}
}
#headerbox
a
{
#headerbox
a
{
...
...
code/LanBortalWeb/WebContent/resources/tools/user/list.xhtml
View file @
836e68c
<?xml version='1.0' encoding='UTF-8' ?>
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns=
"http://www.w3.org/1999/xhtml"
<html
xmlns=
"http://www.w3.org/1999/xhtml"
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:f=
"http://java.sun.com/jsf/core"
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:f=
"http://java.sun.com/jsf/core"
xmlns:composite=
"http://java.sun.com/jsf/composite"
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns:composite=
"http://java.sun.com/jsf/composite"
xmlns:c=
"http://java.sun.com/jsp/jstl/core"
xmlns:tools=
"http://java.sun.com/jsf/composite/tools"
>
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns:c=
"http://java.sun.com/jsp/jstl/core"
xmlns:tools=
"http://java.sun.com/jsf/composite/tools"
>
<composite:interface>
<composite:interface>
</composite:interface>
</composite:interface>
...
@@ -59,8 +56,18 @@
...
@@ -59,8 +56,18 @@
</h:outputText>
</h:outputText>
</h:column>
</h:column>
<h:column>
<h:column>
<f:facet
name=
"header"
>
<h:outputText
value=
"#{i18n['user.image']}"
/>
</f:facet>
<h:commandLink
action=
"#{userView.showImage()}"
value=
"#{(empty user.currentImage)?i18n['user.noImage']:i18n['user.hasImage']}"
/>
</h:column>
<h:column>
<h:commandButton
action=
"#{userView.edit()}"
value=
"#{i18n['user.edit']}"
/>
<h:commandButton
action=
"#{userView.edit()}"
value=
"#{i18n['user.edit']}"
/>
</h:column>
</h:column>
<h:column>
<h:commandButton
action=
"#{userView.shop()}"
value=
"#{i18n['user.shop']}"
/>
</h:column>
</h:dataTable>
</h:dataTable>
</h:form>
</h:form>
</composite:implementation>
</composite:implementation>
...
...
code/LanBortalWeb/WebContent/shop/listReaders.xhtml
View file @
836e68c
...
@@ -5,27 +5,13 @@
...
@@ -5,27 +5,13 @@
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:f=
"http://java.sun.com/jsf/core"
xmlns:f=
"http://java.sun.com/jsf/core"
xmlns:
users=
"http://java.sun.com/jsf/composite/tools/user
"
xmlns:
shop=
"http://java.sun.com/jsf/composite/tools/shop
"
xmlns:c=
"http://java.sun.com/jsp/jstl/core"
>
xmlns:c=
"http://java.sun.com/jsp/jstl/core"
>
<h:body>
<h:body>
<ui:composition
template=
"/layout/#{sessionHandler.layout}/template.xhtml"
>
<ui:composition
template=
"/layout/#{sessionHandler.layout}/template.xhtml"
>
<ui:param
name=
"thispage"
value=
"page.eventorg.list"
/>
<ui:param
name=
"thispage"
value=
"page.eventorg.list"
/>
<ui:define
name=
"content"
>
<ui:define
name=
"content"
>
<h:form>
<shop:readerlist
/>
<h:dataTable
border=
"1"
id=
"reader"
value=
"#{readerView.readers}"
var=
"reader"
>
<h:column>
<f:facet
name=
"header"
>
<h:outputText
value=
"${i18n['reader.name']}"
/>
</f:facet>
<h:outputText
value=
"#{reader}"
/>
</h:column>
<h:column
>
<h:commandButton
action=
"#{readerView.selectReader()}"
value=
"#{i18n['reader.select']}"
/>
</h:column>
</h:dataTable>
</h:form>
</ui:define>
</ui:define>
</ui:composition>
</ui:composition>
</h:body>
</h:body>
...
...
code/LanBortalWeb/WebContent/shop/showReaderEvents.xhtml
View file @
836e68c
...
@@ -3,59 +3,14 @@
...
@@ -3,59 +3,14 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
"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"
<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:f=
"http://java.sun.com/jsf/core"
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:f=
"http://java.sun.com/jsf/core"
xmlns:
users=
"http://java.sun.com/jsf/composite/tools/user
"
xmlns:c=
"http://java.sun.com/jsp/jstl/core"
>
xmlns:
shop=
"http://java.sun.com/jsf/composite/tools/shop
"
xmlns:c=
"http://java.sun.com/jsp/jstl/core"
>
<h:body>
<h:body>
<ui:composition
template=
"/layout/#{sessionHandler.layout}/template.xhtml"
>
<ui:composition
template=
"/layout/#{sessionHandler.layout}/template.xhtml"
>
<ui:param
name=
"thispage"
value=
"page.
eventorg.list
"
/>
<ui:param
name=
"thispage"
value=
"page.
shop.readerevents
"
/>
<ui:define
name=
"content"
>
<ui:define
name=
"content"
>
<shop:readerevents
rendered=
"#{!empty readerView.readername}"
/>
<shop:readerlist
rendered=
"#{empty readerView.readername}"
/>
<h1>
#{readerView.readername}
</h1>
<h:form>
<h:dataTable
border=
"1"
id=
"event"
value=
"#{readerView.readerEvents}"
var=
"event"
>
<h:column>
<f:facet
name=
"header"
>
<h:outputText
value=
"${i18n['reader.tag']}"
/>
</f:facet>
<h:outputText
id=
"tag"
value=
"#{event.tag}"
/>
</h:column>
<h:column>
<f:facet
name=
"header"
>
<h:outputText
value=
"${i18n['reader.tag']}"
/>
</f:facet>
<h:outputText
id=
"eventtime"
value=
"#{event.time.time}"
>
<f:convertDateTime
/>
</h:outputText>
</h:column>
<h:column>
<f:facet
name=
"header"
>
<h:outputText
value=
"${i18n['reader.tag']}"
/>
</f:facet>
<h:outputText
rendered=
"#{!empty event.event}"
value=
"#{event.event.printedCard.user.wholeName} (#{event.event.printedCard.user.nick})"
/>
</h:column>
<h:column>
<f:facet
name=
"header"
>
<h:outputText
value=
"${i18n['reader.tag']}"
/>
</f:facet>
<h:dataTable
value=
"#{event.actions}"
var=
"action"
>
<h:column>
<h:outputText
value=
"#{action}"
/>
</h:column>
</h:dataTable>
</h:column>
<h:column>
<f:facet
name=
"header"
>
<h:outputText
value=
"${i18n['readerevent.seenSince']}"
/>
</f:facet>
<h:outputText
value=
"#{event.seenSince}"
/>
</h:column>
<h:column>
<h:commandButton
action=
"#{readerView.selectReader()}"
value=
"#{i18n['reader.select']}"
/>
</h:column>
</h:dataTable>
</h:form>
</ui:define>
</ui:define>
</ui:composition>
</ui:composition>
</h:body>
</h:body>
...
...
code/LanBortalWeb/WebContent/user/sendPicture.xhtml
View file @
836e68c
<!DOCTYPE html
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
xmlns=
"http://www.w3.org/1999/xhtml"
<html
xmlns=
"http://www.w3.org/1999/xhtml"
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:f=
"http://java.sun.com/jsf/core"
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:f=
"http://java.sun.com/jsf/core"
xmlns:users=
"http://java.sun.com/jsf/composite/tools/user"
xmlns:users=
"http://java.sun.com/jsf/composite/tools/user"
xmlns:c=
"http://java.sun.com/jsp/jstl/core"
>
xmlns:c=
"http://java.sun.com/jsp/jstl/core"
>
<h:body>
<h:body>
<ui:composition
template=
"/layout/#{sessionHandler.layout}/template.xhtml"
>
<ui:composition
template=
"/layout/#{sessionHandler.layout}/template.xhtml"
>
<ui:param
name=
"thispage"
value=
"page.user.create"
/>
<ui:param
name=
"thispage"
value=
"page.user.create"
/>
<ui:define
name=
"content"
>
<ui:define
name=
"content"
>
<form
<users:sendImage
/>
onsubmit=
"window.open('', 'imagesubmitpopup', 'height=200,width=400'); this.target='imagesubmitpopup'; return true; "
action=
"#{request.contextPath}/UploadServlet?type=userimage"
enctype=
"multipart/form-data"
method=
"post"
>
<p>
<input
type=
"hidden"
name=
"id"
value=
"#{userView.user.id}"
/>
Voit lisätä kuvan kävijälippuasi varten. Näin nopeutat asiointiasi tapahtumaan tullessasi.
</p>
<h:panelGrid
columns=
"2"
>
<h:outputLabel
value=
"#{i18n['imagefile.file']}"
/>
<input
type=
"file"
name=
"file"
/>
<!-- <h:outputLabel value="#{i18n['imagefile.description']}"/><input type="text" name="description" /> -->
<h:panelGroup>
<input
type=
"submit"
name=
"submit"
value=
"#{i18n['user.imagesubmit']}"
/>
</h:panelGroup>
</h:panelGrid>
</form>
<h2>
#{i18n['user.thisIsCurrentImage']}
</h2>
<img
width=
"100"
src=
"#{request.contextPath}/Userimage"
alt=
""
/>
</ui:define>
</ui:define>
</ui:composition>
</ui:composition>
...
...
code/LanBortalWeb/src/fi/insomnia/bortal/view/ProductShopView.java
View file @
836e68c
...
@@ -5,7 +5,10 @@
...
@@ -5,7 +5,10 @@
package
fi
.
insomnia
.
bortal
.
view
;
package
fi
.
insomnia
.
bortal
.
view
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
javax.ejb.EJB
;
import
javax.ejb.EJB
;
import
javax.faces.application.FacesMessage
;
import
javax.faces.application.FacesMessage
;
...
@@ -18,12 +21,14 @@ import javax.faces.model.ListDataModel;
...
@@ -18,12 +21,14 @@ import javax.faces.model.ListDataModel;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
fi.insomnia.bortal.beans.AccountEventBeanLocal
;
import
fi.insomnia.bortal.beans.BillBeanLocal
;
import
fi.insomnia.bortal.beans.BillBeanLocal
;
import
fi.insomnia.bortal.beans.EventBeanLocal
;
import
fi.insomnia.bortal.beans.EventBeanLocal
;
import
fi.insomnia.bortal.beans.ProductBeanLocal
;
import
fi.insomnia.bortal.beans.ProductBeanLocal
;
import
fi.insomnia.bortal.beans.UserBeanLocal
;
import
fi.insomnia.bortal.beans.UserBeanLocal
;
import
fi.insomnia.bortal.enums.Permission
;
import
fi.insomnia.bortal.enums.Permission
;
import
fi.insomnia.bortal.enums.RolePermission
;
import
fi.insomnia.bortal.enums.RolePermission
;
import
fi.insomnia.bortal.model.AccountEvent
;
import
fi.insomnia.bortal.model.Bill
;
import
fi.insomnia.bortal.model.Bill
;
import
fi.insomnia.bortal.model.Discount
;
import
fi.insomnia.bortal.model.Discount
;
import
fi.insomnia.bortal.model.Product
;
import
fi.insomnia.bortal.model.Product
;
...
@@ -49,29 +54,26 @@ public class ProductShopView {
...
@@ -49,29 +54,26 @@ public class ProductShopView {
private
User
shoppingUser
;
private
User
shoppingUser
;
public
DataModel
<
Product
>
getUserShoppableProducts
()
{
@EJB
ListDataModel
<
Product
>
items
=
new
ListDataModel
<
Product
>(
productBean
.
listUserShoppableProducts
());
private
AccountEventBeanLocal
accountEventBean
;
logger
.
debug
(
"Fetching products. Found {}"
,
items
.
getRowCount
());
return
items
;
}
public
String
commitBillCart
()
{
userBean
.
fatalPermission
(
Permission
.
PRODUCT
,
RolePermission
.
EXECUTE
);
logger
.
debug
(
"Committing billCart"
);
private
boolean
productsInCart
()
{
Iterator
<
ProductShopItem
>
nullcheckIter
=
billCart
.
iterator
();
Iterator
<
ProductShopItem
>
nullcheckIter
=
billCart
.
iterator
();
boolean
hasItems
=
false
;
while
(
nullcheckIter
.
hasNext
())
{
while
(
nullcheckIter
.
hasNext
())
{
if
(
nullcheckIter
.
next
().
getCount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
if
(
nullcheckIter
.
next
().
getCount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
logger
.
debug
(
"Found items from cart"
);
logger
.
debug
(
"Found items from cart"
);
hasItems
=
true
;
return
true
;
break
;
}
}
}
}
return
false
;
}
public
String
commitBillCart
()
{
userBean
.
fatalPermission
(
Permission
.
PRODUCT
,
RolePermission
.
EXECUTE
);
if
(!
hasItems
)
logger
.
debug
(
"Committing billCart"
);
{
if
(!
productsInCart
())
{
FacesContext
.
getCurrentInstance
().
addMessage
(
null
,
new
FacesMessage
(
I18n
.
get
(
"productshop.noItemsInCart"
)));
FacesContext
.
getCurrentInstance
().
addMessage
(
null
,
new
FacesMessage
(
I18n
.
get
(
"productshop.noItemsInCart"
)));
return
"createBill"
;
return
"createBill"
;
}
}
...
@@ -92,11 +94,45 @@ public class ProductShopView {
...
@@ -92,11 +94,45 @@ public class ProductShopView {
return
"success"
;
return
"success"
;
}
}
public
DataModel
<
ProductShopItem
>
getBillCart
()
{
public
String
commitShoppingCart
()
{
if
(!
productsInCart
())
{
FacesContext
.
getCurrentInstance
().
addMessage
(
null
,
new
FacesMessage
(
I18n
.
get
(
"productshop.noItemsInCart"
)));
return
null
;
}
Iterator
<
ProductShopItem
>
cartIter
=
billCart
.
iterator
();
Map
<
Product
,
BigDecimal
>
shopMap
=
new
HashMap
<
Product
,
BigDecimal
>();
while
(
cartIter
.
hasNext
())
{
ProductShopItem
shopitem
=
cartIter
.
next
();
if
(
shopitem
.
getCount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
if
(
shopMap
.
containsKey
(
shopitem
.
getProduct
()))
{
FacesContext
.
getCurrentInstance
().
addMessage
(
null
,
new
FacesMessage
(
I18n
.
get
(
"productshop.productFoundTwice"
)));
return
null
;
}
shopMap
.
put
(
shopitem
.
getProduct
(),
shopitem
.
getCount
());
}
}
List
<
AccountEvent
>
executed
=
accountEventBean
.
shopCash
(
shoppingUser
,
shopMap
,
true
);
return
"success"
;
}
public
void
initUsershoppable
()
{
logger
.
debug
(
"Creating new BillCart"
);
logger
.
debug
(
"Creating new BillCart"
);
userBean
.
fatalPermission
(
Permission
.
BILL
,
RolePermission
.
EXECUTE
);
userBean
.
fatalPermission
(
Permission
.
BILL
,
RolePermission
.
EXECUTE
);
billCart
=
new
ListDataModel
<
ProductShopItem
>(
ProductShopItem
.
productList
(
productBean
.
listUserShoppableProducts
()));
billCart
=
new
ListDataModel
<
ProductShopItem
>(
ProductShopItem
.
productList
(
productBean
.
listUserShoppableProducts
()));
}
public
void
initShoppableProducts
()
{
userBean
.
fatalPermission
(
Permission
.
SHOP
,
RolePermission
.
EXECUTE
);
billCart
=
new
ListDataModel
<
ProductShopItem
>(
ProductShopItem
.
productList
(
productBean
.
getProducts
()));
}
public
DataModel
<
ProductShopItem
>
getBillCart
()
{
return
billCart
;
return
billCart
;
}
}
...
...
code/LanBortalWeb/src/fi/insomnia/bortal/view/ReaderView.java
View file @
836e68c
package
fi
.
insomnia
.
bortal
.
view
;
package
fi
.
insomnia
.
bortal
.
view
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.Set
;
import
javax.ejb.EJB
;
import
javax.faces.bean.ManagedBean
;
import
javax.faces.bean.ManagedBean
;
import
javax.faces.bean.ManagedProperty
;
import
javax.faces.bean.ManagedProperty
;
import
javax.faces.bean.RequestScoped
;
import
javax.faces.bean.SessionScoped
;
import
javax.faces.bean.SessionScoped
;
import
javax.faces.model.ListDataModel
;
import
javax.faces.model.ListDataModel
;
import
fi.insomnia.bortal.beans.EventBeanLocal
;
import
fi.insomnia.bortal.beans.ReaderBeanLocal
;
import
fi.insomnia.bortal.beans.UserBeanLocal
;
import
fi.insomnia.bortal.exceptions.BortalCatchableException
;
import
fi.insomnia.bortal.model.LanEvent
;
import
fi.insomnia.bortal.model.PrintedCard
;
import
fi.insomnia.bortal.model.ReaderEvent
;
import
fi.insomnia.bortal.model.User
;
import
fi.insomnia.bortal.view.RfidContainer.RfidEvent
;
import
fi.insomnia.bortal.view.RfidContainer.RfidEvent
;
@ManagedBean
(
name
=
"readerView"
)
@ManagedBean
(
name
=
"readerView"
)
@SessionScoped
@SessionScoped
public
class
ReaderView
{
public
class
ReaderView
extends
GenericView
{
@ManagedProperty
(
value
=
"#{rfidContainer}"
)
@ManagedProperty
(
value
=
"#{rfidContainer}"
)
private
RfidContainer
container
;
private
RfidContainer
container
;
@ManagedProperty
(
value
=
"#{shopView}"
)
private
ProductShopView
shopview
;
private
ListDataModel
<
String
>
readerlist
;
private
ListDataModel
<
String
>
readerlist
;
private
String
readername
;
private
String
readername
;
private
ListDataModel
<
RfidEvent
>
readerevents
;
private
ListDataModel
<
RfidEvent
>
readerevents
;
private
RfidEvent
rfidevent
;
private
String
placecode
;
private
String
usersearch
;
@EJB
private
ReaderBeanLocal
readerBean
;
@EJB
private
UserBeanLocal
userbean
;
@EJB
private
EventBeanLocal
eventbean
;
private
ListDataModel
<
UserCardWrapper
>
userlist
;
public
String
searchforuser
()
{
setUserlist
(
initUserCardWrapper
(
userbean
.
searchName
(
usersearch
+
"%"
)));
return
null
;
}
public
ListDataModel
<
String
>
getReaders
()
{
public
ListDataModel
<
String
>
getReaders
()
{
Set
<
String
>
keyset
=
getContainer
().
getReaders
().
keySet
();
Set
<
String
>
keyset
=
getContainer
().
getReaders
().
keySet
();
...
@@ -27,11 +54,48 @@ public class ReaderView {
...
@@ -27,11 +54,48 @@ public class ReaderView {
return
readerlist
;
return
readerlist
;
}
}
public
String
selectEvent
()
{
rfidevent
=
readerevents
.
getRowData
();
String
ret
=
null
;
if
(
rfidevent
.
getEvent
()
==
null
)
{
usersearch
=
""
;
setUserlist
(
null
);
placecode
=
""
;
ret
=
"assocToUser"
;
}
else
{
getShopview
().
setShoppingUser
(
rfidevent
.
getEvent
().
getPrintedCard
().
getUser
());
ret
=
"shopToUser"
;
}
return
ret
;
}
public
String
assocToCard
()
{
UserCardWrapper
usr
=
userlist
.
getRowData
();
PrintedCard
card
=
usr
.
getCards
().
getRowData
();
readerBean
.
assocTagToCard
(
rfidevent
.
getTag
(),
readername
,
card
);
getShopview
().
setShoppingUser
(
usr
.
getUser
());
return
"shopToUser"
;
}
public
String
selectReader
()
{
public
String
selectReader
()
{
setReadername
(
readerlist
.
getRowData
());
setReadername
(
readerlist
.
getRowData
());
return
"showReaderEvents"
;
return
"showReaderEvents"
;
}
}
public
String
assocToPlacecode
()
{
try
{
ReaderEvent
event
=
readerBean
.
assocTagToPlacecode
(
rfidevent
.
getTag
(),
readername
,
placecode
);
rfidevent
.
setEvent
(
event
);
rfidevent
.
addMessage
(
"Associated to user "
+
event
.
getPrintedCard
().
getUser
().
getWholeName
());
}
catch
(
BortalCatchableException
e
)
{
this
.
addFaceMessage
(
e
.
getI18nMessage
());
}
return
""
;
}
public
ListDataModel
<
RfidEvent
>
getReaderEvents
()
{
public
ListDataModel
<
RfidEvent
>
getReaderEvents
()
{
readerevents
=
new
ListDataModel
<
RfidEvent
>(
getContainer
().
getReaderEvents
(
getReadername
()));
readerevents
=
new
ListDataModel
<
RfidEvent
>(
getContainer
().
getReaderEvents
(
getReadername
()));
return
readerevents
;
return
readerevents
;
...
@@ -52,4 +116,88 @@ public class ReaderView {
...
@@ -52,4 +116,88 @@ public class ReaderView {
public
String
getReadername
()
{
public
String
getReadername
()
{
return
readername
;
return
readername
;
}
}
public
String
getPlacecode
()
{
return
placecode
;
}
public
void
setPlacecode
(
String
placecode
)
{
this
.
placecode
=
placecode
;
}
public
String
getUsersearch
()
{
return
usersearch
;
}
public
void
setUsersearch
(
String
usersearch
)
{
this
.
usersearch
=
usersearch
;
}
public
void
setRfidevent
(
RfidEvent
rfidevent
)
{
this
.
rfidevent
=
rfidevent
;
}
public
RfidEvent
getRfidevent
()
{
return
rfidevent
;
}
private
ListDataModel
<
UserCardWrapper
>
initUserCardWrapper
(
List
<
User
>
users
)
{
ArrayList
<
UserCardWrapper
>
ret
=
new
ArrayList
<
UserCardWrapper
>();
for
(
User
usr
:
users
)
{
ret
.
add
(
new
UserCardWrapper
(
usr
));
}
return
new
ListDataModel
<
UserCardWrapper
>(
ret
);
}
public
void
setUserlist
(
ListDataModel
<
UserCardWrapper
>
userlist
)
{
this
.
userlist
=
userlist
;
}
public
ListDataModel
<
UserCardWrapper
>
getUserlist
()
{
return
userlist
;
}
public
void
setShopview
(
ProductShopView
shopview
)
{
this
.
shopview
=
shopview
;
}
public
ProductShopView
getShopview
()
{
return
shopview
;
}
public
class
UserCardWrapper
{
private
User
user
;
private
ListDataModel
<
PrintedCard
>
cards
;
public
UserCardWrapper
(
User
usr
)
{
LanEvent
event
=
eventbean
.
getCurrentEvent
();
setUser
(
usr
);
ArrayList
<
PrintedCard
>
cardlist
=
new
ArrayList
<
PrintedCard
>();
for
(
PrintedCard
pc
:
usr
.
getPrintedCards
())
{
if
(
pc
.
getEnabled
()
&&
event
.
getId
().
equals
(
pc
.
getId
().
getEventId
()))
{
cardlist
.
add
(
pc
);
}
}
setCards
(
new
ListDataModel
<
PrintedCard
>(
cardlist
));
}
public
void
setCards
(
ListDataModel
<
PrintedCard
>
cards
)
{
this
.
cards
=
cards
;
}
public
ListDataModel
<
PrintedCard
>
getCards
()
{
return
cards
;
}
public
void
setUser
(
User
user
)
{
this
.
user
=
user
;
}
public
User
getUser
()
{
return
user
;
}
}
}
}
code/LanBortalWeb/src/fi/insomnia/bortal/view/RfidContainer.java
View file @
836e68c
...
@@ -125,5 +125,10 @@ public class RfidContainer {
...
@@ -125,5 +125,10 @@ public class RfidContainer {
this
.
actions
=
actions
;
this
.
actions
=
actions
;
}
}
public
void
addMessage
(
String
msg
)
{
this
.
actions
.
add
(
msg
);
}
}
}
}
}
code/LanBortalWeb/src/fi/insomnia/bortal/view/TestDataView.java
View file @
836e68c
...
@@ -98,4 +98,10 @@ public class TestDataView {
...
@@ -98,4 +98,10 @@ public class TestDataView {
public
void
checkCards
()
{
public
void
checkCards
()
{
ctbean
.
checkAllUsersCardRights
();
ctbean
.
checkAllUsersCardRights
();
}
}
public
String
checkImages
()
{
logger
.
debug
(
"Cheking all users images"
);
utilbean
.
checkAllUsersImages
();
return
null
;
}
}
}
code/LanBortalWeb/src/fi/insomnia/bortal/view/UserView.java
View file @
836e68c
...
@@ -19,6 +19,7 @@ import fi.insomnia.bortal.beans.RoleBeanLocal;
...
@@ -19,6 +19,7 @@ import fi.insomnia.bortal.beans.RoleBeanLocal;
import
fi.insomnia.bortal.beans.SecurityBeanLocal
;
import
fi.insomnia.bortal.beans.SecurityBeanLocal
;
import
fi.insomnia.bortal.beans.SecurityLogType
;
import
fi.insomnia.bortal.beans.SecurityLogType
;
import
fi.insomnia.bortal.beans.UserBeanLocal
;
import
fi.insomnia.bortal.beans.UserBeanLocal
;
import
fi.insomnia.bortal.beans.UtilBeanLocal
;
import
fi.insomnia.bortal.enums.Permission
;
import
fi.insomnia.bortal.enums.Permission
;
import
fi.insomnia.bortal.enums.RolePermission
;
import
fi.insomnia.bortal.enums.RolePermission
;
import
fi.insomnia.bortal.model.AccountEvent
;
import
fi.insomnia.bortal.model.AccountEvent
;
...
@@ -41,6 +42,8 @@ public class UserView extends GenericView {
...
@@ -41,6 +42,8 @@ public class UserView extends GenericView {
@ManagedProperty
(
value
=
"#{placeGroupView}"
)
@ManagedProperty
(
value
=
"#{placeGroupView}"
)
private
PlaceGroupView
placegroupView
;
private
PlaceGroupView
placegroupView
;
@ManagedProperty
(
value
=
"#{productShopView}"
)
private
ProductShopView
shopview
;
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
UserView
.
class
);
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
UserView
.
class
);
private
User
user
;
private
User
user
;
...
@@ -48,11 +51,20 @@ public class UserView extends GenericView {
...
@@ -48,11 +51,20 @@ public class UserView extends GenericView {
private
String
password
;
private
String
password
;
private
String
passwordcheck
;
private
String
passwordcheck
;
@EJB
private
UtilBeanLocal
utilbean
;
public
void
initCreateuser
()
{
public
void
initCreateuser
()
{
user
=
new
User
();
user
=
new
User
();
}
}
public
String
showImage
()
{
userBean
.
fatalPermission
(
Permission
.
USER_MANAGEMENT
,
RolePermission
.
READ
);
setUser
(
items
.
getRowData
());
return
"adminSendImage"
;
}
public
String
edit
()
{
public
String
edit
()
{
userBean
.
fatalPermission
(
Permission
.
USER_MANAGEMENT
,
RolePermission
.
READ
);
userBean
.
fatalPermission
(
Permission
.
USER_MANAGEMENT
,
RolePermission
.
READ
);
...
@@ -61,6 +73,14 @@ public class UserView extends GenericView {
...
@@ -61,6 +73,14 @@ public class UserView extends GenericView {
return
"userEdit"
;
return
"userEdit"
;
}
}
public
String
shop
()
{
userBean
.
fatalPermission
(
Permission
.
SHOP
,
RolePermission
.
EXECUTE
,
"no rights to shop to user without SHOP:EXECUTE"
);
shopview
.
setShoppingUser
(
items
.
getRowData
());
// shopview.setUser(items.getRowData());
return
"/shop/shopToUser"
;
}
public
ListDataModel
<
PlaceGroup
>
getPlacegroups
()
{
public
ListDataModel
<
PlaceGroup
>
getPlacegroups
()
{
List
<
PlaceGroup
>
retlist
=
new
ArrayList
<
PlaceGroup
>();
List
<
PlaceGroup
>
retlist
=
new
ArrayList
<
PlaceGroup
>();
retlist
.
addAll
(
user
.
getPlaceGroups
());
retlist
.
addAll
(
user
.
getPlaceGroups
());
...
@@ -200,8 +220,7 @@ public class UserView extends GenericView {
...
@@ -200,8 +220,7 @@ public class UserView extends GenericView {
return
"edit"
;
return
"edit"
;
}
}
public
String
editGroup
(
PlaceGroup
pg
)
public
String
editGroup
(
PlaceGroup
pg
)
{
{
placegroupView
.
setGroup
(
pg
);
placegroupView
.
setGroup
(
pg
);
return
"/place/editGroup"
;
return
"/place/editGroup"
;
...
@@ -214,4 +233,22 @@ public class UserView extends GenericView {
...
@@ -214,4 +233,22 @@ public class UserView extends GenericView {
public
PlaceGroupView
getPlacegroupView
()
{
public
PlaceGroupView
getPlacegroupView
()
{
return
placegroupView
;
return
placegroupView
;
}
}
public
String
recheckImagetype
()
{
utilbean
.
convertImage
(
user
);
return
null
;
}
public
String
nothing
()
{
return
null
;
}
public
void
setShopview
(
ProductShopView
shopview
)
{
this
.
shopview
=
shopview
;
}
public
ProductShopView
getShopview
()
{
return
shopview
;
}
}
}
code/LanBortalWeb/src/resources/i18n.properties
View file @
836e68c
...
@@ -63,8 +63,9 @@ page.user.list.header=Kyttjt
...
@@ -63,8 +63,9 @@ page.user.list.header=Kyttjt
page.user.editself.pagegroup
=
user
page.user.editself.pagegroup
=
user
page.user.editself.header
=
Omat tiedot
page.user.editself.header
=
Omat tiedot
page.user.mygroups.pagegroup
=
user
page.user.mygroups.pagegroup
=
user
page.user.mygroups
=
Omat paikat
page.user.mygroups.header
=
Omat paikat
page.admin.sendimage.pagegroup
=
admin
page.admin.sendimage.header
=
Lhet kuva
page.auth.login.loginerror.pagegroup
=
frontpage
page.auth.login.loginerror.pagegroup
=
frontpage
page.auth.login.loginerror.header
=
Kirjautumisvirhe
page.auth.login.loginerror.header
=
Kirjautumisvirhe
...
@@ -88,3 +89,7 @@ page.account.list.pagegroup=user
...
@@ -88,3 +89,7 @@ page.account.list.pagegroup=user
page.account.list.header
=
Tilitapahtumat
page.account.list.header
=
Tilitapahtumat
page.auth.resetPassword.pagegroup
=
user
page.auth.resetPassword.pagegroup
=
user
page.auth.resetPassword.header
=
Salasanan resetointi
page.auth.resetPassword.header
=
Salasanan resetointi
page.shop.readerevents.pagegroup
=
rfidshop
page.shop.readerevents.header
=
RFID kauppa
\ No newline at end of file
code/LanBortalWeb/src/resources/i18n_fi.properties
View file @
836e68c
...
@@ -34,6 +34,8 @@ products.save=Tallenna
...
@@ -34,6 +34,8 @@ products.save=Tallenna
productshop.commit
=
Osta
productshop.commit
=
Osta
product.boughtTotal
=
Tuotteita laskutettu
product.boughtTotal
=
Tuotteita laskutettu
product.paid
=
Maksettu
product.paid
=
Maksettu
product.prepaidInstant
=
Luodaan kun prepaid maksetaan
placegroup.printPdf
=
Tulosta paikkakoodit
placegroup.printPdf
=
Tulosta paikkakoodit
placegroup.name
=
Nimi
placegroup.name
=
Nimi
...
@@ -101,6 +103,13 @@ user.accountBalance=Tilin saldo
...
@@ -101,6 +103,13 @@ user.accountBalance=Tilin saldo
userview.passwordsDontMatch
=
Salasanat eivt ole samat! Ole hyv ja syt salasanat uudelleen.
userview.passwordsDontMatch
=
Salasanat eivt ole samat! Ole hyv ja syt salasanat uudelleen.
user.myGroups
=
Omat paikkavaraukset
user.myGroups
=
Omat paikkavaraukset
user.insertToken
=
Syt paikkakoodi
user.insertToken
=
Syt paikkakoodi
user.wholeName
=
Nimi
user.hasImage
=
Kuva
user.noImage
=
EI kuvaa
user.noCurrentImage
=
Ei kuvaa
sidebar.utils.testdata
=
Testdata
sidebar.utils.flushCache
=
Flush Cache
placetoken.token
=
Paikkakoodi
placetoken.token
=
Paikkakoodi
placetoken.commit
=
Liit
placetoken.commit
=
Liit
...
@@ -224,12 +233,19 @@ cardTemplate.name=Korttipohja
...
@@ -224,12 +233,19 @@ cardTemplate.name=Korttipohja
cardTemplate.power
=
Teho
cardTemplate.power
=
Teho
cardTemplate.roles
=
Yhdistetyt roolit
cardTemplate.roles
=
Yhdistetyt roolit
topmenu.rfidshop
=
Staffshop
readerview.cards
=
Kortit ( tulostuslkm )
reader.assocToCard
=
Yhdist korttiin
topmenu.placemap
=
Paikkakartta
topmenu.placemap
=
Paikkakartta
userview.passwordsChanged
=
Salasana vaihdettu
userview.passwordsChanged
=
Salasana vaihdettu
userview.passwordTooShort
=
Salasana liian lyhyt. Pit olla vhintn 5 merkki pitk.
userview.passwordTooShort
=
Salasana liian lyhyt. Pit olla vhintn 5 merkki pitk.
userview.loginstringFaulty
=
Kyttjtunnus virheellinen. Pit olla vhintn kaksi merkki pitk.
userview.loginstringFaulty
=
Kyttjtunnus virheellinen. Pit olla vhintn kaksi merkki pitk.
productshop.noItemsInCart
=
Ostoskorissa ei ole tuotteita
productshop.noItemsInCart
=
Ostoskorissa ei ole tuotteita
shop.user
=
Myydn
accountevent.quantity
=
Lukumr
accountevent.quantity
=
Lukumr
accountevent.productname
=
Tuote
accountevent.productname
=
Tuote
accountevent.unitPrice
=
Yksikkhinta
accountevent.unitPrice
=
Yksikkhinta
...
@@ -281,9 +297,12 @@ placeSelect.legend.red=Varattu paikka
...
@@ -281,9 +297,12 @@ placeSelect.legend.red=Varattu paikka
placeSelect.legend.green
=
Oma ostettu paikka
placeSelect.legend.green
=
Oma ostettu paikka
placeSelect.legend.blue
=
Oma valittu paikka
placeSelect.legend.blue
=
Oma valittu paikka
placeSelect.legend.white
=
Vapaa paikka
placeSelect.legend.white
=
Vapaa paikka
placeSelect.legend.grey
=
Ei vapautet
a
placeSelect.legend.grey
=
Vapautetaan tarvittaess
a
placeSelect.totalPlaces
=
Paikkoja yhteens
placeSelect.totalPlaces
=
Paikkoja yhteens
readerevent.seenSince
=
Nhty viimeksi
reader.tag
=
Tag
reader.user
=
Kyttj
# Validationmessages
# Validationmessages
...
...
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