diff --git a/generators/bootstrap/index.js b/generators/bootstrap/index.js index 0f5cdeed7c4..4dd081079ca 100644 --- a/generators/bootstrap/index.js +++ b/generators/bootstrap/index.js @@ -237,12 +237,28 @@ module.exports = class extends BaseGenerator { fieldTranslationKey: 'global.field.id', fieldNameHumanized: 'ID', id: true, + builtIn: true, }); if (!user.fields.some(field => field.fieldName === 'login')) { user.fields.push({ fieldName: 'login', fieldType: TYPE_STRING, + builtIn: true, + }); + } + + if (!user.fields.some(field => field.fieldName === 'firstName')) { + user.fields.push({ + fieldName: 'firstName', + fieldType: TYPE_STRING, + }); + } + + if (!user.fields.some(field => field.fieldName === 'lastName')) { + user.fields.push({ + fieldName: 'lastName', + fieldType: TYPE_STRING, }); } diff --git a/generators/client/templates/angular/src/main/webapp/app/entities/user/user.model.ts.ejs b/generators/client/templates/angular/src/main/webapp/app/entities/user/user.model.ts.ejs index 0ab015a89c2..d5799b434cc 100644 --- a/generators/client/templates/angular/src/main/webapp/app/entities/user/user.model.ts.ejs +++ b/generators/client/templates/angular/src/main/webapp/app/entities/user/user.model.ts.ejs @@ -22,12 +22,18 @@ _%> export interface IUser { id?: <%= idType %>; login?: string; + <%_ for (field of user.fields.filter(field => !field.builtIn && field.relatedByOtherEntity)) { _%> + <%= field.fieldName %>?: string; + <%_ } _%> } export class User implements IUser { constructor( public id: <%= idType %>, public login: string, +<%_ for (field of user.fields.filter(field => !field.builtIn && field.relatedByOtherEntity)) { _%> + public <%= field.fieldName %>?: string, +<%_ } _%> ) {} } diff --git a/generators/server/templates/src/main/java/package/service/dto/UserDTO.java.ejs b/generators/server/templates/src/main/java/package/service/dto/UserDTO.java.ejs index a5b4a50feaa..11f60855235 100644 --- a/generators/server/templates/src/main/java/package/service/dto/UserDTO.java.ejs +++ b/generators/server/templates/src/main/java/package/service/dto/UserDTO.java.ejs @@ -35,6 +35,10 @@ public class <%= asDto('User') %> { private String login; +<%_ for (field of user.fields.filter(field => !field.builtIn && field.relatedByOtherEntity)) { _%> + private String <%= field.fieldName %>; +<%_ } _%> + <%_ if (databaseType !== 'no') { _%> public <%= asDto('User') %>() { // Empty constructor needed for Jackson. @@ -42,8 +46,11 @@ public class <%= asDto('User') %> { public <%= asDto('User') %>(<%= asEntity('User') %> user) { this.id = user.getId(); - // Customize it here if you need firstName/lastName/etc + // Customize it here if you need, or not, firstName/lastName/etc this.login = user.getLogin(); +<%_ for (field of user.fields.filter(field => !field.builtIn && field.relatedByOtherEntity)) { _%> + this.<%= field.fieldName %> = user.get<%= javaBeanCase(field.fieldName) %>(); +<%_ } _%> } <%_ } _%> @@ -63,12 +70,24 @@ public class <%= asDto('User') %> { this.login = login; } +<%_ for (field of user.fields.filter(field => !field.builtIn && field.relatedByOtherEntity)) { _%> + public String get<%= javaBeanCase(field.fieldName) %>() { + return <%= field.fieldName %>; + } + public void set<%= javaBeanCase(field.fieldName) %>(String <%= field.fieldName %>) { + this.<%= field.fieldName %> = <%= field.fieldName %>; + } +<%_ } _%> + // prettier-ignore @Override public String toString() { return "<%= asDto('User') %>{" + "id='" + id + '\'' + ", login='" + login + '\'' + +<%_ for (field of user.fields.filter(field => !field.builtIn && field.relatedByOtherEntity)) { _%> + ", <%= field.fieldName %>='" + <%= field.fieldName %> + '\'' + +<%_ } _%> "}"; } diff --git a/generators/server/templates/src/test/java/package/web/rest/PublicUserResourceIT.java.ejs b/generators/server/templates/src/test/java/package/web/rest/PublicUserResourceIT.java.ejs index fb7d60ffd9d..0137d124ea3 100644 --- a/generators/server/templates/src/test/java/package/web/rest/PublicUserResourceIT.java.ejs +++ b/generators/server/templates/src/test/java/package/web/rest/PublicUserResourceIT.java.ejs @@ -113,6 +113,11 @@ class PublicUserResourceIT <% if (databaseType === 'cassandra') { %>extends Abst private static final String DEFAULT_LOGIN = "johndoe"; +<%_ const DEFAULT_USER = {firstName: 'john', lastName: 'doe'}; _%> +<%_ for (field of user.fields.filter(field => !field.builtIn && field.relatedByOtherEntity)) { _%> + private static final String DEFAULT_<%= field.fieldName.toUpperCase() %> = "<%= DEFAULT_USER [field.fieldName] %>"; +<%_ } _%> + @Autowired private UserRepository userRepository; <%_ if (searchEngine === 'elasticsearch') { _%> @@ -180,6 +185,9 @@ class PublicUserResourceIT <% if (databaseType === 'cassandra') { %>extends Abst .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON_VALUE)) .andExpect(jsonPath("$.[*].login").value(hasItem(DEFAULT_LOGIN))) +<%_ for (field of user.fields.filter(field => !field.builtIn && field.relatedByOtherEntity)) { _%> + .andExpect(jsonPath("$.[*].<%= field.fieldName %>").value(hasItem(DEFAULT_<%= field.fieldName.toUpperCase() %>))) +<%_ } _%> .andExpect(jsonPath("$.[*].email").doesNotExist()) <%_ if (databaseType !== 'cassandra') { _%> .andExpect(jsonPath("$.[*].imageUrl").doesNotExist()) @@ -194,6 +202,9 @@ class PublicUserResourceIT <% if (databaseType === 'cassandra') { %>extends Abst .returnResult(<%= asDto('User') %>.class).getResponseBody().blockFirst(); assertThat(foundUser.getLogin()).isEqualTo(DEFAULT_LOGIN); +<%_ for (field of user.fields.filter(field => !field.builtIn && field.relatedByOtherEntity)) { _%> + assertThat(foundUser.get<%= javaBeanCase(field.fieldName) %>()).isEqualTo(DEFAULT_<%= field.fieldName.toUpperCase() %>); +<%_ } _%> <% } _%> } diff --git a/utils/relationship.js b/utils/relationship.js index e6462d00793..1aa1d767ba2 100644 --- a/utils/relationship.js +++ b/utils/relationship.js @@ -126,6 +126,7 @@ function prepareRelationshipForTemplates(entityWithConfig, relationship, generat } if (relationship.relatedField) { relationship.otherEntityFieldCapitalized = relationship.relatedField.fieldNameCapitalized; + relationship.relatedField.relatedByOtherEntity = true; } else { relationship.otherEntityFieldCapitalized = _.upperFirst(relationship.otherEntityField); }