Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
W
WebFlux-MongoDB Aggregations
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Sridhar Pothanaveni
WebFlux-MongoDB Aggregations
Commits
b8741e83
Commit
b8741e83
authored
Feb 07, 2024
by
Sridhar Pothanaveni
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
File upload functionality done
parent
20a3e65d
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
79 additions
and
127 deletions
+79
-127
pom.xml
pom.xml
+8
-1
BPNController.java
src/main/java/com/nisum/task/controller/BPNController.java
+26
-34
FileUploadController.java
.../java/com/nisum/task/controller/FileUploadController.java
+18
-47
BPN.java
src/main/java/com/nisum/task/entity/BPN.java
+2
-2
BPNService.java
src/main/java/com/nisum/task/service/BPNService.java
+2
-2
FileUploadService.java
src/main/java/com/nisum/task/service/FileUploadService.java
+22
-40
SmicService.java
src/main/java/com/nisum/task/service/SmicService.java
+1
-1
No files found.
pom.xml
View file @
b8741e83
...
...
@@ -19,7 +19,7 @@
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<java.version>
1
.8
</java.version>
<java.version>
1
1
</java.version>
</properties>
<dependencies>
...
...
@@ -115,6 +115,13 @@
</dependency>
<dependency>
<groupId>
org.apache.poi
</groupId>
<artifactId>
poi-ooxml
</artifactId>
<version>
4.1.2
</version>
</dependency>
</dependencies>
...
...
src/main/java/com/nisum/task/controller/BPNController.java
View file @
b8741e83
...
...
@@ -6,14 +6,10 @@ import com.nisum.task.service.BPNService;
import
com.nisum.task.service.FileUploadService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
import
java.io.IOException
;
@CrossOrigin
(
origins
=
"*"
)
@Slf4j
...
...
@@ -29,13 +25,13 @@ public class BPNController {
@PostMapping
(
"/createBPN"
)
public
Mono
<
BPN
>
saveBPN
(
@RequestBody
BPN
bpn
)
{
log
.
info
(
"saveBPN {}"
,
bpn
);
log
.
info
(
"saveBPN {}"
,
bpn
);
return
bPNService
.
saveBPN
(
bpn
);
}
@GetMapping
(
"/findById/{bpnID}"
)
public
Mono
<
BPN
>
getBPN
(
@PathVariable
String
bpnID
)
{
log
.
info
(
"getBPN {}"
,
bpnID
);
log
.
info
(
"getBPN {}"
,
bpnID
);
return
bPNService
.
findById
(
Long
.
valueOf
(
bpnID
));
}
...
...
@@ -48,7 +44,7 @@ public class BPNController {
@PostMapping
(
"/processBPN"
)
public
Mono
<
BPN
>
processBPN
(
@RequestBody
BPN
bpn
)
{
log
.
info
(
"processBPN {}"
,
bpn
);
log
.
info
(
"processBPN {}"
,
bpn
);
return
bPNService
.
processBPN
(
bpn
);
}
...
...
@@ -60,40 +56,36 @@ public class BPNController {
// return fileUploadService.uploadFile(file);
// }
@RequestMapping
(
value
=
"/upload"
,
method
=
RequestMethod
.
PUT
,
consumes
=
"multipart/form-data"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
Flux
<
BPN
>
uploadFile
(
@RequestParam
(
"file"
)
MultipartFile
file
)
throws
IOException
{
log
.
info
(
"file upload"
);
// Log details of the file
log
.
info
(
"File Name: {}"
,
file
.
getOriginalFilename
());
log
.
info
(
"Content Type: {}"
,
file
.
getContentType
());
log
.
info
(
"File Size: {}"
,
file
.
getSize
());
return
fileUploadService
.
uploadFile
(
file
);
}
// @RequestMapping(value = "/upload", method = RequestMethod.PUT,consumes="multipart/form-data")
// @ResponseStatus(HttpStatus.OK)
// public Flux<BPN> uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
// log.info("file upload");
//
// // Log details of the file
// log.info("File Name: {}", file.getOriginalFilename());
// log.info("Content Type: {}", file.getContentType());
// log.info("File Size: {}", file.getSize());
//
// return fileUploadService.uploadFile(file);
// }
@PostMapping
(
"/uploadFile"
)
public
ResponseEntity
<
BPN
>
uploadFiles
(
@RequestParam
(
"file"
)
MultipartFile
file
)
{
String
message
=
""
;
try
{
fileUploadService
.
save
(
file
);
message
=
"Uploaded the file successfully: "
+
file
.
getOriginalFilename
();
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(
new
BPN
());
}
catch
(
Exception
e
)
{
message
=
"Could not upload the file: "
+
file
.
getOriginalFilename
()
+
". Error: "
+
e
.
getMessage
();
return
ResponseEntity
.
status
(
HttpStatus
.
EXPECTATION_FAILED
).
body
(
new
BPN
());
}
}
// @PostMapping("/uploadFile")
// public ResponseEntity<BPN> uploadFiles(@RequestParam("file") MultipartFile file) {
// try {
// fileUploadService.save(file);
//
// return ResponseEntity.status(HttpStatus.OK).body(new BPN());
// } catch (Exception e) {
// return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body(new BPN());
// }
// }
@PostMapping
(
"/createMultipleBPN"
)
public
Flux
<
BPN
>
saveBPN
(
@RequestBody
BPNDto
bpnDto
)
{
log
.
info
(
"createMultipleBPN {}"
,
bpnDto
);
log
.
info
(
"createMultipleBPN {}"
,
bpnDto
);
return
bPNService
.
saveMultipleBPN
(
bpnDto
);
}
}
src/main/java/com/nisum/task/controller/FileUploadController.java
View file @
b8741e83
...
...
@@ -4,13 +4,12 @@ package com.nisum.task.controller;
import
com.nisum.task.entity.BPN
;
import
com.nisum.task.service.FileUploadService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.MediaType
;
import
org.springframework.http.codec.multipart.FilePart
;
import
org.springframework.http.codec.multipart.Part
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
reactor.core.publisher.Flux
;
import
java.io.IOException
;
...
...
@@ -18,53 +17,25 @@ import java.io.IOException;
//@CrossOrigin(origins = "*")
@RestController
@RequestMapping
(
"/file"
)
@Slf4j
public
class
FileUploadController
{
@Autowired
private
FileUploadService
fileUploadService
;
@PostMapping
(
"/uploadFile"
)
public
Flux
<
BPN
>
uploadExcelFile
(
@RequestParam
(
"file"
)
MultipartFile
file
)
throws
IOException
{
log
.
info
(
"file upload"
);
return
fileUploadService
.
uploadFile
(
file
);
}
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
FileUploadController
.
class
);
@PostMapping
(
"/import"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
ResponseEntity
<
String
>
importFile
(
@RequestParam
(
"file"
)
MultipartFile
file
)
{
log
.
info
(
"Received file: {}"
,
file
.
getOriginalFilename
());
// You can perform further operations with the file, e.g., save it to the server
// For demonstration purposes, just log the file details
@PostMapping
(
value
=
"/uploadExcel"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
,
produces
=
MediaType
.
APPLICATION_JSON_VALUE
)
public
Flux
<
BPN
>
uploadHandler
(
@RequestBody
Flux
<
Part
>
parts
)
{
log
.
info
(
"file upload {}"
,
parts
);
return
parts
.
filter
(
part
->
part
instanceof
FilePart
)
// only retain file parts
.
ofType
(
FilePart
.
class
)
// convert the flux to FilePart
.
flatMap
(
filePart
->
{
try
{
byte
[]
fileBytes
=
file
.
getBytes
();
// Perform operations with fileBytes as needed
return
ResponseEntity
.
ok
(
"File uploaded successfully!"
);
return
fileUploadService
.
saveExcelData
(
filePart
);
}
catch
(
IOException
e
)
{
log
.
error
(
"Error processing the file: {}"
,
e
.
getMessage
());
return
ResponseEntity
.
status
(
HttpStatus
.
INTERNAL_SERVER_ERROR
).
body
(
"Error processing the file."
);
}
}
@PostMapping
(
"/upload"
)
public
ResponseEntity
<
String
>
uploadExcel
(
@RequestParam
(
"file"
)
MultipartFile
file
)
{
fileUploadService
.
processExcelSheet
(
file
);
return
ResponseEntity
.
ok
(
"File uploaded successfully!"
);
}
@PostMapping
(
"/importExcel"
)
public
ResponseEntity
<
String
>
importExcel
(
@RequestParam
(
"excel"
)
MultipartFile
file
,
BPN
bpn
)
{
try
{
fileUploadService
.
processExcelSheet
(
file
);
return
ResponseEntity
.
ok
(
"File uploaded successfully!"
);
}
catch
(
Exception
e
)
{
return
ResponseEntity
.
badRequest
().
body
(
"Bad Request ss: "
+
e
.
getMessage
());
throw
new
RuntimeException
(
e
);
}
});
}
}
src/main/java/com/nisum/task/entity/BPN.java
View file @
b8741e83
...
...
@@ -21,8 +21,8 @@ public class BPN {
private
String
rog
;
private
String
fac
;
private
String
forceOptCd
;
private
Date
firstEffectiveDate
;
private
Date
lasttEffectiveDate
;
private
String
firstEffectiveDate
;
private
String
lasttEffectiveDate
;
private
String
bpnStatus
;
private
String
bpnProcessMessage
;
private
Date
createdTime
;
...
...
src/main/java/com/nisum/task/service/BPNService.java
View file @
b8741e83
...
...
@@ -20,7 +20,7 @@ public class BPNService {
private
BPNRepository
bpnRepository
;
public
Mono
<
BPN
>
saveBPN
(
BPN
bpn
)
{
bpn
.
setFirstEffectiveDate
(
new
Date
());
bpn
.
setFirstEffectiveDate
(
new
Date
()
.
toString
()
);
bpn
.
setCreatedTime
(
new
Date
());
bpn
.
setUpdatedTime
(
new
Date
());
log
.
info
(
"bpn {} "
,
bpn
);
...
...
@@ -89,7 +89,7 @@ public class BPNService {
private
BPN
setAllFieldsToEntity
(
BPN
bpnDB
,
BPNDto
uiBPN
)
{
bpnDB
.
setBpnStatus
(
uiBPN
.
getForceOptCd
());
bpnDB
.
setLasttEffectiveDate
(
uiBPN
.
getLasttEffectiveDate
());
bpnDB
.
setLasttEffectiveDate
(
uiBPN
.
getLasttEffectiveDate
()
.
toString
()
);
bpnDB
.
setUpdatedTime
(
new
Date
());
bpnDB
.
setFac
(
uiBPN
.
getFac
()
!=
null
?
uiBPN
.
getFac
()
:
""
);
bpnDB
.
setForceOptCd
(
uiBPN
.
getForceOptCd
());
...
...
src/main/java/com/nisum/task/service/FileUploadService.java
View file @
b8741e83
...
...
@@ -2,21 +2,22 @@ package com.nisum.task.service;
import
com.nisum.task.entity.BPN
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.poi.ss.usermodel.*
;
import
org.apache.poi.xssf.usermodel.XSSFRow
;
import
org.apache.poi.xssf.usermodel.XSSFSheet
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.io.buffer.DataBuffer
;
import
org.springframework.http.codec.multipart.FilePart
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.multipart.MultipartFile
;
import
reactor.core.publisher.Flux
;
import
java.io.ByteArrayInputStream
;
import
java.io.IOException
;
import
java.nio.file.FileAlreadyExistsException
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
import
java.nio.ByteBuffer
;
import
java.nio.file.*
;
import
java.text.DecimalFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
@Service
...
...
@@ -25,54 +26,35 @@ public class FileUploadService {
@Autowired
private
BPNService
bpnService
;
private
final
Path
root
=
Paths
.
get
(
"uploads"
);
public
Flux
<
BPN
>
saveExcelData
(
FilePart
filePart
)
throws
IOException
{
public
Flux
<
BPN
>
uploadFile
(
MultipartFile
file
)
throws
IOException
{
Flux
<
DataBuffer
>
dataBufferFlux
=
filePart
.
content
();
// Convert the Flux of DataBuffers to a byte array
byte
[]
bytes
=
dataBufferFlux
.
collectList
().
block
().
stream
()
.
map
(
DataBuffer:
:
asByteBuffer
)
.
reduce
(
ByteBuffer:
:
put
)
.
orElse
(
ByteBuffer
.
allocate
(
0
))
.
array
();
List
<
BPN
>
tempBPNList
=
new
ArrayList
<>();
XSSFWorkbook
workbook
=
new
XSSFWorkbook
(
file
.
getInputStream
(
));
XSSFWorkbook
workbook
=
new
XSSFWorkbook
(
new
ByteArrayInputStream
(
bytes
));
XSSFSheet
worksheet
=
workbook
.
getSheetAt
(
0
);
log
.
info
(
"worksheet {} "
,
worksheet
);
for
(
int
i
=
1
;
i
<
worksheet
.
getPhysicalNumberOfRows
();
i
++)
{
BPN
tempBPN
=
new
BPN
();
XSSFRow
row
=
worksheet
.
getRow
(
i
);
tempBPN
.
setBpn
(
String
.
valueOf
(
row
.
getCell
(
0
)));
tempBPN
.
setBpn
(
String
.
format
(
"%.0f"
,
row
.
getCell
(
0
).
getNumericCellValue
(
)));
tempBPN
.
setForceOptCd
(
String
.
valueOf
(
row
.
getCell
(
1
)));
tempBPN
.
setLasttEffectiveDate
(
String
.
valueOf
(
row
.
getCell
(
2
)));
tempBPNList
.
add
(
tempBPN
);
}
log
.
info
(
"Data {}"
,
tempBPNList
);
return
Flux
.
empty
();
}
public
void
save
(
MultipartFile
file
)
{
try
{
Files
.
createDirectories
(
root
);
Files
.
copy
(
file
.
getInputStream
(),
this
.
root
.
resolve
(
file
.
getOriginalFilename
()));
}
catch
(
Exception
e
)
{
if
(
e
instanceof
FileAlreadyExistsException
)
{
throw
new
RuntimeException
(
"A file of that name already exists."
);
}
throw
new
RuntimeException
(
e
.
getMessage
());
}
log
.
info
(
"Data {}"
,
tempBPNList
);
return
Flux
.
fromIterable
(
tempBPNList
).
flatMap
(
bpn
->
bpnService
.
saveBPN
(
bpn
));
}
public
void
processExcelSheet
(
MultipartFile
file
)
{
try
{
Files
.
createDirectories
(
root
);
Files
.
copy
(
file
.
getInputStream
(),
this
.
root
.
resolve
(
file
.
getOriginalFilename
()));
log
.
info
(
"file imported successfully"
);
}
catch
(
Exception
e
)
{
if
(
e
instanceof
FileAlreadyExistsException
)
{
throw
new
RuntimeException
(
"A file of that name already exists."
);
}
throw
new
RuntimeException
(
e
.
getMessage
());
}
}
}
src/main/java/com/nisum/task/service/SmicService.java
View file @
b8741e83
...
...
@@ -38,7 +38,7 @@ public class SmicService {
return
bpnService
.
findByRog
(
smic
.
getRog
()).
flatMap
(
bpn
->
{
bpn
.
setBpnStatus
(
smic
.
getForceOptCd
());
bpn
.
setForceOptCd
(
smic
.
getForceOptCd
());
bpn
.
setLasttEffectiveDate
(
smic
.
getLasttEffectiveDate
());
bpn
.
setLasttEffectiveDate
(
smic
.
getLasttEffectiveDate
()
.
toString
()
);
return
bpnService
.
saveBPN
(
bpn
);
});
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment