<prompt> Tengeneza programu ya Java Spring Boot ambayo hutoa mwisho wa kupakia na kuchakata faili kubwa za maandishi. Programu inapaswa kuhesabu matukio ya kila neno kwenye faili na kuhifadhi matokeo katika hifadhidata ya MongoDB.PLINFORMAT  <response>: kifurushi com.example.demo.model;agiza org.springframework.data.annotation.Id;kuagiza org.springframework.data.mongodb.core.mapping.Document;Documentmkusanyiko neno_matukioNenoOccurrence ya darasa la umma kitambulisho kitambulisho cha Kamba ya kibinafsi; neno la kamba ya kibinafsi; hesabu ya int ya kibinafsi; NenoOccurrence ya ummaNeno la kamba, hesabu ya int hili.neno neno; hii.hesabu hesabu; Wapataji na wawekajikifurushi cha com.example.demo.repository;agiza com.example.demo.model.WordOccurrence;agiza org.springframework.data.mongodb.repository.MongoRepository;kiolesura cha umma WordOccurrenceRepository huongeza MongoRepository kifurushi com.example.demo.service;agiza com.example.demo.model.WordOccurrence;agiza com.example.demo.repository.WordOccurrenceRepository;import org.springframework.beans.factory.annotation.Autowired;kuagiza org.springframework.stereotype.Service;agiza org.springframework.web.multipart.MultipartFile;agiza java.io.BufferedReader;agiza java.io.IOException;agiza java.io.InputStreamReader;agiza java.util.HashMap;agiza java.util.Map;Hudumadarasa la umma TextProcessingService Ina waya otomatiki Neno la siriTukioHifadhiNeno la Utukio; public void processTextFileMultipartFile file inatupa IOException Ramani wordCountMap new HashMap; jaribu Msomaji wa BufferedReader BufferedReader mpyampya InputStreamReaderfile.getInputStream Mstari wa kamba; wakati line reader.readLine ! null Kamba maneno line.splits; kwa Neno la mfuatano: maneno neno neno.toLowerCase.replaceAlla-z0-9, ; ikiwa !word.isEmpty wordCountMap.putneno, wordCountMap.getOrDefaultneno, 0 1; kwa Map.Entry ingizo : wordCountMap.entrySet NenoOccurrence wordOccurrence new WordOccurrenceentry.getKey, entry.getValue; nenoOccurrenceRepository.hifadhiwordOccurrence; kifurushi cha com.example.demo.controller;agiza com.example.demo.service.TextProcessingService;import org.springframework.beans.factory.annotation.Autowired;agiza org.springframework.http.HttpStatus;agiza org.springframework.http.ResponseEntity;agiza org.springframework.web.bind.annotation.PostMapping;agiza org.springframework.web.bind.annotation.RequestParam;agiza org.springframework.web.bind.annotation.RestController;agiza org.springframework.web.multipart.MultipartFile;RestControllerFileUploadController ya darasa la umma Ina waya otomatiki binafsi TextProcessingService textProcessingService; PostMappingpakia public ResponseEntity uploadFileRequestParamfaili MultipartFile file ikiwa file.isEmpty rudisha ResponseEntity mpyaTafadhali chagua faili ya kupakia, HttpStatus.BAD_REQUEST; jaribu textProcessingService.processTextFilefaili; rudisha ResponseEntity mpyaFaili imepakiwa na kuchakatwa kwa mafanikio, HttpStatus.OK; kukamata Isipokuwa e rudisha ResponseEntity mpyaHitilafu katika kuchakata faili: e.getMessage, HttpStatus.INTERNAL_SERVER_ERROR; 