Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Riina Antikainen
/
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 f4550fa2
authored
Jun 01, 2015
by
Juho Juopperi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
stuff
1 parent
229aedbd
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
316 additions
and
3 deletions
code/moya-web/WebContent/WEB-INF/web.xml
code/moya-web/WebContent/useradmin/userCartShow.xhtml
code/moya-web/pom.xml
code/moya-web/src/main/java/fi/codecrew/moya/rest/RestApplicationEntrypoint.java
code/moya-web/src/main/java/fi/codecrew/moya/rest/placemap/v1/PlacemapRestViewV1.java
code/moya-web/src/main/java/fi/codecrew/moya/rest/v2/PojoFactoryV2.java
code/moya-web/src/main/java/fi/codecrew/moya/rest/v2/UserRestViewV2.java
code/moya-web/src/main/java/fi/codecrew/moya/rest/v2/pojo/UserPojo.java
code/moya-web/WebContent/WEB-INF/web.xml
View file @
f4550fa
...
...
@@ -63,6 +63,8 @@
<url-pattern>
*.jsf
</url-pattern>
</servlet-mapping>
<!-- <servlet> <servlet-name>ViewStatusMessages</servlet-name> <servlet-class>ch.qos.logback.classic.ViewStatusMessagesServlet
</servlet-class> </servlet> <servlet-mapping> <servlet-name>ViewStatusMessages</servlet-name>
<url-pattern>/logback</url-pattern> </servlet-mapping> -->
...
...
code/moya-web/WebContent/useradmin/userCartShow.xhtml
View file @
f4550fa
...
...
@@ -27,13 +27,24 @@
<h2>
Card
</h2>
<h:form>
<p:panelGrid
columns=
"2"
>
<h:outputText
value=
"#{i18n[
card.name
]}"
/>
<h:outputText
value=
"#{i18n[
'card.name'
]}"
/>
<h:outputText
value=
"#{userView.printedCard.template.name}"
/>
<h:outputText
value=
"#{i18n['printedCard.cardState']}"
/>
:
<h:outputText
value=
"#{userView.printedCard.cardState}"
/>
<p:commandButton
id=
"setPendingButton"
value=
"#{i18n['printedCard.setState.pending']}"
actionListener=
"#{userCartView.setPendingListener}"
/>
<p:commandButton
id=
"setRejectedButton"
value=
"#{i18n['printedCard.setState.rejected']}"
/>
<p:commandButton
id=
"setValidatedButton"
value=
"#{i18n['printedCard.setState.validated']}"
/>
<p:commandButton
id=
"setDeliveredButton"
value=
"#{i18n['printedCard.setState.delivered']}"
/>
<!--
<h:selectOneMenu value="#{userView.printedCard.cardState}">
<f:selectItems value="#{userView.printedCardStates}" />
</h:selectOneMenu>
<h:commandButton action="#{userView.setCardState()}" value="#{i18n['printedCard.setState']}" />
-->
</p:panelGrid>
...
...
code/moya-web/pom.xml
View file @
f4550fa
...
...
@@ -43,6 +43,18 @@
<artifactId>
moya-restpojo
</artifactId>
<version>
1.2-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
org.glassfish.jersey.media
</groupId>
<artifactId>
jersey-media-multipart
</artifactId>
<version>
2.16
</version>
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
org.glassfish.jersey.core
</groupId>
<artifactId>
jersey-server
</artifactId>
<version>
2.16
</version>
<scope>
provided
</scope>
</dependency>
</dependencies>
...
...
code/moya-web/src/main/java/fi/codecrew/moya/rest/RestApplicationEntrypoint.java
View file @
f4550fa
...
...
@@ -18,12 +18,23 @@
*/
package
fi
.
codecrew
.
moya
.
rest
;
import
org.glassfish.jersey.media.multipart.MultiPartFeature
;
import
org.glassfish.jersey.server.ResourceConfig
;
import
javax.servlet.annotation.MultipartConfig
;
import
javax.ws.rs.ApplicationPath
;
import
javax.ws.rs.core.Application
;
import
java.util.HashSet
;
import
java.util.Set
;
@ApplicationPath
(
RestApplicationEntrypoint
.
REST_PATH
)
public
class
RestApplicationEntrypoint
extends
Application
{
public
class
RestApplicationEntrypoint
extends
ResourceConfig
{
public
static
final
String
REST_PATH
=
"/rest"
;
public
RestApplicationEntrypoint
()
{
packages
(
"fi.codecrew.moya.rest"
);
register
(
MultiPartFeature
.
class
);
}
}
code/moya-web/src/main/java/fi/codecrew/moya/rest/placemap/v1/PlacemapRestViewV1.java
View file @
f4550fa
...
...
@@ -24,7 +24,7 @@ import org.slf4j.LoggerFactory;
import
fi.codecrew.moya.beans.PermissionBeanLocal
;
import
fi.codecrew.moya.beans.PlaceBeanLocal
;
import
fi.codecrew.moya.beans.QueueBeanLocal
;
import
fi.codecrew.moya.beans.
map.
QueueBeanLocal
;
import
fi.codecrew.moya.beans.UserBeanLocal
;
import
fi.codecrew.moya.model.EventMap
;
import
fi.codecrew.moya.model.EventUser
;
...
...
code/moya-web/src/main/java/fi/codecrew/moya/rest/v2/PojoFactoryV2.java
0 → 100644
View file @
f4550fa
package
fi
.
codecrew
.
moya
.
rest
.
v2
;
import
fi.codecrew.moya.enums.Gender
;
import
fi.codecrew.moya.model.EventUser
;
import
fi.codecrew.moya.model.User
;
import
fi.codecrew.moya.rest.v2.pojo.UserPojo
;
import
java.io.Serializable
;
/**
* Created by jkj on 2015-05-31.
*/
public
class
PojoFactoryV2
implements
Serializable
{
public
UserPojo
createUserPojo
(
EventUser
eventUser
)
{
User
user
=
eventUser
.
getUser
();
UserPojo
pojo
=
new
UserPojo
();
pojo
.
eventuserId
=
eventUser
.
getId
();
pojo
.
userId
=
user
.
getId
();
pojo
.
nick
=
user
.
getNick
();
pojo
.
login
=
user
.
getLogin
();
pojo
.
firstname
=
user
.
getFirstnames
();
pojo
.
lastname
=
user
.
getLastname
();
pojo
.
birthday
=
user
.
getBirthday
();
if
(
user
.
getGender
()
==
Gender
.
MALE
)
{
pojo
.
gender
=
UserPojo
.
UserGender
.
MALE
;
}
else
if
(
user
.
getGender
()
==
Gender
.
FEMALE
)
{
pojo
.
gender
=
UserPojo
.
UserGender
.
FEMALE
;
}
else
{
pojo
.
gender
=
UserPojo
.
UserGender
.
UNSPECIFIED
;
}
pojo
.
phoneNumber
=
user
.
getPhone
();
pojo
.
streetAddress
=
user
.
getAddress
();
pojo
.
zipCode
=
user
.
getZip
();
pojo
.
postOffice
=
user
.
getTown
();
return
pojo
;
}
}
code/moya-web/src/main/java/fi/codecrew/moya/rest/v2/UserRestViewV2.java
0 → 100644
View file @
f4550fa
package
fi
.
codecrew
.
moya
.
rest
.
v2
;
import
com.wordnik.swagger.annotations.Api
;
import
com.wordnik.swagger.annotations.ApiOperation
;
import
com.wordnik.swagger.annotations.ApiParam
;
import
fi.codecrew.moya.beans.EventBeanLocal
;
import
fi.codecrew.moya.beans.PermissionBeanLocal
;
import
fi.codecrew.moya.beans.UserBeanLocal
;
import
fi.codecrew.moya.enums.Gender
;
import
fi.codecrew.moya.enums.apps.UserPermission
;
import
fi.codecrew.moya.model.EventUser
;
import
fi.codecrew.moya.model.User
;
import
fi.codecrew.moya.model.UserImage
;
import
fi.codecrew.moya.rest.PojoUtils
;
import
fi.codecrew.moya.rest.pojo.userinfo.v1.EventUserRestPojo
;
import
fi.codecrew.moya.rest.v2.pojo.UserPojo
;
import
org.glassfish.jersey.media.multipart.FormDataBodyPart
;
import
org.glassfish.jersey.media.multipart.FormDataContentDisposition
;
import
org.glassfish.jersey.media.multipart.FormDataMultiPart
;
import
org.glassfish.jersey.media.multipart.FormDataParam
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
javax.ejb.EJB
;
import
javax.enterprise.context.RequestScoped
;
import
javax.inject.Inject
;
import
javax.servlet.ServletException
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.Part
;
import
javax.ws.rs.*
;
import
javax.ws.rs.core.Context
;
import
javax.ws.rs.core.MediaType
;
import
javax.ws.rs.core.Response
;
import
java.io.IOException
;
import
java.io.InputStream
;
@RequestScoped
@Path
(
"/v2/user"
)
@Api
(
value
=
"/v2/user"
,
description
=
"User operations"
)
public
class
UserRestViewV2
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
UserRestViewV2
.
class
);
@EJB
EventBeanLocal
eventBean
;
@EJB
PermissionBeanLocal
permissionBean
;
@EJB
UserBeanLocal
userBean
;
@Inject
PojoFactoryV2
pojoFactory
;
@GET
@Path
(
"/"
)
@Produces
(
MediaType
.
APPLICATION_JSON
)
@ApiOperation
(
value
=
"Find user"
,
response
=
UserPojo
.
class
)
public
Response
getEventUser
(
@QueryParam
(
"email"
)
@ApiParam
(
"Email address"
)
String
email
,
@QueryParam
(
"login"
)
@ApiParam
(
"Username"
)
String
userName
)
{
try
{
if
(
permissionBean
.
hasPermission
(
UserPermission
.
VIEW_ALL
)
==
false
)
{
return
Response
.
status
(
Response
.
Status
.
FORBIDDEN
).
build
();
}
// If username not given, try to find username by email
if
(
userName
==
null
||
userName
.
isEmpty
())
{
userName
=
userBean
.
findUsernameByEmailUsername
(
email
);
}
// Get the user
EventUser
eventUser
=
userBean
.
findEventuserByLogin
(
userName
);
if
(
eventUser
==
null
)
{
return
Response
.
status
(
Response
.
Status
.
NOT_FOUND
).
build
();
}
// Return the EventUser
return
Response
.
ok
(
pojoFactory
.
createUserPojo
(
eventUser
)).
build
();
}
catch
(
Exception
e
)
{
logger
.
error
(
"Finding event user failed"
,
e
);
return
Response
.
serverError
().
build
();
}
}
@POST
@Path
(
"/create"
)
@Produces
({
MediaType
.
APPLICATION_JSON
})
@Consumes
(
MediaType
.
APPLICATION_JSON
)
@ApiOperation
(
value
=
"Create user"
,
response
=
UserPojo
.
class
)
public
Response
createUser
(
UserPojo
userPojo
)
{
if
(
permissionBean
.
hasPermission
(
UserPermission
.
CREATE_NEW
)
==
false
)
{
return
Response
.
status
(
Response
.
Status
.
FORBIDDEN
).
build
();
}
try
{
EventUser
eventUser
=
new
EventUser
(
new
User
(),
eventBean
.
getCurrentEvent
(),
permissionBean
.
getCurrentUser
());
eventUser
.
setNick
(
userPojo
.
nick
);
eventUser
.
setLogin
(
userPojo
.
login
);
eventUser
.
setFirstnames
(
userPojo
.
firstname
);
eventUser
.
setLastname
(
userPojo
.
lastname
);
eventUser
.
setBirthday
(
userPojo
.
birthday
);
if
(
userPojo
.
gender
==
UserPojo
.
UserGender
.
MALE
)
{
eventUser
.
setGender
(
Gender
.
MALE
);
}
else
if
(
userPojo
.
gender
==
UserPojo
.
UserGender
.
FEMALE
)
{
eventUser
.
setGender
(
Gender
.
FEMALE
);
}
else
{
eventUser
.
setGender
(
Gender
.
UNDEFINED
);
}
eventUser
.
setPhone
(
userPojo
.
phoneNumber
);
eventUser
.
setAddress
(
userPojo
.
streetAddress
);
eventUser
.
setZip
(
userPojo
.
zipCode
);
eventUser
.
setTown
(
userPojo
.
postOffice
);
userBean
.
createNewUser
(
eventUser
,
null
);
return
Response
.
ok
(
pojoFactory
.
createUserPojo
(
eventUser
)).
build
();
}
catch
(
Exception
e
)
{
logger
.
error
(
"Creating user failed"
,
e
);
return
Response
.
serverError
().
entity
(
PojoUtils
.
initErrorPojo
(
e
.
getMessage
())).
build
();
}
}
/**
* Post forma parameter "image" with the image data in it.
* @param request
* @param userId
* @return
* @throws IOException
*/
@PUT
@Path
(
"/{userid}/image"
)
@ApiOperation
(
value
=
"Upload image"
,
response
=
EventUserRestPojo
.
class
)
@Consumes
(
MediaType
.
MULTIPART_FORM_DATA
)
public
Response
updateUserImage
(
@Context
HttpServletRequest
request
,
@PathParam
(
"userid"
)
@ApiParam
(
"User ID"
)
Integer
userId
,
@FormDataParam
(
"image"
)
FormDataContentDisposition
imageInfo
,
@FormDataParam
(
"image"
)
InputStream
imageStream
)
{
logger
.
info
(
"Starting to upload new user image for user {}"
,
userId
);
try
{
if
(
permissionBean
.
hasPermission
(
UserPermission
.
MODIFY
)
==
false
||
permissionBean
.
hasPermission
(
UserPermission
.
VIEW_ALL
)
==
false
)
{
return
Response
.
status
(
Response
.
Status
.
FORBIDDEN
).
build
();
}
EventUser
eventUser
=
userBean
.
findByUserId
(
userId
,
true
);
userBean
.
uploadImage
(
eventUser
,
imageInfo
.
getType
(),
imageStream
,
imageInfo
.
getFileName
(),
null
);
logger
.
info
(
"Image uploaded"
);
return
Response
.
ok
(
pojoFactory
.
createUserPojo
(
eventUser
)).
build
();
}
catch
(
Exception
e
)
{
logger
.
error
(
"Image upload failed"
,
e
);
return
Response
.
serverError
().
entity
(
PojoUtils
.
initErrorPojo
(
"Image upload failed"
)).
build
();
}
}
/**
* Get user image
* @param userId
* @return
*/
@GET
@Path
(
"/{userid}/image"
)
@ApiOperation
(
value
=
"Download user image"
)
@Consumes
(
MediaType
.
MULTIPART_FORM_DATA
)
@Produces
({
MediaType
.
APPLICATION_JSON
,
"image/png"
,
"image/jpeg"
})
public
Response
downloadUserImage
(
@PathParam
(
"userid"
)
@ApiParam
(
"User ID"
)
Integer
userId
)
{
try
{
User
user
=
userBean
.
getUser
(
userId
);
UserImage
image
=
user
.
getCurrentImage
();
return
Response
.
ok
(
image
.
getImageData
(),
image
.
getMimeType
()).
build
();
}
catch
(
Exception
e
)
{
logger
.
error
(
"Getting image failed"
,
e
);
return
Response
.
serverError
().
entity
(
PojoUtils
.
initErrorPojo
(
e
.
getMessage
())).
build
();
}
}
@POST
@Path
(
"/{userid}/check-password"
)
@Produces
(
MediaType
.
APPLICATION_JSON
)
@Consumes
(
MediaType
.
APPLICATION_FORM_URLENCODED
)
@ApiOperation
(
value
=
"Check user password"
,
response
=
UserPojo
.
class
)
public
Response
checkPassword
(
@PathParam
(
"userid"
)
@ApiParam
(
"User ID"
)
Integer
userId
,
@FormParam
(
"password"
)
@ApiParam
(
"Password"
)
String
password
)
{
try
{
if
(
permissionBean
.
hasPermission
(
UserPermission
.
VIEW_ALL
)
==
false
)
{
return
Response
.
status
(
Response
.
Status
.
FORBIDDEN
).
build
();
}
EventUser
user
=
userBean
.
findByUserId
(
userId
,
true
);
if
(
user
==
null
)
{
return
Response
.
status
(
Response
.
Status
.
NOT_FOUND
).
build
();
}
//boolean passwordOk = user.checkPassword(password);
boolean
passwordOk
=
userBean
.
checkPassword
(
user
,
password
);
if
(
passwordOk
)
{
return
Response
.
ok
(
pojoFactory
.
createUserPojo
(
user
),
MediaType
.
APPLICATION_JSON_TYPE
).
build
();
}
return
Response
.
status
(
Response
.
Status
.
UNAUTHORIZED
).
entity
(
PojoUtils
.
initErrorPojo
(
"Wrong password"
)).
build
();
}
catch
(
Exception
e
)
{
logger
.
error
(
"Checking user authentication failed"
,
e
);
return
Response
.
serverError
().
entity
(
PojoUtils
.
initErrorPojo
(
"Checking password failed"
)).
build
();
}
}
}
code/moya-web/src/main/java/fi/codecrew/moya/rest/v2/pojo/UserPojo.java
0 → 100644
View file @
f4550fa
package
fi
.
codecrew
.
moya
.
rest
.
v2
.
pojo
;
import
javax.xml.bind.annotation.XmlRootElement
;
import
java.util.Date
;
/**
* Created by jkj on 2015-05-31.
*/
@XmlRootElement
public
class
UserPojo
{
public
enum
UserGender
{
MALE
,
FEMALE
,
UNSPECIFIED
}
public
String
nick
=
""
;
public
String
login
=
""
;
public
Integer
eventuserId
=
0
;
public
Integer
userId
=
0
;
public
String
firstname
=
""
;
public
String
lastname
=
""
;
// foo..
public
Date
birthday
;
public
UserGender
gender
;
public
String
phoneNumber
;
// address info
public
String
streetAddress
;
public
String
zipCode
;
public
String
postOffice
;
}
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