2

Am trying to create a new Map <String, List<String>> headErrors with selective elements from another Map <String, List<String>> invoiceErrorLines

invoiceErrorLines = ['1660277':['Line : 1 Invoice does not foot Reported', 'Line : 2 MATH ERROR'], 
                    '1660278':['Line : 5 Invoice does not foot Reported', 'cl_id is a required field'], 
                    '1660279':['Line : 7 could not parse date ', 'File Error : The file doesnt have delimiter'], 
                    '1660280':['Line : 9 Invoice error']]
def regex = "^Line\\s(?:(\\d+)\\s)?\\s*:\\s+(\\d+)?.+"
def headErrors = invoiceErrorLines.each{ inv ->
   inv.value.findAll{it.contains('Invoice does not foot Reported') || !(it ==~ regex) }.groupBy{inv.key} 
}

New Map should contain invoice numbers as key and its corresponding error messages which doesnt match regex = "^Line\\s(?:(\\d+)\\s)?\\s*:\\s+(\\d+)?.+" but contains Invoice does not foot Reported

When I print headErrors am seeing the same map as invoiceErrorLines but am expecting the headErrors as below

headErrors = ['1660277':['Line : 1 Invoice does not foot Reported'], 
              '1660278':['Line : 5 Invoice does not foot Reported', 'cl_id is a required field'], 
              '1660279':['File Error : The file doesnt have delimiter'] 
             ]

Can someone help me with this?

OTUser
  • 3,788
  • 19
  • 69
  • 127

1 Answers1

3

With

def headErrors = invoiceErrorLines.collectEntries{ key, value ->
   value.findAll{ it.contains('Invoice does not foot Reported') || !(it ==~ regex) }.groupBy{ key }
}

it yields

[1660277:[Line : 1 Invoice does not foot Reported], 1660278:[Line : 5 Invoice does not foot Reported, cl_id is a required field], 1660279:[File Error : The file doesnt have delimiter]]
jalopaba
  • 8,039
  • 2
  • 44
  • 57
  • Thanks for the answer. I appreciate it. Can you also help me with this http://stackoverflow.com/questions/29570648/java-8-find-and-replace-matching-strings – OTUser Apr 10 '15 at 21:39
  • can you please help me solving this problem? https://stackoverflow.com/questions/47717505/groovy-create-a-map-with-jax-b-objects-specific-attributes – OTUser Dec 08 '17 at 19:40