Skip to content

Commit 943f204

Browse files
committed
avniproject/avni-webapp#1304 - moved category and status to database
1 parent 27e62ff commit 943f204

18 files changed

+258
-76
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.avni.server.dao;
2+
3+
import org.avni.server.domain.organisation.OrganisationCategory;
4+
import org.springframework.data.repository.query.Param;
5+
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
6+
import org.springframework.data.rest.core.annotation.RestResource;
7+
import org.springframework.stereotype.Repository;
8+
9+
import java.util.List;
10+
11+
@Repository
12+
@RepositoryRestResource(collectionResourceRel = "organisationCategory", path = "organisationCategory")
13+
public interface OrganisationCategoryRepository extends AvniJpaRepository<OrganisationCategory, Long>, CHSRepository<OrganisationCategory> {
14+
@RestResource(path = "findAllById", rel = "findAllById")
15+
List<OrganisationCategory> findByIdIn(@Param("ids") Long[] ids);
16+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.avni.server.dao;
2+
3+
import org.avni.server.domain.organisation.OrganisationStatus;
4+
import org.springframework.data.repository.query.Param;
5+
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
6+
import org.springframework.data.rest.core.annotation.RestResource;
7+
import org.springframework.stereotype.Repository;
8+
9+
import java.util.List;
10+
11+
@Repository
12+
@RepositoryRestResource(collectionResourceRel = "organisationStatus", path = "organisationStatus")
13+
public interface OrganisationStatusRepository extends AvniJpaRepository<OrganisationStatus, Long>, CHSRepository<OrganisationStatus> {
14+
@RestResource(path = "findAllById", rel = "findAllById")
15+
List<OrganisationStatus> findByIdIn(@Param("ids") Long[] ids);
16+
}

avni-server-api/src/main/java/org/avni/server/domain/Organisation.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ public class Organisation extends ETLEntity {
2626
private Account account;
2727

2828
@NotNull
29-
@Enumerated(EnumType.STRING)
29+
@ManyToOne(fetch = FetchType.EAGER)
3030
private OrganisationCategory category;
3131

3232
@NotNull
33-
@Enumerated(EnumType.STRING)
33+
@ManyToOne(fetch = FetchType.EAGER)
3434
private OrganisationStatus status;
3535

3636
public Organisation() {
@@ -86,19 +86,29 @@ public String getEffectiveUsernameSuffix() {
8686
return usernameSuffix == null ? getDbUser() : usernameSuffix;
8787
}
8888

89+
@JsonIgnore
8990
public OrganisationCategory getCategory() {
9091
return category;
9192
}
9293

94+
public Long getCategoryId() {
95+
return category.getId();
96+
}
97+
9398
public void setCategory(OrganisationCategory organisationCategory) {
9499
this.category = organisationCategory;
95100
}
96101

102+
@JsonIgnore
97103
public OrganisationStatus getStatus() {
98104
return status;
99105
}
100106

101107
public void setStatus(OrganisationStatus status) {
102108
this.status = status;
103109
}
110+
111+
public Long getStatusId() {
112+
return status.getId();
113+
}
104114
}
Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
package org.avni.server.domain.organisation;
22

3-
public enum OrganisationCategory {
4-
Production, UAT, Prototype, Temporary, Trial
3+
import org.avni.server.domain.CHSEntity;
4+
5+
import javax.persistence.Entity;
6+
7+
@Entity
8+
public class OrganisationCategory extends CHSEntity {
9+
public static final String Production = "Production";
10+
private String name;
11+
12+
public String getName() {
13+
return name;
14+
}
15+
16+
public void setName(String name) {
17+
this.name = name;
18+
}
519
}
Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
package org.avni.server.domain.organisation;
22

3-
public enum OrganisationStatus {
4-
Archived, Live
3+
import org.avni.server.domain.CHSEntity;
4+
5+
import javax.persistence.Entity;
6+
7+
@Entity
8+
public class OrganisationStatus extends CHSEntity {
9+
private String name;
10+
11+
public String getName() {
12+
return name;
13+
}
14+
15+
public void setName(String name) {
16+
this.name = name;
17+
}
518
}

avni-server-api/src/main/java/org/avni/server/framework/rest/RepositoryConfig.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import org.avni.server.domain.*;
44
import org.avni.server.domain.accessControl.GroupPrivilege;
55
import org.avni.server.domain.accessControl.Privilege;
6+
import org.avni.server.domain.organisation.OrganisationCategory;
7+
import org.avni.server.domain.organisation.OrganisationStatus;
68
import org.springframework.context.annotation.Configuration;
79
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
810
import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurerAdapter;
@@ -37,6 +39,8 @@ public void configureRepositoryRestConfiguration(RepositoryRestConfiguration con
3739
config.exposeIdsFor(CommentThread.class);
3840
config.exposeIdsFor(RuleFailureTelemetry.class);
3941
config.exposeIdsFor(Individual.class);
42+
config.exposeIdsFor(OrganisationCategory.class);
43+
config.exposeIdsFor(OrganisationStatus.class);
4044

4145
//TODO
4246
/**

avni-server-api/src/main/java/org/avni/server/web/ImplementationController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public ResponseEntity delete(@Param("deleteMetadata") boolean deleteMetadata) {
109109
return new ResponseEntity<>("Super admin cannot delete implementation data", HttpStatus.FORBIDDEN);
110110
}
111111
Organisation organisation = organisationService.getCurrentOrganisation();
112-
if (OrganisationCategory.Production.equals(organisation.getCategory())) {
112+
if (OrganisationCategory.Production.equals(organisation.getCategory().getName())) {
113113
return new ResponseEntity<>("Production organisation's data cannot be deleted", HttpStatus.CONFLICT);
114114
}
115115

avni-server-api/src/main/java/org/avni/server/web/OrganisationController.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,18 @@ public class OrganisationController implements RestControllerResourceProcessor<O
2626
private final ImplementationRepository implementationRepository;
2727
private final AccessControlService accessControlService;
2828
private final OrganisationService organisationService;
29+
private final OrganisationCategoryRepository organisationCategoryRepository;
30+
private final OrganisationStatusRepository organisationStatusRepository;
2931

3032
@Autowired
31-
public OrganisationController(OrganisationRepository organisationRepository, AccountRepository accountRepository, ImplementationRepository implementationRepository, AccessControlService accessControlService, OrganisationService organisationService) {
33+
public OrganisationController(OrganisationRepository organisationRepository, AccountRepository accountRepository, ImplementationRepository implementationRepository, AccessControlService accessControlService, OrganisationService organisationService, OrganisationCategoryRepository organisationCategoryRepository, OrganisationStatusRepository organisationStatusRepository) {
3234
this.organisationRepository = organisationRepository;
3335
this.accountRepository = accountRepository;
3436
this.implementationRepository = implementationRepository;
3537
this.accessControlService = accessControlService;
3638
this.organisationService = organisationService;
39+
this.organisationCategoryRepository = organisationCategoryRepository;
40+
this.organisationStatusRepository = organisationStatusRepository;
3741
}
3842

3943
@RequestMapping(value = "/organisation", method = RequestMethod.POST)
@@ -50,8 +54,8 @@ public ResponseEntity save(@RequestBody OrganisationContract request) {
5054
org.setUuid(request.getUuid() == null ? UUID.randomUUID().toString() : request.getUuid());
5155
org.setDbUser(request.getDbUser());
5256
org.setSchemaName(request.getSchemaName());
53-
org.setCategory(request.getCategory());
54-
org.setStatus(request.getStatus());
57+
org.setCategory(organisationCategoryRepository.findEntity(request.getCategoryId()));
58+
org.setStatus(organisationStatusRepository.findEntity(request.getStatusId()));
5559
setAttributesOnOrganisation(request, org);
5660
setOrgAccountByIdOrDefault(org, request.getAccountId());
5761

@@ -136,8 +140,8 @@ private void setAttributesOnOrganisation(@RequestBody OrganisationContract reque
136140
}
137141
organisation.setMediaDirectory(request.getMediaDirectory());
138142
organisation.setVoided(request.isVoided());
139-
organisation.setCategory(request.getCategory());
140-
organisation.setStatus(request.getStatus());
143+
organisation.setCategory(organisationCategoryRepository.findEntity(request.getCategoryId()));
144+
organisation.setStatus(organisationStatusRepository.findEntity(request.getStatusId()));
141145
}
142146

143147
private void setOrgAccountByIdOrDefault(Organisation organisation, Long accountId) {

avni-server-api/src/main/java/org/avni/server/web/request/OrganisationContract.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ public class OrganisationContract extends ETLContract {
99
private String mediaDirectory;
1010
private String usernameSuffix;
1111
private Long accountId;
12-
private OrganisationCategory category;
13-
private OrganisationStatus status;
12+
private Long categoryId;
13+
private Long statusId;
1414

1515
public static OrganisationContract fromEntity(Organisation organisation) {
1616
OrganisationContract organisationContract = new OrganisationContract();
@@ -20,12 +20,20 @@ public static OrganisationContract fromEntity(Organisation organisation) {
2020
organisationContract.setMediaDirectory(organisation.getMediaDirectory());
2121
organisationContract.setUsernameSuffix(organisation.getEffectiveUsernameSuffix());
2222
organisationContract.setAccountId(organisation.getAccount() == null ? null : organisation.getAccount().getId());
23-
organisationContract.setCategory(organisation.getCategory());
24-
organisationContract.setStatus(organisation.getStatus());
23+
organisationContract.setCategoryId(organisation.getCategory().getId());
24+
organisationContract.setStatusId(organisation.getStatus().getId());
2525
mapEntity(organisationContract, organisation);
2626
return organisationContract;
2727
}
2828

29+
private void setStatusId(Long id) {
30+
this.statusId = id;
31+
}
32+
33+
private void setCategoryId(Long id) {
34+
this.categoryId = id;
35+
}
36+
2937
public Long getParentOrganisationId() {
3038
return parentOrganisationId;
3139
}
@@ -58,19 +66,11 @@ public void setMediaDirectory(String mediaDirectory) {
5866
this.mediaDirectory = mediaDirectory;
5967
}
6068

61-
public OrganisationCategory getCategory() {
62-
return category;
63-
}
64-
65-
public void setCategory(OrganisationCategory category) {
66-
this.category = category;
67-
}
68-
69-
public OrganisationStatus getStatus() {
70-
return status;
69+
public Long getCategoryId() {
70+
return categoryId;
7171
}
7272

73-
public void setStatus(OrganisationStatus status) {
74-
this.status = status;
73+
public Long getStatusId() {
74+
return statusId;
7575
}
7676
}

avni-server-api/src/main/java/org/avni/server/web/response/UserInfoWebResponse.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
import java.util.List;
1010

1111
public class UserInfoWebResponse extends UserInfoContract {
12-
private OrganisationCategory organisationCategory;
1312
private long lastSessionTime;
1413
private boolean hasAllPrivileges;
1514
private List<UserPrivilegeWebResponse> privileges;
1615
private boolean isAdmin;
16+
private String organisationCategoryName;
1717

1818
private UserInfoWebResponse() {
1919
}
@@ -29,7 +29,7 @@ public static UserInfoWebResponse createForAdminUser(List<UserPrivilegeWebRespon
2929
response.setOrganisationId(contextOrganisation.getId());
3030
response.setOrganisationName(contextOrganisation.getName());
3131
response.setUsernameSuffix(contextOrganisation.getEffectiveUsernameSuffix());
32-
response.organisationCategory = contextOrganisation.getCategory();
32+
response.organisationCategoryName = contextOrganisation.getCategory().getName();
3333
}
3434
return response;
3535
}
@@ -39,7 +39,7 @@ public UserInfoWebResponse(String username, String orgName, Long orgId, String u
3939
this.privileges = privileges;
4040
this.hasAllPrivileges = hasAllPrivileges;
4141
this.lastSessionTime = lastSessionTime;
42-
this.organisationCategory = organisationCategory;
42+
this.organisationCategoryName = organisationCategory.getName();
4343
}
4444

4545
public List<UserPrivilegeWebResponse> getPrivileges() {
@@ -62,7 +62,7 @@ public void setLastSessionTime(long lastSessionTime) {
6262
this.lastSessionTime = lastSessionTime;
6363
}
6464

65-
public OrganisationCategory getOrganisationCategory() {
66-
return organisationCategory;
65+
public String getOrganisationCategoryName() {
66+
return organisationCategoryName;
6767
}
6868
}

0 commit comments

Comments
 (0)