Skip to content
This repository has been archived by the owner on Jul 29, 2021. It is now read-only.

Commit

Permalink
feat(groups): move api/app groups to user groups
Browse files Browse the repository at this point in the history
  • Loading branch information
graviteeio authored and brasseld committed Sep 7, 2017
1 parent 0f13e06 commit 2541011
Show file tree
Hide file tree
Showing 13 changed files with 74 additions and 55 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Expand Up @@ -32,12 +32,12 @@
<name>Gravitee.io APIM - Repository - MongoDB</name>

<properties>
<gravitee-repository.version>1.8.1</gravitee-repository.version>
<gravitee-repository.version>1.9.0-SNAPSHOT</gravitee-repository.version>
<gravitee-repository-test.version>1.9.0-SNAPSHOT</gravitee-repository-test.version>
<embed.mongo.version>1.50.5</embed.mongo.version>
<mongo.version>3.4.2</mongo.version>
<spring.data.mongodb.version>1.7.2.RELEASE</spring.data.mongodb.version>
<dozer.version>5.4.0</dozer.version>
<gravitee-repository-test.version>1.8.1</gravitee-repository-test.version>
<maven-dependency-plugin.version>2.10</maven-dependency-plugin.version>
</properties>

Expand Down
Expand Up @@ -93,7 +93,7 @@ public Api update(Api api) throws TechnicalException {
apiMongo.setVersion(api.getVersion());
apiMongo.setDeployedAt(api.getDeployedAt());
apiMongo.setPicture(api.getPicture());
apiMongo.setGroup(api.getGroup());
apiMongo.setGroups(api.getGroups());
apiMongo.setViews(api.getViews());
apiMongo.setLabels(api.getLabels());

Expand Down
Expand Up @@ -70,7 +70,7 @@ public Application update(Application application) throws TechnicalException {
applicationMongo.setDescription(application.getDescription());
applicationMongo.setUpdatedAt(application.getUpdatedAt());
applicationMongo.setType(application.getType());
applicationMongo.setGroup(application.getGroup());
applicationMongo.setGroups(application.getGroups());
applicationMongo.setStatus(application.getStatus().toString());

ApplicationMongo applicationMongoUpdated = internalApplicationRepo.save(applicationMongo);
Expand Down
Expand Up @@ -51,6 +51,14 @@ public Optional<Group> findById(String s) throws TechnicalException {
return Optional.ofNullable(group);
}

@Override
public Set<Group> findByIds(Set<String> ids) throws TechnicalException {
logger.debug("Find groups by ids");
Set<Group> groups = collection2set(internalRepository.findByIds(ids));
logger.debug("Find groups by ids - Found {}", groups);
return groups;
}

@Override
public Group create(Group group) throws TechnicalException {
logger.debug("Create group [{}]", group.getName());
Expand Down Expand Up @@ -88,14 +96,6 @@ public Set<Group> findAll() throws TechnicalException {
return all;
}

@Override
public Set<Group> findByType(Group.Type type) throws TechnicalException {
logger.debug("Find group by type [{}]", type);
Set<Group> groups = collection2set(internalRepository.findByType(type.name()));
logger.debug("Find group by type [{}] - Found {}.", type, groups.size());
return groups;
}

private GroupMongo map(Group group) {
return mapper.map(group, GroupMongo.class);
}
Expand Down
Expand Up @@ -30,9 +30,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;


Expand Down Expand Up @@ -85,6 +83,19 @@ public Optional<Membership> findById(String userId, MembershipReferenceType refe
return Optional.ofNullable(map(membershipMongo));
}

@Override
public Set<Membership> findByIds(String userId, MembershipReferenceType referenceType, Set<String> referenceIds) throws TechnicalException {
logger.debug("Find membership by IDs [{}, {}, {}]", userId, referenceType, referenceIds);

Set<Membership> memberships = internalMembershipRepo.findByIds(userId, referenceType.name(), referenceIds).
stream().
map(this::map).
collect(Collectors.toSet());

logger.debug("Find membership by IDs [{}, {}, {}]", userId, referenceType, referenceIds);
return memberships;
}

@Override
public Set<Membership> findByReferenceAndRole(MembershipReferenceType referenceType, String referenceId, RoleScope roleScope, String roleName) throws TechnicalException {
logger.debug("Find membership by reference [{}, {}]", referenceType, referenceId);
Expand Down Expand Up @@ -146,10 +157,13 @@ private Membership map(MembershipMongo membershipMongo) {
membership.setUserId(membershipMongo.getId().getUserId());
membership.setReferenceType(MembershipReferenceType.valueOf(membershipMongo.getId().getReferenceType()));
membership.setReferenceId(membershipMongo.getId().getReferenceId());
String[] role = convertTypeToRole(membershipMongo.getType());
if (role != null) {
membership.setRoleScope(Integer.valueOf(role[0]));
membership.setRoleName(role[1]);
if (membershipMongo.getRoles() != null) {
Map<Integer, String> roles = new HashMap<>(membershipMongo.getRoles().size());
for (String roleAsString : membershipMongo.getRoles()) {
String[] role = convertTypeToRole(roleAsString);
roles.put(Integer.valueOf(role[0]), role[1]);
}
membership.setRoles(roles);
}
membership.setCreatedAt(membershipMongo.getCreatedAt());
membership.setUpdatedAt(membershipMongo.getUpdatedAt());
Expand All @@ -162,7 +176,13 @@ private MembershipMongo map(Membership membership) {
}
MembershipMongo membershipMongo = new MembershipMongo();
membershipMongo.setId(mapPk(membership));
membershipMongo.setType(convertRoleToType(membership.getRoleScope(), membership.getRoleName()));
if (membership.getRoles() != null) {
List<String> roles = new ArrayList<>(membership.getRoles().size());
for (Map.Entry<Integer, String> roleEntry : membership.getRoles().entrySet()) {
roles.add(convertRoleToType(roleEntry.getKey(), roleEntry.getValue()));
}
membershipMongo.setRoles(roles);
}
membershipMongo.setCreatedAt(membership.getCreatedAt());
membershipMongo.setUpdatedAt(membership.getUpdatedAt());
return membershipMongo;
Expand Down
Expand Up @@ -36,7 +36,7 @@ public interface ApiMongoRepository extends MongoRepository<ApiMongo, String> {
@Query("{ _id: {$in: ?0} }")
Set<ApiMongo> findByIds(List<String> ids);

@Query("{ group: {$in: ?0} }")
@Query("{ groups: {$in: ?0} }")
Set<ApiMongo> findByGroups(List<String> groupIds);

}
Expand Down
Expand Up @@ -35,10 +35,10 @@ public interface ApplicationMongoRepository extends MongoRepository<ApplicationM
@Query("{ _id: {$in: ?0} }")
Set<ApplicationMongo> findByIds(List<String> ids);

@Query("{ group: {$in: ?0} }")
@Query("{ groups: {$in: ?0} }")
Set<ApplicationMongo> findByGroups(List<String> ids);

@Query("{ group: {$in: ?0}, status: {$in: ?1} }")
@Query("{ groups: {$in: ?0}, status: {$in: ?1} }")
Set<ApplicationMongo> findByGroups(List<String> ids, List<ApplicationStatus> statuses);

@Query("{ name: { $regex: ?0, $options: 'i'}}")
Expand Down
Expand Up @@ -21,6 +21,7 @@
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.Set;

/**
* @author Nicolas GERAUD (nicolas.geraud at graviteesource.com)
Expand All @@ -29,7 +30,7 @@
@Repository
public interface GroupMongoRepository extends MongoRepository<GroupMongo, String> {

@Query("{ 'type' : ?0}")
Collection<GroupMongo> findByType(String type);
@Query("{ _id: {$in: ?0} }")
Collection<GroupMongo> findByIds(Set<String> ids);

}
Expand Up @@ -31,21 +31,24 @@
@Repository
public interface MembershipMongoRepository extends MongoRepository<MembershipMongo, MembershipPkMongo> {

@Query("{ 'id.userId': ?0, 'id.referenceType': ?1, 'id.referenceId': {$in: ?2} }")
Set<MembershipMongo> findByIds(String userId, String referenceType, Set<String> referenceIds);

@Query("{ 'id.referenceType' : ?0, 'id.referenceId' : ?1 }")
Set<MembershipMongo> findByReference(String referenceType, String referenceId);

@Query("{ 'id.referenceType' : ?0, 'id.referenceId' : ?1, 'type' : ?2 }")
@Query("{ 'id.referenceType' : ?0, 'id.referenceId' : ?1, 'roles' : ?2 }")
Set<MembershipMongo> findByReferenceAndMembershipType(String referenceType, String referenceId, String membershipType);

@Query("{ 'id.referenceType' : ?0, 'id.referenceId' : { $in : ?1 } }")
Set<MembershipMongo> findByReferences(String referenceType, List<String> referenceId);

@Query("{ 'id.referenceType' : ?0, 'id.referenceId' : { $in : ?1 }, 'type' : ?2 }")
@Query("{ 'id.referenceType' : ?0, 'id.referenceId' : { $in : ?1 }, 'roles' : ?2 }")
Set<MembershipMongo> findByReferencesAndMembershipType(String referenceType, List<String> referenceId, String membershipType);

@Query("{ 'id.userId' : ?0, 'id.referenceType' : ?1 }")
Set<MembershipMongo> findByUserAndReferenceType(String userId, String referenceType);

@Query("{ 'id.userId' : ?0, 'id.referenceType' : ?1, 'type' : ?2 }")
@Query("{ 'id.userId' : ?0, 'id.referenceType' : ?1, 'roles' : ?2 }")
Set<MembershipMongo> findByUserAndReferenceTypeAndMembershipType(String userId, String referenceType, String membershipType);
}
Expand Up @@ -54,7 +54,7 @@ public class ApiMongo extends Auditable {

private String picture;

private String group;
private Set<String> groups;

private Set<String> views;

Expand Down Expand Up @@ -134,12 +134,12 @@ public void setPicture(String picture) {
this.picture = picture;
}

public String getGroup() {
return group;
public Set<String> getGroups() {
return groups;
}

public void setGroup(String group) {
this.group = group;
public void setGroups(Set<String> groups) {
this.groups = groups;
}

public Set<String> getViews() {
Expand Down Expand Up @@ -187,6 +187,7 @@ public String toString() {
sb.append(", version='").append(version).append('\'');
sb.append(", state='").append(lifecycleState).append('\'');
sb.append(", visibility='").append(visibility).append('\'');
sb.append(", groups='").append(groups).append('\'');
sb.append(", metadatas='").append(metadatas).append('\'');
sb.append('}');
return sb.toString();
Expand Down
Expand Up @@ -22,6 +22,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Set;

/**
* Mongo object model for application.
Expand All @@ -43,7 +44,7 @@ public class ApplicationMongo extends Auditable {

private String type;

private String group;
private Set<String> groups;

private String status;

Expand Down Expand Up @@ -79,12 +80,12 @@ public void setType(String type) {
this.type = type;
}

public String getGroup() {
return group;
public Set<String> getGroups() {
return groups;
}

public void setGroup(String group) {
this.group = group;
public void setGroups(Set<String> groups) {
this.groups = groups;
}

public String getStatus() {
Expand Down Expand Up @@ -115,6 +116,7 @@ public String toString() {
sb.append(", name='").append(name).append('\'');
sb.append(", type='").append(type).append('\'');
sb.append(", status='").append(status).append('\'');
sb.append(", groups='").append(groups).append('\'');
sb.append('}');
return sb.toString();
}
Expand Down
Expand Up @@ -28,7 +28,6 @@
public class GroupMongo extends Auditable {
@Id
private String id;
private String type;
private String name;
private List<String> administrators;

Expand All @@ -40,14 +39,6 @@ public void setId(String id) {
this.id = id;
}

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public String getName() {
return name;
}
Expand Down
Expand Up @@ -18,6 +18,7 @@
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.List;
import java.util.Objects;

/**
Expand All @@ -29,7 +30,7 @@ public class MembershipMongo extends Auditable {
@Id
MembershipPkMongo id;

private String type;
private List<String> roles;

public MembershipPkMongo getId() {
return id;
Expand All @@ -39,12 +40,12 @@ public void setId(MembershipPkMongo id) {
this.id = id;
}

public String getType() {
return type;
public List<String> getRoles() {
return roles;
}

public void setType(String type) {
this.type = type;
public void setRoles(List<String> roles) {
this.roles = roles;
}

@Override
Expand All @@ -53,19 +54,19 @@ public boolean equals(Object o) {
if (!(o instanceof MembershipMongo)) return false;
MembershipMongo membershipMongo = (MembershipMongo) o;
return Objects.equals(id, membershipMongo.id) &&
Objects.equals(type, membershipMongo.type);
Objects.equals(roles, membershipMongo.roles);
}

@Override
public int hashCode() {
return Objects.hash(id, type);
return Objects.hash(id, roles);
}

@Override
public String toString() {
return "MembershipMongo{" +
"id='" + id + '\'' +
", type ='" + type + '\'' +
", roles ='" + roles + '\'' +
'}';
}
}

0 comments on commit 2541011

Please sign in to comment.