Skip to content

Commit 37b02a6

Browse files
AS-3092: Implement ImportEndpointsImpl.
1 parent f24323a commit 37b02a6

File tree

19 files changed

+590
-24
lines changed

19 files changed

+590
-24
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package ca.bc.gov.farms.api.rest.v1.endpoints;
2+
3+
import java.io.InputStream;
4+
5+
import javax.ws.rs.Consumes;
6+
import javax.ws.rs.POST;
7+
import javax.ws.rs.Path;
8+
import javax.ws.rs.Produces;
9+
import javax.ws.rs.core.MediaType;
10+
import javax.ws.rs.core.Response;
11+
12+
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
13+
import org.glassfish.jersey.media.multipart.FormDataParam;
14+
15+
@Path("/import")
16+
public interface ImportEndpoints {
17+
18+
@POST
19+
@Path("/bpu")
20+
@Consumes(MediaType.MULTIPART_FORM_DATA)
21+
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
22+
Response importBPU(@FormDataParam("file") InputStream fileInputStream,
23+
@FormDataParam("file") FormDataContentDisposition fileDetail) throws Exception;
24+
}

farms-api/farms-api-rest-endpoints/src/main/java/ca/bc/gov/farms/api/rest/v1/endpoints/impl/BenchmarkPerUnitEndpointsImpl.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import org.springframework.beans.factory.annotation.Autowired;
99

1010
import ca.bc.gov.brmb.common.rest.resource.MessageListRsrc;
11-
import ca.bc.gov.brmb.common.service.api.ConflictException;
1211
import ca.bc.gov.brmb.common.service.api.NotFoundException;
1312
import ca.bc.gov.brmb.common.service.api.ValidationFailureException;
1413
import ca.bc.gov.farms.api.rest.v1.endpoints.BenchmarkPerUnitEndpoints;
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package ca.bc.gov.farms.api.rest.v1.endpoints.impl;
2+
3+
import java.io.ByteArrayInputStream;
4+
import java.io.ByteArrayOutputStream;
5+
import java.io.IOException;
6+
import java.io.InputStream;
7+
8+
import javax.ws.rs.core.Response;
9+
10+
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
11+
import org.slf4j.Logger;
12+
import org.slf4j.LoggerFactory;
13+
import org.springframework.beans.factory.annotation.Autowired;
14+
import ca.bc.gov.farms.api.rest.v1.endpoints.ImportEndpoints;
15+
import ca.bc.gov.farms.domain.codes.ImportClassCodes;
16+
import ca.bc.gov.farms.domain.codes.ImportStateCodes;
17+
import ca.bc.gov.farms.persistence.v1.dto.ImportVersionDto;
18+
import ca.bc.gov.farms.service.api.v1.ImportBPUService;
19+
import ca.bc.gov.farms.service.api.v1.ImportService;
20+
21+
public class ImportEndpointsImpl extends BaseEndpointsImpl implements ImportEndpoints {
22+
23+
private static final Logger logger = LoggerFactory.getLogger(ImportEndpointsImpl.class);
24+
25+
@Autowired
26+
private ImportService importService;
27+
28+
@Autowired
29+
private ImportBPUService importBPUService;
30+
31+
@Override
32+
public Response importBPU(InputStream fileInputStream, FormDataContentDisposition fileDetail) throws Exception {
33+
logger.debug("<importBPU");
34+
35+
Response response = null;
36+
37+
logRequest();
38+
39+
try {
40+
byte[] fileContent = readBytes(fileInputStream);
41+
String fileName = fileDetail.getFileName();
42+
43+
// Call the service layer to handle the import
44+
ImportVersionDto importVersionDto = importService.createImportVersion(
45+
ImportClassCodes.BPU, ImportStateCodes.SCHEDULED_FOR_STAGING, ImportClassCodes.BPU_DESCRIPTION,
46+
fileName, fileContent, "UserId");
47+
48+
Long importVersionId = importVersionDto.getImportVersionId();
49+
InputStream inputStream = new ByteArrayInputStream(fileContent);
50+
String userId = "UserId";
51+
importBPUService.importCSV(importVersionId, inputStream, userId);
52+
53+
importBPUService.processImport(importVersionId, userId);
54+
55+
response = Response.ok().build();
56+
} catch (Exception e) {
57+
response = getInternalServerErrorResponse(e);
58+
}
59+
60+
logResponse(response);
61+
62+
logger.debug(">importBPU " + response);
63+
return response;
64+
}
65+
66+
private byte[] readBytes(InputStream inputStream) throws IOException {
67+
try (ByteArrayOutputStream buffer = new ByteArrayOutputStream()) {
68+
int nRead;
69+
byte[] data = new byte[4096];
70+
while ((nRead = inputStream.read(data, 0, data.length)) != -1) {
71+
buffer.write(data, 0, nRead);
72+
}
73+
return buffer.toByteArray();
74+
}
75+
}
76+
77+
}

farms-api/farms-api-rest-endpoints/src/main/java/ca/bc/gov/farms/api/rest/v1/jersey/JerseyApplication.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
import javax.servlet.ServletConfig;
44
import javax.ws.rs.core.Context;
55

6+
import org.glassfish.jersey.media.multipart.MultiPartFeature;
67
import org.slf4j.Logger;
78
import org.slf4j.LoggerFactory;
8-
99
import ca.bc.gov.farms.api.rest.v1.endpoints.impl.BenchmarkPerUnitEndpointsImpl;
1010
import ca.bc.gov.farms.api.rest.v1.endpoints.impl.FairMarketValueEndpointsImpl;
11+
import ca.bc.gov.farms.api.rest.v1.endpoints.impl.ImportEndpointsImpl;
1112
import ca.bc.gov.farms.api.rest.v1.endpoints.impl.TopLevelEndpointsImpl;
1213
import ca.bc.gov.brmb.common.api.rest.code.endpoints.impl.CodeEndpointsImpl;
1314
import ca.bc.gov.brmb.common.api.rest.code.endpoints.impl.CodeTableEndpointsImpl;
@@ -34,6 +35,9 @@ public JerseyApplication(@Context ServletConfig servletConfig) {
3435
register(BenchmarkPerUnitEndpointsImpl.class);
3536
register(FairMarketValueEndpointsImpl.class);
3637

38+
register(MultiPartFeature.class);
39+
register(ImportEndpointsImpl.class);
40+
3741
logger.debug(">JerseyApplication");
3842
}
3943
}
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package ca.bc.gov.farms.domain.codes;
2+
3+
public final class ImportClassCodes {
4+
5+
/** */
6+
private ImportClassCodes() {
7+
}
8+
9+
/** Canada Revenue Agency */
10+
public static final String CRA = "CRA";
11+
public static final String CRA_DESCRIPTION = "Canada Revenue Agency";
12+
13+
/** Fair Market Value */
14+
public static final String FMV = "FMV";
15+
public static final String FMV_DESCRIPTION = "Fair Market Value";
16+
17+
/** Benchmark Per Unit */
18+
public static final String BPU = "BPU";
19+
public static final String BPU_DESCRIPTION = "Benchmark Per Unit";
20+
21+
/** Insurable Values & Premium Rates */
22+
public static final String IVPR = "IVPR";
23+
public static final String IVPR_DESCRIPTION = "Insurable Values & Premium Rates";
24+
25+
/** Accrual Adjusted Reference Margin */
26+
public static final String AARM = "AARM";
27+
public static final String AARM_DESCRIPTION = "Accrual Adjusted Reference Margin";
28+
29+
/** BC Generated CRA */
30+
public static final String BCCRA = "BCCRA";
31+
public static final String BCCRA_DESCRIPTION = "BC Generated CRA";
32+
33+
/** Enrolment Generation */
34+
public static final String ENROL = "ENROL";
35+
36+
/** Enrolment Data Transfer to CRM */
37+
public static final String XENROL = "XENROL";
38+
39+
/** Contact Data Transfer to CRM */
40+
public static final String XCONTACT = "XCONTACT";
41+
42+
/** Benefit Data Transfer to CRM */
43+
public static final String XSTATE = "XSTATE";
44+
45+
public static final String TIP_REPORT = "TIP_REPORT";
46+
47+
public static final String FIFO = "FIFO";
48+
49+
public static boolean isCra(String importClassCode) {
50+
boolean result = false;
51+
52+
if (CRA.equals(importClassCode)) {
53+
result = true;
54+
} else if (BCCRA.equals(importClassCode)) {
55+
result = true;
56+
}
57+
return result;
58+
}
59+
60+
public static boolean isBpu(String importClassCode) {
61+
return BPU.equals(importClassCode);
62+
}
63+
64+
public static boolean isIvpr(String importClassCode) {
65+
return IVPR.equals(importClassCode);
66+
}
67+
68+
public static boolean isFmv(String importClassCode) {
69+
return FMV.equals(importClassCode);
70+
}
71+
72+
public static boolean isEnrolment(String importClassCode) {
73+
return ENROL.equals(importClassCode);
74+
}
75+
76+
public static boolean isTransfer(String importClassCode) {
77+
boolean result = false;
78+
79+
if (XSTATE.equals(importClassCode)) {
80+
result = true;
81+
} else if (XCONTACT.equals(importClassCode)) {
82+
result = true;
83+
} else if (XENROL.equals(importClassCode)) {
84+
result = true;
85+
}
86+
return result;
87+
}
88+
89+
public static boolean isTipReport(String importClassCode) {
90+
return TIP_REPORT.equals(importClassCode);
91+
}
92+
}
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
package ca.bc.gov.farms.domain.codes;
2+
3+
/**
4+
* @author $author$
5+
* @version $Revision: 1694 $, $Date: 2011-11-07 15:45:42 -0800 (Mon, 07 Nov
6+
* 2011) $
7+
*/
8+
public final class ImportStateCodes {
9+
10+
/** */
11+
private ImportStateCodes() {
12+
}
13+
14+
public static final String SCHEDULED_FOR_STAGING = "SS";
15+
16+
public static final String STAGING_IN_PROGRESS = "SP";
17+
18+
public static final String STAGING_FAILED = "SF";
19+
20+
public static final String STAGING_COMPLETE = "SC";
21+
22+
public static final String SCHEDULED_FOR_IMPORT = "SI";
23+
24+
public static final String IMPORT_IN_PROGRESS = "IP";
25+
26+
public static final String IMPORT_FAILED = "IF";
27+
28+
public static final String IMPORT_COMPLETE = "IC";
29+
30+
public static final String IMPORT_COMPLETE_PARTIALLY = "IPC";
31+
32+
public static final String CANCELLED = "CAN";
33+
34+
/**
35+
* @param code a state code
36+
*
37+
* @return true if the state is not a final state
38+
*/
39+
public static boolean isInProgress(final String code) {
40+
return (SCHEDULED_FOR_STAGING.equals(code)
41+
|| STAGING_IN_PROGRESS.equals(code)
42+
|| STAGING_COMPLETE.equals(code)
43+
|| SCHEDULED_FOR_IMPORT.equals(code)
44+
|| IMPORT_IN_PROGRESS.equals(code));
45+
}
46+
47+
/**
48+
* @param code a state code
49+
*
50+
* @return true if staging is done
51+
*/
52+
public static boolean isStagingDone(final String code) {
53+
return (STAGING_COMPLETE.equals(code)
54+
|| STAGING_FAILED.equals(code)
55+
|| CANCELLED.equals(code));
56+
}
57+
58+
/**
59+
* @param code a state code
60+
*
61+
* @return true if staging is scheduled
62+
*/
63+
public static boolean isScheduledForStaging(final String code) {
64+
return SCHEDULED_FOR_STAGING.equals(code);
65+
}
66+
67+
/**
68+
* @param code a state code
69+
*
70+
* @return true if staging is scheduled
71+
*/
72+
public static boolean isScheduledForImport(final String code) {
73+
return SCHEDULED_FOR_IMPORT.equals(code);
74+
}
75+
76+
/**
77+
* @param code a state code
78+
*
79+
* @return true if importing (staging to operational) is done
80+
*/
81+
public static boolean isImportDone(final String code) {
82+
return (IMPORT_COMPLETE.equals(code) ||
83+
IMPORT_FAILED.equals(code) ||
84+
IMPORT_COMPLETE_PARTIALLY.equals(code));
85+
}
86+
87+
/**
88+
* @param importClassCode importClassCode
89+
* @param importStateCode importStateCode
90+
* @param importStateDescription importStateDescription
91+
* @return String
92+
*/
93+
public static String translateImportStateDescription(
94+
String importClassCode, String importStateCode, String importStateDescription) {
95+
if (ImportClassCodes.isEnrolment(importClassCode)) {
96+
if (ImportStateCodes.SCHEDULED_FOR_IMPORT.equals(importStateCode)) {
97+
return "Scheduled for Confirmation";
98+
} else if (ImportStateCodes.IMPORT_COMPLETE.equals(importStateCode)) {
99+
return "Enrolment Completed";
100+
} else if (ImportStateCodes.IMPORT_FAILED.equals(importStateCode)) {
101+
return "Enrolment Failed";
102+
} else if (ImportStateCodes.IMPORT_IN_PROGRESS.equals(importStateCode)) {
103+
return "Enrolment in Progress";
104+
}
105+
} else if (ImportClassCodes.isTransfer(importClassCode)) {
106+
if (ImportStateCodes.SCHEDULED_FOR_STAGING.equals(importStateCode)) {
107+
return "Scheduled for Transfer";
108+
} else if (ImportStateCodes.IMPORT_COMPLETE.equals(importStateCode)) {
109+
return "Transfer Completed";
110+
} else if (ImportStateCodes.IMPORT_FAILED.equals(importStateCode)) {
111+
return "Transfer Failed";
112+
} else if (ImportStateCodes.IMPORT_IN_PROGRESS.equals(importStateCode)) {
113+
return "Transfer in Progress";
114+
}
115+
}
116+
return importStateDescription;
117+
}
118+
119+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package ca.bc.gov.farms.persistence.v1.dao;
2+
3+
import java.io.Serializable;
4+
5+
import ca.bc.gov.brmb.common.persistence.dao.DaoException;
6+
import ca.bc.gov.farms.persistence.v1.dto.ImportVersionDto;
7+
8+
public interface ImportDao extends Serializable {
9+
10+
void insertImportVersion(ImportVersionDto dto) throws DaoException;
11+
}

0 commit comments

Comments
 (0)