Product:
+-------------+--------------+-------+
| ProductCode |  OrderDate   | User  |
+-------------+--------------+-------+
|      100    | 2015-01-01   | John  |
|      100    | 2015-01-01   | Peter |
|      100    | 2015-01-02   | Max   |
|      200    | 2015-01-01   | Max   |
|      200    | 2015-01-05   | John  |
|      300    | 2015-01-10   | Peter |
+-------------+--------------+-------+
Expected JSON structure:
{
"100": {
    "2015-01-01": {
        "Jon": {
            "spent": "...",
            "comment": "..."
        },
        "Peter": {
            "spent": "...",
            "comment": "..."
        }
    },
    "2015-01-02": {
        "Max": {
            "spent": "...",
            "comment": "..."
        }
    }
},
"200": {
    "2015-01-01": {
        "Max": {
            "spent": "...",
            "comment": "..."
        }
    },
    "2015-01-05": {
        "Jon": {
            "spent": "...",
            "comment": "..."
        }
    }
},
"300": {
    "2015-01-10": {
        "Peter": {
            "spent": "...",
            "comment": "..."
        }
    }
}
}
What I have done so far:
//Create ListMultimap
ListMultimap<String, Product> productCodeMap = ArrayListMultimap.create();
ListMultimap<String, Product> productDateMap = ArrayListMultimap.create();
ListMultimap<String, Product> productUserMap = ArrayListMultimap.create();
//Fetch products
products  = dao.getProducts();
//Create map with relevant keys
for(Product product : products){
    productCodeMap.put(product.getProductCode(), product);
}
for(String productDate : productCodeMap.keySet()){
    for(Product product : productCodeMap.get(productDate)){
        productDateMap.put(product.getProductOrderDate(), product);
    }
}
for(String productUser : productDateMap.keySet()){
    for(Product product : productDateMap.get(productDate)){
        productUserMap.put(productUser, product);
    }
}
How should I iterate the maps to generate desired JSON structure? Should I use a different collection datastructure instead?
I am using Jackson Streaming API to generate the JSON.
Will be great even if you could suggest to generate equivalent JAVA String as what I am really doing is generating a JSON by manual writing.
