Skip to content

Commit 0b05a2d

Browse files
committed
Merge from main
2 parents 248e9d9 + ae0e6fb commit 0b05a2d

File tree

12 files changed

+394
-0
lines changed

12 files changed

+394
-0
lines changed

pom.xml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,13 @@
1818
<java.version>21</java.version>
1919
<maven.compiler.source>${java.version}</maven.compiler.source>
2020
<maven.compiler.target>${java.version}</maven.compiler.target>
21+
<maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version>
2122
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2223
<spring-boot-dependencies.version>3.3.4</spring-boot-dependencies.version>
2324
<spring-boot-maven-plugin.version>3.3.4</spring-boot-maven-plugin.version>
2425
<api-sdk-java.version>6.0.21</api-sdk-java.version>
2526
<structured-logging.version>3.0.20</structured-logging.version>
27+
<org.mapstruct.version>1.5.5.Final</org.mapstruct.version>
2628
<log4j.version>2.24.1</log4j.version>
2729
<jib-maven-plugin.version>3.4.2</jib-maven-plugin.version>
2830
<api-security-java.version>2.0.8</api-security-java.version>
@@ -64,6 +66,10 @@
6466
<groupId>org.springframework.boot</groupId>
6567
<artifactId>spring-boot-starter-actuator</artifactId>
6668
</dependency>
69+
<dependency>
70+
<groupId>org.springframework.boot</groupId>
71+
<artifactId>spring-boot-starter-data-mongodb</artifactId>
72+
</dependency>
6773
<dependency>
6874
<groupId>uk.gov.companieshouse</groupId>
6975
<artifactId>structured-logging</artifactId>
@@ -79,6 +85,11 @@
7985
<artifactId>api-security-java</artifactId>
8086
<version>${api-security-java.version}</version>
8187
</dependency>
88+
<dependency>
89+
<groupId>org.mapstruct</groupId>
90+
<artifactId>mapstruct</artifactId>
91+
<version>${org.mapstruct.version}</version>
92+
</dependency>
8293

8394
<!-- Test dependencies -->
8495
<dependency>
@@ -112,6 +123,22 @@
112123
</execution>
113124
</executions>
114125
</plugin>
126+
<plugin>
127+
<groupId>org.apache.maven.plugins</groupId>
128+
<artifactId>maven-compiler-plugin</artifactId>
129+
<version>${maven-compiler-plugin.version}</version>
130+
<configuration>
131+
<source>${java.version}</source>
132+
<target>${java.version}</target>
133+
<annotationProcessorPaths>
134+
<path>
135+
<groupId>org.mapstruct</groupId>
136+
<artifactId>mapstruct-processor</artifactId>
137+
<version>${org.mapstruct.version}</version>
138+
</path>
139+
</annotationProcessorPaths>
140+
</configuration>
141+
</plugin>
115142
<plugin>
116143
<groupId>com.google.cloud.tools</groupId>
117144
<artifactId>jib-maven-plugin</artifactId>
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package uk.gov.companieshouse.limitedpartnershipsapi.mapper;
2+
3+
import org.mapstruct.Mapper;
4+
import org.mapstruct.factory.Mappers;
5+
import org.springframework.stereotype.Component;
6+
import uk.gov.companieshouse.limitedpartnershipsapi.model.PartnershipNameEnding;
7+
import uk.gov.companieshouse.limitedpartnershipsapi.model.dao.DataDao;
8+
import uk.gov.companieshouse.limitedpartnershipsapi.model.dao.LimitedPartnershipSubmissionDao;
9+
import uk.gov.companieshouse.limitedpartnershipsapi.model.dto.DataDto;
10+
import uk.gov.companieshouse.limitedpartnershipsapi.model.dto.LimitedPartnershipSubmissionDto;
11+
12+
@Component
13+
@Mapper(componentModel = "spring")
14+
public interface LimitedPartnershipMapper {
15+
16+
LimitedPartnershipMapper INSTANCE = Mappers.getMapper(LimitedPartnershipMapper.class);
17+
18+
LimitedPartnershipSubmissionDao dtoToDao(LimitedPartnershipSubmissionDto dto);
19+
20+
default String mapPartnershipNameEndingToString(PartnershipNameEnding nameEnding){
21+
return nameEnding.getDescription();
22+
}
23+
24+
default PartnershipNameEnding mapPartnershipNameEndingToEnum(String nameEnding){
25+
return nameEnding != null ? PartnershipNameEnding.fromDescription(nameEnding) : null;
26+
}
27+
28+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package uk.gov.companieshouse.limitedpartnershipsapi.model;
2+
3+
public enum PartnershipNameEnding {
4+
5+
LIMITED_PARTNERSHIP("Limited Partnership"),
6+
LP("LP"),
7+
L_DOT_P_DOT("L.P."),
8+
PARTNERIAETH_CYFYNGEDIG("Partneriaeth Cyfyngedig"),
9+
PC("PC"),
10+
P_DOT_C_DOT("P.C.");
11+
12+
private final String description;
13+
14+
PartnershipNameEnding(String description) {
15+
this.description = description;
16+
};
17+
18+
public String getDescription() {
19+
return description;
20+
}
21+
22+
public static PartnershipNameEnding fromDescription(String description) {
23+
for (PartnershipNameEnding nameEnding : PartnershipNameEnding.values()) {
24+
if (nameEnding.getDescription().equalsIgnoreCase(description)) {
25+
return nameEnding;
26+
}
27+
}
28+
throw new IllegalArgumentException("No PartnershipNameEnding constant with description " + description);
29+
}
30+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package uk.gov.companieshouse.limitedpartnershipsapi.model.dao;
2+
3+
import org.springframework.data.mongodb.core.mapping.Field;
4+
5+
public class DataDao {
6+
7+
@Field("partnership_name")
8+
private String partnershipName;
9+
10+
@Field("name_ending")
11+
private String nameEnding;
12+
13+
public String getPartnershipName() {
14+
return partnershipName;
15+
}
16+
17+
public void setPartnershipName(String partnershipName) {
18+
this.partnershipName = partnershipName;
19+
}
20+
21+
public String getNameEnding() {
22+
return nameEnding;
23+
}
24+
25+
public void setNameEnding(String nameEnding) {
26+
this.nameEnding = nameEnding;
27+
}
28+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package uk.gov.companieshouse.limitedpartnershipsapi.model.dao;
2+
3+
import org.springframework.data.annotation.Id;
4+
import org.springframework.data.mongodb.core.mapping.Document;
5+
import org.springframework.data.mongodb.core.mapping.Field;
6+
7+
import java.time.LocalDateTime;
8+
9+
@Document(collection = "limited_partnership_submissions")
10+
public class LimitedPartnershipSubmissionDao {
11+
12+
@Id
13+
private String id;
14+
15+
@Field("created_at")
16+
private LocalDateTime createdAt;
17+
18+
@Field("created_by_user_id")
19+
private String userId;
20+
21+
@Field("data")
22+
private DataDao data;
23+
24+
public String getId() {
25+
return id;
26+
}
27+
28+
public void setId(String id) {
29+
this.id = id;
30+
}
31+
32+
public LocalDateTime getCreatedAt() {
33+
return createdAt;
34+
}
35+
36+
public void setCreatedAt(LocalDateTime createdAt) {
37+
this.createdAt = createdAt;
38+
}
39+
40+
public DataDao getData() {
41+
return data;
42+
}
43+
44+
public void setData(DataDao data) {
45+
this.data = data;
46+
}
47+
48+
public String getUserId() {
49+
return userId;
50+
}
51+
52+
public void setUserId(String userId) {
53+
this.userId = userId;
54+
}
55+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package uk.gov.companieshouse.limitedpartnershipsapi.model.dto;
2+
3+
import com.fasterxml.jackson.annotation.JsonInclude;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import uk.gov.companieshouse.limitedpartnershipsapi.model.PartnershipNameEnding;
6+
7+
import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
8+
9+
public class DataDto {
10+
@JsonInclude(NON_NULL)
11+
@JsonProperty("partnership_name")
12+
private String partnershipName;
13+
14+
@JsonInclude(NON_NULL)
15+
@JsonProperty("name_ending")
16+
private PartnershipNameEnding nameEnding;
17+
18+
public String getPartnershipName() {
19+
return partnershipName;
20+
}
21+
22+
public void setPartnershipName(String partnershipName) {
23+
this.partnershipName = partnershipName;
24+
}
25+
26+
public PartnershipNameEnding getNameEnding() {
27+
return nameEnding;
28+
}
29+
30+
public void setNameEnding(PartnershipNameEnding nameEnding) {
31+
this.nameEnding = nameEnding;
32+
}
33+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package uk.gov.companieshouse.limitedpartnershipsapi.model.dto;
2+
3+
import com.fasterxml.jackson.annotation.JsonInclude;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
6+
import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
7+
8+
public class LimitedPartnershipSubmissionDto {
9+
10+
@JsonInclude(NON_NULL)
11+
@JsonProperty("data")
12+
private DataDto data;
13+
14+
public DataDto getData() {
15+
return data;
16+
}
17+
18+
public void setData(DataDto data) {
19+
this.data = data;
20+
}
21+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package uk.gov.companieshouse.limitedpartnershipsapi.repository;
2+
3+
import org.springframework.data.mongodb.repository.MongoRepository;
4+
import org.springframework.stereotype.Repository;
5+
import uk.gov.companieshouse.limitedpartnershipsapi.model.dao.LimitedPartnershipSubmissionDao;
6+
7+
@Repository
8+
public interface LimitedPartnershipSubmissionsRepository extends MongoRepository<LimitedPartnershipSubmissionDao, String> {
9+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package uk.gov.companieshouse.limitedpartnershipsapi.service;
2+
3+
import org.springframework.beans.factory.annotation.Autowired;
4+
import org.springframework.stereotype.Service;
5+
import uk.gov.companieshouse.limitedpartnershipsapi.mapper.LimitedPartnershipMapper;
6+
import uk.gov.companieshouse.limitedpartnershipsapi.model.dao.LimitedPartnershipSubmissionDao;
7+
import uk.gov.companieshouse.limitedpartnershipsapi.model.dto.LimitedPartnershipSubmissionDto;
8+
import uk.gov.companieshouse.limitedpartnershipsapi.repository.LimitedPartnershipSubmissionsRepository;
9+
import uk.gov.companieshouse.limitedpartnershipsapi.utils.ApiLogger;
10+
11+
import java.time.LocalDateTime;
12+
13+
@Service
14+
public class LimitedPartnershipService {
15+
16+
private final LimitedPartnershipMapper mapper;
17+
private final LimitedPartnershipSubmissionsRepository repository;
18+
19+
@Autowired
20+
public LimitedPartnershipService(LimitedPartnershipMapper mapper, LimitedPartnershipSubmissionsRepository repository) {
21+
this.mapper = mapper;
22+
this.repository = repository;
23+
}
24+
25+
public String createLimitedPartnership(LimitedPartnershipSubmissionDto limitedPartnershipSubmissionDto, String requestId, String userId) {
26+
ApiLogger.debug("Called createLimitedPartnership(...)");
27+
28+
LimitedPartnershipSubmissionDao dao = mapper.dtoToDao(limitedPartnershipSubmissionDto);
29+
dao.setCreatedAt(LocalDateTime.now());
30+
dao.setUserId(userId);
31+
LimitedPartnershipSubmissionDao insertedSubmission = repository.insert(dao);
32+
ApiLogger.infoContext(requestId, String.format("Limited Partnership Submission created with limited-partnership submission id: %s", insertedSubmission.getId()));
33+
34+
return insertedSubmission.getId();
35+
}
36+
}

src/main/resources/application.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
limited_partnerships.mongodb.dbname=transactions_limited_partnerships
2+
spring.data.mongodb.uri=${MONGODB_URL}/${limited_partnerships.mongodb.dbname}
3+
14
# Spring actuator end-points config
25
management.endpoints.enabled-by-default=false
36
management.endpoint.health.enabled=true

0 commit comments

Comments
 (0)