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 33e96587
authored
May 11, 2013
by
Petri Jarvisalo
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'devel' of codecrew.fi:bortal into devel
2 parents
02ec364b
c9b01cc0
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
177 additions
and
20 deletions
code/MoyaBeans/ejbModule/fi/codecrew/moya/beans/UserBean.java
code/MoyaWeb/WebContent/WEB-INF/web.xml
code/MoyaWeb/WebContent/admin/incoming/printCard.xhtml
code/MoyaWeb/WebContent/resources/cditools/reader/rfid.xhtml
code/MoyaWeb/WebContent/resources/cditools/user/edit.xhtml
code/MoyaWeb/WebContent/resources/cditools/user/previewAndPrintCard.xhtml
code/MoyaWeb/WebContent/user/sendPicture.xhtml
code/MoyaWeb/src/fi/codecrew/moya/rest/pojo/PrintedCardRestPojo.java
code/MoyaWeb/src/fi/codecrew/moya/servlet/FileDownloadServlet.java
code/MoyaWeb/src/fi/codecrew/moya/web/cdiview/user/UserView.java
code/MoyaWeb/src/fi/codecrew/moya/web/flow/IncomingView.java
code/MoyaBeans/ejbModule/fi/codecrew/moya/beans/UserBean.java
View file @
33e9658
package
fi
.
codecrew
.
moya
.
beans
;
import
java.awt.Graphics2D
;
import
java.awt.RenderingHints
;
import
java.awt.geom.AffineTransform
;
import
java.awt.image.AffineTransformOp
;
import
java.awt.image.BufferedImage
;
import
java.io.ByteArrayInputStream
;
import
java.io.ByteArrayOutputStream
;
...
...
@@ -225,11 +229,59 @@ public class UserBean implements UserBeanLocal {
throw
new
EJBAccessException
(
"No permission to upload image as another user"
);
}
ByteArrayInputStream
imagestream
=
new
ByteArrayInputStream
(
image
);
BufferedImage
bimage
;
try
{
bimage
=
ImageIO
.
read
(
imagestream
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
int
maxImageWidth
=
1000
;
int
maxImageHeight
=
1000
;
if
(
bimage
.
getWidth
()
>
maxImageWidth
||
bimage
.
getHeight
()
>
maxImageHeight
)
{
int
w
=
bimage
.
getWidth
();
int
h
=
bimage
.
getHeight
();
if
(
w
>
h
)
{
h
=
(
int
)
(((
double
)
h
/
(
double
)
w
)*
(
double
)
maxImageWidth
);
w
=
maxImageWidth
;
}
else
{
w
=
(
int
)
(((
double
)
w
/
(
double
)
h
)*
(
double
)
maxImageHeight
);
h
=
maxImageHeight
;
}
logger
.
info
(
"scaling image to {} x {}"
,
w
,
h
);
BufferedImage
resized
=
new
BufferedImage
(
w
,
h
,
bimage
.
getType
());
Graphics2D
g
=
resized
.
createGraphics
();
g
.
setRenderingHint
(
RenderingHints
.
KEY_INTERPOLATION
,
RenderingHints
.
VALUE_INTERPOLATION_BILINEAR
);
g
.
drawImage
(
bimage
,
0
,
0
,
w
,
h
,
0
,
0
,
bimage
.
getWidth
(),
bimage
.
getHeight
(),
null
);
g
.
dispose
();
bimage
=
resized
;
}
ByteArrayOutputStream
naamaout
=
new
ByteArrayOutputStream
();
try
{
ImageIO
.
write
(
bimage
,
"png"
,
naamaout
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
UserImage
userimage
=
null
;
userimage
=
new
UserImage
(
user
.
getUser
());
userimage
.
setMimeType
(
contentType
);
userimage
.
setImageData
(
image
);
userimage
.
setImageData
(
naamaout
.
toByteArray
()
);
userimage
.
setName
(
filename
);
userimage
.
setDescription
(
description
);
...
...
code/MoyaWeb/WebContent/WEB-INF/web.xml
View file @
33e9658
...
...
@@ -10,7 +10,7 @@
<context-param>
<param-name>
javax.faces.PROJECT_STAGE
</param-name>
<!-- Production | Development -->
<param-value>
Production
</param-value>
<param-value>
Development
</param-value>
</context-param>
<context-param>
<param-name>
javax.faces.FACELETS_SKIP_COMMENTS
</param-name>
...
...
@@ -71,11 +71,7 @@
<servlet-name>
PlaceMap
</servlet-name>
<servlet-class>
fi.codecrew.moya.servlet.PlaceMap
</servlet-class>
</servlet>
<servlet>
<description>
JAX-RS Tools Generated - Do not modify
</description>
<servlet-name>
JAX-RS Servlet
</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>
Faces Servlet
</servlet-name>
<url-pattern>
*.jsf
</url-pattern>
...
...
@@ -146,6 +142,13 @@
<servlet-name>
PlaceGroupPdf
</servlet-name>
<url-pattern>
/PlaceGroupPdf
</url-pattern>
</servlet-mapping>
<servlet>
<description>
JAX-RS Tools Generated - Do not modify
</description>
<servlet-name>
JAX-RS Servlet
</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<load-on-startup>
1
</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>
JAX-RS Servlet
</servlet-name>
<url-pattern>
/rest/*
</url-pattern>
...
...
code/MoyaWeb/WebContent/admin/incoming/printCard.xhtml
View file @
33e9658
...
...
@@ -12,28 +12,31 @@
</f:metadata>
<ui:define
name=
"content"
>
<h:outputScript
library=
"primefaces"
name=
"jquery/jquery.js"
target=
"head"
/>
<h:panelGrid
columns=
"3"
>
<h:form>
<p:poll
interval=
"1"
listener=
"#{incomingView.polledRead}"
/>
</h:form>
<h:panelGrid
columns=
"3"
>
<h:panelGroup>
<user:edit
commitaction=
"#{incomingView.saveUser()}"
commitvalue=
"#{i18n['user.save']}"
/>
<user:edit
commitaction=
"#{incomingView.saveUser()}"
commitvalue=
"#{i18n['user.save']}"
camAlwaysOn=
"true"
/>
</h:panelGroup>
<h:panelGroup>
<h:form>
<p:imageCropper
value=
"#{userView.croppedImage}"
aspectRatio=
"0.7317073170731707"
image=
"/dydata/userimage/#{userView.user.currentImage.id}.jpg"
/>
<h:commandButton
action=
"#{userView.crop}"
value=
"#{i18n['user.cropImage']}"
/>
<h:commandButton
action=
"#{userView.cancelCrop}"
value=
"#{i18n['user.cropImage']}"
/>
</h:form>
</h:panelGroup>
<h:panelGroup>
<h:form>
<user:previewAndPrintCard
/>
<p:commandButton
action=
"#{userView.acceptPrintedCard()}"
value=
"accept printed card"
/>
<p:graphicImage
url=
"/dydata/usercard/#{userView.user.user.id}.png"
width=
"300"
/><br
/>
<h:commandButton
action=
"#{incomingView.printCard}"
value=
"#{i18n['print']}"
/>
</h:form>
</h:panelGroup>
</h:panelGrid>
...
...
code/MoyaWeb/WebContent/resources/cditools/reader/rfid.xhtml
View file @
33e9658
...
...
@@ -22,9 +22,9 @@ xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
<h:dataTable
border=
"1"
id=
"reader"
value=
"#{readerListDataView.readers}"
var=
"rr"
>
<h:column>
<f:facet
name=
"header"
>
<h:outputText
value=
"
$
{i18n['reader.name']}"
/>
<h:outputText
value=
"
#
{i18n['reader.name']}"
/>
</f:facet>
<h:outputText
value=
"#{rr}"
/>
<h:outputText
value=
"#{rr
.identification
}"
/>
</h:column>
<h:column>
<h:commandButton
action=
"#{readerListDataView.selectReader}"
value=
"#{i18n['reader.select']}"
/>
...
...
code/MoyaWeb/WebContent/resources/cditools/user/edit.xhtml
View file @
33e9658
...
...
@@ -7,6 +7,7 @@
<composite:interface>
<composite:attribute
name=
"creating"
required=
"false"
default=
"false"
/>
<composite:attribute
name=
"commitaction"
required=
"true"
method-signature=
"java.lang.String action()"
/>
<composite:attribute
name=
"camAlwaysOn"
required=
"false"
default=
"false"
/>
</composite:interface>
<composite:implementation>
...
...
@@ -19,20 +20,25 @@
<h:panelGroup>
<ui:fragment
rendered=
"#{not empty userView.user.id}"
>
<p:dialog
id=
"chartPanel"
for=
"webcamButton"
modal=
"true"
dynamic=
"true"
widgetVar=
"webcamDialog"
>
<p:dialog
rendered=
"#{!cc.attrs.camAlwaysOn}"
id=
"chartPanel"
for=
"webcamButton"
modal=
"true"
dynamic=
"true"
widgetVar=
"webcamDialog"
>
<p:photoCam
widgetVar=
"pc"
listener=
"#{userView.oncapture}"
update=
"@all"
/>
<p:commandButton
type=
"button"
value=
"Capture"
onclick=
"pc.capture()"
/>
</p:dialog>
<h:outputText
rendered=
"#{empty userView.user.currentImage}"
value=
"#{i18n['user.noCurrentImage']}"
/>
<ui:fragment
rendered=
"#{!empty userView.user.currentImage}"
>
<img
style=
"width: 150px;"
src=
"#{request.contextPath}/dydata/userimage/#{userView.user.currentImage.id}.img"
alt=
"image"
/>
</ui:fragment>
<br
/>
<p:commandButton
id=
"webcamButton"
value=
"#{i18n['userimage.webcam']}"
onclick=
"webcamDialog.show()"
type=
"button"
/>
<p:commandButton
rendered=
"#{!cc.attrs.camAlwaysOn}"
id=
"webcamButton"
value=
"#{i18n['userimage.webcam']}"
onclick=
"webcamDialog.show()"
type=
"button"
/>
<br
/>
<br
/>
<ui:fragment
rendered=
"#{cc.attrs.camAlwaysOn}"
>
<p:photoCam
widgetVar=
"pc"
listener=
"#{userView.oncapture}"
update=
"@all"
/>
<p:commandButton
type=
"button"
value=
"Capture"
onclick=
"pc.capture()"
/>
</ui:fragment>
<p:fileUpload
id=
"uploadfile"
required=
"TRUE"
requiredMessage=
"Required!"
invalidSizeMessage=
"#{i18n['user.imageTooBig']}"
sizeLimit=
"1024"
value=
"#{userView.image}"
mode=
"simple"
/>
<p:message
for=
"uploadfile"
/>
...
...
code/MoyaWeb/WebContent/resources/cditools/user/previewAndPrintCard.xhtml
View file @
33e9658
...
...
@@ -9,9 +9,12 @@
<composite:implementation>
<div>
<p:graphicImage
url=
"/dydata/usercard/#{userView.user.user.id}.png"
width=
"300"
/><br
/>
<p:commandButton
action=
"#{userView.prepareCardDownload()}"
rendered=
"#{userView.waitForAcceptance==false}"
value=
"print card"
ajax=
"true"
update=
"@form"
onclick=
"PrimeFaces.monitorDownload(start, stop)"
>
<p:fileDownload
value=
"#{userView.streamedFile}"
/>
</p:commandButton>
</div>
</composite:implementation>
</html>
...
...
code/MoyaWeb/WebContent/user/sendPicture.xhtml
View file @
33e9658
...
...
@@ -47,6 +47,9 @@
<h2>
#{i18n['user.thisIsCurrentImage']}
</h2>
<h:outputText
rendered=
"#{empty userView.user.currentImage}"
value=
"#{i18n['user.noCurrentImage']}"
/>
<img
width=
"300"
rendered=
"#{!empty userView.user.currentImage}"
src=
"#{request.contextPath}/dydata/userimage/#{userView.user.currentImage.id}.jpg"
alt=
"image"
/>
<!-- <ui:fragment rendered="#{!empty userView.user.currentImage}">
<img width="300" src="#{request.contextPath}/dydata/userimage/#{userView.user.currentImage.id}.img" alt="image" />
<div>
...
...
code/MoyaWeb/src/fi/codecrew/moya/rest/pojo/PrintedCardRestPojo.java
View file @
33e9658
...
...
@@ -33,7 +33,11 @@ public class PrintedCardRestPojo {
@XmlElement
(
name
=
"cardTemplate"
)
public
String
getTemplate
()
{
return
card
.
getTemplate
().
getName
();
String
ret
=
null
;
if
(
card
.
getTemplate
()
!=
null
)
ret
=
card
.
getTemplate
().
getName
();
return
ret
;
}
@XmlElement
(
name
=
"username"
)
...
...
code/MoyaWeb/src/fi/codecrew/moya/servlet/FileDownloadServlet.java
View file @
33e9658
...
...
@@ -17,13 +17,16 @@ import javax.servlet.http.HttpServletResponse;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
fi.codecrew.moya.beans.CardPrintBeanLocal
;
import
fi.codecrew.moya.beans.CardTemplateBeanLocal
;
import
fi.codecrew.moya.beans.EventBeanLocal
;
import
fi.codecrew.moya.beans.PermissionBeanLocal
;
import
fi.codecrew.moya.beans.UserBeanLocal
;
import
fi.codecrew.moya.model.CardTemplate
;
import
fi.codecrew.moya.model.EventUser
;
import
fi.codecrew.moya.model.LanEventProperty
;
import
fi.codecrew.moya.model.LanEventPropertyKey
;
import
fi.codecrew.moya.model.PrintedCard
;
import
fi.codecrew.moya.model.UserImage
;
/**
...
...
@@ -41,6 +44,13 @@ public class FileDownloadServlet extends GenericImageServlet {
@EJB
private
transient
UserBeanLocal
userbean
;
@EJB
private
transient
CardTemplateBeanLocal
cardbean
;
@EJB
private
transient
CardPrintBeanLocal
cardprint
;
@EJB
private
transient
PermissionBeanLocal
permbean
;
...
...
@@ -57,6 +67,14 @@ public class FileDownloadServlet extends GenericImageServlet {
private
static
final
Pattern
URLPATTERN
=
Pattern
.
compile
(
"([^./]+)"
);
/**
* Usage MoyaWeb/dydata/format/
* possible formats
* logo
* userimage/<eventuserid>.jpg
* cardtemplate/<cardtemplateid>.png
* usercard/
*/
@Override
protected
ImageMover
getImagedata
()
{
ImageMover
ret
=
new
ImageMover
();
...
...
@@ -117,6 +135,28 @@ public class FileDownloadServlet extends GenericImageServlet {
}
}
}
else
if
(
urlparts
.
get
(
0
).
equals
(
"usercard"
)
&&
urlparts
.
size
()
>
2
)
{
int
userid
=
Integer
.
parseInt
(
urlparts
.
get
(
1
));
EventUser
usr
=
userbean
.
findByUserId
(
userid
);
logger
.
info
(
"Trying to print usercard for user {}"
,
usr
);
if
(
usr
!=
null
)
{
PrintedCard
card
=
cardbean
.
checkPrintedCard
(
usr
);
try
{
byte
[]
img
=
cardprint
.
constructPNG
(
card
);
if
(
img
.
length
>
0
)
{
ret
.
setData
(
img
);
ret
.
setImagetype
(
"image/png"
);
}
}
catch
(
Exception
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
}
}
if
(
ret
.
getImagetype
()
==
null
)
{
...
...
code/MoyaWeb/src/fi/codecrew/moya/web/cdiview/user/UserView.java
View file @
33e9658
...
...
@@ -27,6 +27,7 @@ import fi.codecrew.moya.beans.EventBeanLocal;
import
fi.codecrew.moya.beans.ReaderBeanLocal
;
import
fi.codecrew.moya.beans.RoleBeanLocal
;
import
fi.codecrew.moya.beans.UserBeanLocal
;
import
fi.codecrew.moya.enums.CardState
;
import
fi.codecrew.moya.enums.apps.UserPermission
;
import
fi.codecrew.moya.model.CardTemplate
;
import
fi.codecrew.moya.model.EventUser
;
...
...
@@ -167,6 +168,7 @@ public class UserView extends GenericCDIView {
userbean
.
saveCroppedImage
(
user
.
getUser
().
getCurrentImage
(),
croppedImage
.
getLeft
(),
croppedImage
.
getTop
(),
croppedImage
.
getWidth
(),
croppedImage
.
getHeight
());
user
=
userbean
.
getEventUser
(
newImage
.
getUser
());
}
catch
(
IOException
e
)
{
logger
.
info
(
"Error converting image"
,
e
);
...
...
@@ -318,6 +320,8 @@ public class UserView extends GenericCDIView {
if
(
readerView
.
getBarcode
()
!=
null
&&
!
readerView
.
getBarcode
().
isEmpty
())
{
card
.
setBarcode
(
readerView
.
getBarcode
());
card
.
setCardState
(
CardState
.
VALIDATED
);
logger
.
debug
(
"barcode {} to card {} "
,
readerView
.
getBarcode
(),
card
.
getUser
().
getNick
());
cardBean
.
saveCard
(
card
);
}
else
if
(
readerView
.
getReaderEvent
()
!=
null
)
{
...
...
code/MoyaWeb/src/fi/codecrew/moya/web/flow/IncomingView.java
View file @
33e9658
package
fi
.
codecrew
.
moya
.
web
.
flow
;
import
javax.ejb.EJB
;
import
javax.enterprise.context.ConversationScoped
;
import
javax.inject.Inject
;
import
javax.inject.Named
;
...
...
@@ -7,9 +8,16 @@ import javax.inject.Named;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
fi.codecrew.moya.beans.CardTemplateBeanLocal
;
import
fi.codecrew.moya.beans.PermissionBeanLocal
;
import
fi.codecrew.moya.beans.ReaderBeanLocal
;
import
fi.codecrew.moya.enums.CardState
;
import
fi.codecrew.moya.enums.apps.UserPermission
;
import
fi.codecrew.moya.model.EventUser
;
import
fi.codecrew.moya.model.PrintedCard
;
import
fi.codecrew.moya.web.annotations.SelectedUser
;
import
fi.codecrew.moya.web.cdiview.GenericCDIView
;
import
fi.codecrew.moya.web.cdiview.reader.ReaderNameContainer
;
import
fi.codecrew.moya.web.cdiview.reader.ReaderView
;
import
fi.codecrew.moya.web.cdiview.user.UserView
;
...
...
@@ -29,6 +37,17 @@ public class IncomingView extends GenericCDIView {
@Inject
private
ReaderView
readerView
;
@Inject
private
ReaderNameContainer
namecontainer
;
@EJB
private
CardTemplateBeanLocal
cardBean
;
@EJB
private
PermissionBeanLocal
permBean
;
public
void
initView
()
{
super
.
beginConversation
();
...
...
@@ -37,7 +56,10 @@ public class IncomingView extends GenericCDIView {
private
boolean
initialized
=
false
;
public
void
initPrintCardView
()
{
if
(!
permbean
.
hasPermission
(
UserPermission
.
MODIFY
)
||
namecontainer
.
getReaderId
()
==
null
||
namecontainer
.
getReaderId
()
<=
0
)
{
super
.
navihandler
.
redirectNavigation
(
"index.jsf"
);
}
if
(!
initialized
)
{
logger
.
debug
(
"INITIALIZING!!!!"
);
initializePoller
();
...
...
@@ -79,6 +101,7 @@ public class IncomingView extends GenericCDIView {
// still there, it must be "clean" barcode
if
(
userview
.
getUser
()
!=
null
)
{
userview
.
attachBarcodeToCard
();
}
}
...
...
@@ -99,5 +122,21 @@ public class IncomingView extends GenericCDIView {
//userview.prepareCardDownload();
return
"printCard"
;
}
public
String
printCard
()
{
PrintedCard
card
=
cardBean
.
checkPrintedCard
(
user
);
card
.
setCardState
(
CardState
.
VALIDATED
);
cardBean
.
saveCard
(
card
);
return
null
;
}
}
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