Hi I'm trying to create Map<String, Map<String, List>>.
I want it to represent "Map<Owner Name, Map<Status, List< Work Orders>>>". In the debug log it is adding every record to every map and I don't understand why. According to documentation when calling map.get(key) it should only add the value to that instance. Maybe I am misunderstanding or possibly I'm overlooking something but I can't figure out what.
public class NewReport_Controller
{
public Map<String, Map<String, List<WorkOrder>>> AllOwnersToWos {get; set;}
public Map <String, List<WorkOrder>> mapStatusToWorkOrders {get; set;}
public Set<String> RecordOwners {get; set;}
public Set<String> Statuses{get; set;}
public List<WorkOrder> lstWOs {get; set;}
public NewReport_Controller()
{
AllOwnersToWos = new Map<String, Map<String, List<WorkOrder>>>();
mapStatusToWorkOrders = new Map <String, List<WorkOrder>>();
RecordOwners = new Set<String>();
Statuses = new Set<String>();
lstWOs = [Select contract__r.ContractNumber, owner.LastName, owner.FirstName, status, serviceTerritory.name, serviceTerritory.Street, subject, invoice_amount__c from WorkOrder order by Status limit 7];
for (WorkOrder wo : lstWOs )
{
//Add full name to Record Owner Set / Add Status' to Status Set
String name = wo.Owner.FirstName + ' ' + wo.Owner.LastName;
System.debug('Name: ' + name + ', Status: ' + wo.Status);
Statuses.add(wo.status);
List<WorkOrder> wos = new List<WorkOrder>();
//create map<Owners, Map<Status, List<WorkOrder>>>
if(AllOwnersToWos.containsKey(name))
{
//if map contains Status then add work order
if(AllOwnersToWos.get(name).containsKey(wo.status))
{
AllOwnersToWos.get(name).get(wo.status).add(wo);
}
else
{
wos.add(wo);
AllOwnersToWos.get(name).put(wo.status, wos);
}
}
else
{
wos.add(wo);
mapStatusToWorkOrders.put(wo.status, wos);
AllOwnersToWos.put(name, mapStatusToWorkOrders);
}
}
}
}
.get
and what is expected? Keep in mind that you haven't put the declaration ofAllOwnersToWos
and also thatmapStatusToWorkOrders
doesn't seem to be initialized inside the loopMap
key that has spaces in it. I can't reference anything to back up my position, but my gut is telling me that this is trouble waiting to happen....