/** * Creates a map containing the highest doc number from a collection of attachments for each type * code. * * @param <T> the type * @param attachments the collection of attachments * @return the map */ private Map<String, Integer> createTypeToMaxDocNumber(List<SubAwardAttachments> attachments) { final Map<String, Integer> typeToDocNumber = new HashMap<String, Integer>(); for (SubAwardAttachments attachment : attachments) { final Integer curMax = typeToDocNumber.get(attachment.getSubAwardAttachmentTypeCode()); if (curMax == null || curMax.intValue() < attachment.getDocumentId().intValue()) { typeToDocNumber.put(attachment.getSubAwardAttachmentTypeCode(), attachment.getDocumentId()); } } return typeToDocNumber; }
/** * assigns a document id to all attachments in the passed in collection based on the passed in * type to doc number map. * * @param <T> the type of attachments * @param attachments the collection of attachments that require doc number assignment * @param typeToDocNumber the map that contains all the highest doc numbers of existing * attachments based on type code */ private void assignDocumentId( List<SubAwardAttachments> attachments, final Map<String, Integer> typeToDocNumber) { for (SubAwardAttachments attachment : attachments) { if (attachment.isNew()) { final Integer nextDocNumber = SubAwardAttachmentFormBean.createNextDocNumber( typeToDocNumber.get(attachment.getSubAwardAttachmentTypeCode())); attachment.setDocumentId(nextDocNumber); } } }