Use boolean flags to differentiate base and support RIMs with multi-file uploads

This commit is contained in:
chubtub 2024-05-07 17:28:06 -04:00
parent e7889ca5fb
commit 30de99e15b

View File

@ -160,14 +160,14 @@ public class ReferenceManifestPageController extends PageController<NoPageParams
Pattern baseRimPattern = Pattern.compile(BASE_RIM_FILE_PATTERN); Pattern baseRimPattern = Pattern.compile(BASE_RIM_FILE_PATTERN);
Pattern supportRimPattern = Pattern.compile(SUPPORT_RIM_FILE_PATTERN); Pattern supportRimPattern = Pattern.compile(SUPPORT_RIM_FILE_PATTERN);
Matcher matcher; Matcher matcher;
boolean isBaseRim = false;
boolean isSupportRim = false;
List<BaseReferenceManifest> baseRims = new ArrayList<>(); List<BaseReferenceManifest> baseRims = new ArrayList<>();
List<SupportReferenceManifest> supportRims = new ArrayList<>(); List<SupportReferenceManifest> supportRims = new ArrayList<>();
log.info(String.format("Processing %s uploaded files", files.length)); log.info(String.format("Processing %s uploaded files", files.length));
// loop through the files // loop through the files
for (MultipartFile file : files) { for (MultipartFile file : files) {
boolean isBaseRim;
boolean isSupportRim = false;
fileName = file.getOriginalFilename(); fileName = file.getOriginalFilename();
matcher = baseRimPattern.matcher(fileName); matcher = baseRimPattern.matcher(fileName);
isBaseRim = matcher.matches(); isBaseRim = matcher.matches();
@ -175,16 +175,15 @@ public class ReferenceManifestPageController extends PageController<NoPageParams
matcher = supportRimPattern.matcher(fileName); matcher = supportRimPattern.matcher(fileName);
isSupportRim = matcher.matches(); isSupportRim = matcher.matches();
} }
if (!isBaseRim && !isSupportRim) { if (isBaseRim || isSupportRim) {
parseRIM(file, isSupportRim, messages, baseRims, supportRims);
} else {
String errorString = "The file extension of " + fileName + " was not recognized." + String errorString = "The file extension of " + fileName + " was not recognized." +
" Base RIMs support the extension \".swidtag\", and support RIMs support " + " Base RIMs support the extension \".swidtag\", and support RIMs support " +
"\".rimpcr\", \".rimel\", \".bin\", and \".log\". " + "\".rimpcr\", \".rimel\", \".bin\", and \".log\". " +
"Please verify your upload and retry."; "Please verify your upload and retry.";
log.error("File extension in " + fileName + " not recognized as base or support RIM."); log.error("File extension in " + fileName + " not recognized as base or support RIM.");
messages.addError(errorString); messages.addError(errorString);
} else {
//Parse reference manifests
parseRIM(file, isSupportRim, messages, baseRims, supportRims);
} }
} }
baseRims.stream().forEach((rim) -> { baseRims.stream().forEach((rim) -> {
@ -412,13 +411,14 @@ public class ReferenceManifestPageController extends PageController<NoPageParams
if (referenceManifestRepository.findByHexDecHashAndRimType( if (referenceManifestRepository.findByHexDecHashAndRimType(
supportRim.getHexDecHash(), supportRim.getRimType()) == null) { supportRim.getHexDecHash(), supportRim.getRimType()) == null) {
supportRims.add(supportRim); supportRims.add(supportRim);
messages.addInfo("Saved Reference Manifest " + fileName); messages.addInfo("Saved support RIM " + fileName);
} }
} else { } else {
baseRim = new BaseReferenceManifest(fileName, fileBytes); baseRim = new BaseReferenceManifest(fileName, fileBytes);
if (referenceManifestRepository.findByHexDecHashAndRimType( if (referenceManifestRepository.findByHexDecHashAndRimType(
baseRim.getHexDecHash(), baseRim.getRimType()) == null) { baseRim.getHexDecHash(), baseRim.getRimType()) == null) {
baseRims.add(baseRim); baseRims.add(baseRim);
messages.addInfo("Saved base RIM " + fileName);
} }
} }
} catch (IOException | NullPointerException ioEx) { } catch (IOException | NullPointerException ioEx) {
@ -431,6 +431,10 @@ public class ReferenceManifestPageController extends PageController<NoPageParams
= String.format("Failed to parse base RIM file (%s): ", fileName); = String.format("Failed to parse base RIM file (%s): ", fileName);
log.error(failMessage, e); log.error(failMessage, e);
messages.addError(failMessage + e.getMessage()); messages.addError(failMessage + e.getMessage());
} catch (Exception e) {
final String failMessage
= String.format("Failed to parse (%s): ", fileName);
log.error(failMessage, e);
} }
} }