Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Move user dto to api
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Eng committed Dec 15, 2015
1 parent 28fddb0 commit 5755898
Show file tree
Hide file tree
Showing 16 changed files with 112 additions and 222 deletions.
4 changes: 2 additions & 2 deletions frontend/src/main/web/index.html
Expand Up @@ -33,8 +33,8 @@

<main role="main">
<div id="main-content" base-url="http://localhost:3000/lib/stores/testData"
user='{"username": "test-user", "email":"zanata@zanata.org", "name": "admin-name", "loggedIn": "true", "imageUrl":"//www.gravatar.com/avatar/dda6e90e3f2a615fb8b31205e8b4894b?d=mm&r=g&s=115", "languageTeams": "English, French, German, Yodish (Yoda English)"}'
data='{"permission":{"updateGlossary":true, "insertGlossary":true, "deleteGlossary":true}, "dev": "true", "profileUser" : {"username": "test-user", "email":"zanata@zanata.org", "name":"admin-name","loggedIn":"true","imageUrl":"//www.gravatar.com/avatar/dda6e90e3f2a615fb8b31205e8b4894b?d=mm&r=g&s=115","languageTeams":"English, French, German, Yodish (Yoda English)"}}'>
user='{"username": "test-user", "email":"zanata@zanata.org", "name": "admin-name", "loggedIn": "true", "imageUrl":"//www.gravatar.com/avatar/dda6e90e3f2a615fb8b31205e8b4894b?d=mm&r=g&s=115", "languageTeams": ["English, French, German, Yodish (Yoda English)"]}'
data='{"permission":{"updateGlossary":true, "insertGlossary":true, "deleteGlossary":true}, "dev": "true", "profileUser" : {"username": "test-user", "email":"zanata@zanata.org", "name":"admin-name","loggedIn":"true","imageUrl":"//www.gravatar.com/avatar/dda6e90e3f2a615fb8b31205e8b4894b?d=mm&r=g&s=115","languageTeams":["English, French, German, Yodish (Yoda English)"]}}'>
</div>

</main>
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/main/web/lib/components/UserProfile.jsx
Expand Up @@ -56,7 +56,7 @@ var UserProfile = React.createClass({
username = user.username;
imageUrl = user.imageUrl;
name = user.name;
languageTeams = user.languageTeams;
languageTeams = user.languageTeams.join();
}

return (
Expand Down
17 changes: 15 additions & 2 deletions zanata-war/src/main/java/org/zanata/action/GlossaryAction.java
@@ -1,19 +1,22 @@
package org.zanata.action;

import lombok.extern.slf4j.Slf4j;

import org.codehaus.jackson.map.ObjectMapper;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.zanata.model.HAccount;
import org.zanata.rest.editor.dto.Permission;
import org.zanata.rest.editor.dto.User;
import org.zanata.rest.dto.User;
import org.zanata.rest.editor.service.UserService;
import org.zanata.seam.security.ZanataJpaIdentityStore;
import org.zanata.security.ZanataIdentity;
import org.zanata.security.annotations.CheckLoggedIn;
import org.zanata.security.annotations.ZanataSecured;

import java.io.IOException;
import java.io.Serializable;


Expand All @@ -38,7 +41,7 @@ public class GlossaryAction implements Serializable {

public User getUser() {
if (user == null) {
user = userService.transferToUser(authenticatedAccount);
user = userService.transferToUser(authenticatedAccount, true);
}
return user;
}
Expand All @@ -61,4 +64,14 @@ public Permission getUserPermission() {

return permission;
}

public String convertToJSON(User user) {
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.writeValueAsString(user);
} catch (IOException e) {
return this.getClass().getName() + "@"
+ Integer.toHexString(this.hashCode());
}
}
}
18 changes: 15 additions & 3 deletions zanata-war/src/main/java/org/zanata/action/ProfileHome.java
Expand Up @@ -20,18 +20,20 @@
*/
package org.zanata.action;

import java.io.IOException;
import java.io.Serializable;

import javax.faces.application.FacesMessage;

import lombok.Getter;
import lombok.extern.slf4j.Slf4j;

import org.codehaus.jackson.map.ObjectMapper;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.zanata.rest.editor.dto.User;
import org.zanata.rest.dto.User;
import org.zanata.rest.editor.service.UserService;
import org.zanata.seam.security.ZanataJpaIdentityStore;
import org.zanata.dao.AccountDAO;
Expand Down Expand Up @@ -91,7 +93,7 @@ private void init() {
return;
}
}
user = userService.transferToUser(account);
user = userService.transferToUser(account, true);
}

private HAccount useAuthenticatedAccount() {
Expand All @@ -109,7 +111,7 @@ public User getAuthenticatedUser() {
if(authenticatedAccount == null) {
return authenticatedUser;
}
return userService.transferToUser(authenticatedAccount);
return userService.transferToUser(authenticatedAccount, true);
}

public String getUsername() {
Expand All @@ -124,4 +126,14 @@ public void setUsername(String username) {
this.username = username;
init();
}

public String convertToJSON(User user) {
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.writeValueAsString(user);
} catch (IOException e) {
return this.getClass().getName() + "@"
+ Integer.toHexString(this.hashCode());
}
}
}
Expand Up @@ -42,6 +42,7 @@
import org.zanata.common.LocaleId;
import org.zanata.common.TransUnitCount;
import org.zanata.common.TransUnitWords;
import org.zanata.model.HAccount;
import org.zanata.model.HIterationGroup;
import org.zanata.model.HProject;
import org.zanata.model.HProjectIteration;
Expand Down Expand Up @@ -523,10 +524,10 @@ public List<HProjectIteration> searchByProjectIdExcludingStatus(
return q.list();
}

public List<String> getContributors(String projectSlug, String versionSlug,
public List<HAccount> getContributors(String projectSlug, String versionSlug,
DateRange dataRange) {
String query =
"select account.username from HAccount account where account.id in " +
"select account from HAccount account where account.id in " +
"(select tft.translator.account.id from HTextFlowTarget tft " +
"where tft.textFlow.document.projectIteration.slug = :versionSlug " +
"and tft.textFlow.document.projectIteration.project.slug =:projectSlug and tft.lastChanged between :fromDate and :toDate) " +
Expand Down
65 changes: 0 additions & 65 deletions zanata-war/src/main/java/org/zanata/rest/editor/dto/User.java

This file was deleted.

@@ -1,28 +1,26 @@
package org.zanata.rest.editor.service;

import java.util.Set;
import java.util.List;
import java.util.stream.Collectors;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;

import org.apache.commons.lang.StringUtils;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Transactional;
import org.zanata.rest.dto.User;
import org.zanata.seam.security.ZanataJpaIdentityStore;
import org.zanata.dao.AccountDAO;
import org.zanata.dao.PersonDAO;
import org.zanata.model.HAccount;
import org.zanata.model.HLocale;
import org.zanata.model.HPerson;
import org.zanata.rest.editor.dto.User;
import org.zanata.rest.editor.service.resource.UserResource;
import org.zanata.security.annotations.CheckLoggedIn;
import org.zanata.security.annotations.ZanataSecured;
import org.zanata.service.GravatarService;

import com.google.common.base.Function;
import com.google.common.base.Joiner;
import com.google.common.collect.Collections2;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
Expand Down Expand Up @@ -56,7 +54,8 @@ public Response getMyInfo() {
if(authenticatedAccount == null) {
return Response.status(Response.Status.NOT_FOUND).build();
}
User user = transferToUser(authenticatedAccount);
User user = transferToUser(authenticatedAccount, true);
user.setLoggedIn(true);
return Response.ok(user).build();
}

Expand All @@ -78,11 +77,11 @@ public User generateUser(String username) {
if(account == null) {
return null;
}
return transferToUser(account);
return transferToUser(account, true);
}

@Override
public User transferToUser(HAccount account) {
public User transferToUser(HAccount account, boolean includeEmail) {
if(account == null) {
return new User();
}
Expand All @@ -94,24 +93,15 @@ public User transferToUser(HAccount account) {
String userImageUrl = gravatarServiceImpl
.getUserImageUrl(GravatarService.USER_IMAGE_SIZE, email);

String userLanguageTeams =
getUserLanguageTeams(person.getLanguageMemberships());
List<String> userLanguageTeams =
person.getLanguageMemberships().stream()
.map(HLocale::retrieveDisplayName)
.collect(Collectors.toList());

if(!includeEmail) {
email = null;
}
return new User(account.getUsername(), email, person.getName(),
gravatarServiceImpl.getGravatarHash(email), userImageUrl,
userLanguageTeams, true);
}

private String getUserLanguageTeams(Set<HLocale> languageMemberships) {
return Joiner.on(", ").skipNulls().join(
Collections2.transform(languageMemberships, languageNameFn));
userImageUrl, userLanguageTeams, false);
}

private final Function<HLocale, String> languageNameFn =
new Function<HLocale, String>() {
@Override
public String apply(HLocale locale) {
return locale.retrieveDisplayName();
}
};
}
@@ -1,6 +1,5 @@
package org.zanata.rest.editor.service.resource;

import javax.annotation.Nonnull;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
Expand All @@ -10,8 +9,8 @@
import javax.ws.rs.core.Response;

import org.zanata.model.HAccount;
import org.zanata.rest.dto.User;
import org.zanata.rest.editor.MediaTypes;
import org.zanata.rest.editor.dto.User;

/**
* @author Alex Eng <a href="mailto:aeng@redhat.com">aeng@redhat.com</a>
Expand Down Expand Up @@ -56,16 +55,16 @@ public interface UserResource {
public Response getUserInfo(@PathParam("username") String username);

/**
* Generate {@link org.zanata.rest.editor.dto.User} object from username
* Generate {@link org.zanata.rest.dto.User} object from username
*
* @param username
*/
public User generateUser(String username);

/**
* Generate {@link org.zanata.rest.editor.dto.User} object from HAccount
* Generate {@link org.zanata.rest.dto.User} object from HAccount
*
* @param username
*/
public User transferToUser(HAccount account);
public User transferToUser(HAccount account, boolean includeEmail);
}
Expand Up @@ -33,6 +33,7 @@
import org.zanata.dao.ProjectDAO;
import org.zanata.dao.ProjectIterationDAO;
import org.zanata.dao.TextFlowDAO;
import org.zanata.model.HAccount;
import org.zanata.model.HDocument;
import org.zanata.model.HLocale;
import org.zanata.model.HProject;
Expand All @@ -43,8 +44,10 @@
import org.zanata.rest.dto.LocaleDetails;
import org.zanata.rest.dto.ProjectIteration;
import org.zanata.rest.dto.TransUnitStatus;
import org.zanata.rest.dto.User;
import org.zanata.rest.dto.resource.ResourceMeta;
import org.zanata.rest.editor.dto.Locale;
import org.zanata.rest.editor.service.UserService;
import org.zanata.search.FilterConstraints;
import org.zanata.security.ZanataIdentity;
import org.zanata.service.ConfigurationService;
Expand Down Expand Up @@ -98,6 +101,9 @@ public class ProjectVersionService implements ProjectVersionResource {
@In
private ZanataIdentity identity;

@In(value = "editor.userService", create = true)
private UserService userService;

@Context
private UriInfo uri;

Expand Down Expand Up @@ -246,12 +252,18 @@ public Response getContributors(
@PathParam("dateRange") String dateRange) {

DateRange dateRangeObject = DateRange.from(dateRange);
List<String> usernameList = projectIterationDAO.getContributors(
List<HAccount> accountList = projectIterationDAO.getContributors(
projectSlug, versionSlug, dateRangeObject);

Type genericType = new GenericType<List<String>>() {
List<User> userList = Lists.newArrayList();
userList.addAll(accountList.stream()
.map(account -> userService.transferToUser(account, false))
.collect(Collectors.toList()));


Type genericType = new GenericType<List<User>>() {
}.getGenericType();
Object entity = new GenericEntity<>(usernameList, genericType);
Object entity = new GenericEntity<>(userList, genericType);
return Response.ok(entity).build();
}

Expand Down
2 changes: 1 addition & 1 deletion zanata-war/src/main/webapp/glossary/view.xhtml
Expand Up @@ -11,7 +11,7 @@

<div id="main-content"
base-url="#{request.contextPath}/rest"
user="#{glossaryAction.user.getJSON()}"
user="#{glossaryAction.convertToJSON(glossaryAction.user)}"
data='{"view": "glossary", "permission": #{glossaryAction.userPermission.getJSON()}}'/>

<script type="text/javascript"
Expand Down

0 comments on commit 5755898

Please sign in to comment.