A few months ago I changed ReportChartCreator.java to expose the device
name and point name separately (previously ftl 'name' referred to
'extendedName'), and sort reported points by device.

ReportChartCreator.java:
1. import java.util.HashMap if it isn't.
2. Declare hashmap ~94; private HashMap<String, HashMap<String,
PointStatistics>> devices;
3. Call the stream handler to get our devices ~126: devices =
handler.getDevices();
4. Put this into the data model ~140: model.put("devices", devices);
5. Put a deviceName into the PointStatistics class ~293: private String
deviceName;
6. Add the gets and sets.
7. Declare a hashmap in the streamhandler ~499: private HashMap<String,
HashMap<String, PointStatistics>> devices;
8. Instantiate said hashmap ~505: devices = new HashMap<String,
HashMap<String, PointStatistics>>();
9. Add getDevices() method ~529: public HashMap<String, HashMap<String,
PointStatistics>> getDevices() {
			return devices;
		}
10. Add call to place devices in the hashmap ~537:
addDeviceIfAbsent(pointInfo.getDeviceName());
11. Add call to put points into our device map ~549:
devices.get(point.getDeviceName()).put(point.getName(), point);
12. Add the "addDeviceIfAbsent" method ~649: private void
addDeviceIfAbsent(String deviceName) {
			if(devices.containsKey(deviceName))
				return;
			devices.put(deviceName, new HashMap<String, PointStatistics>());
		}
13. Modify the point.setName call in startPoint(..) to not use the
extended name: ~540: point.setName(pointInfo.getPointName());

Compatibility issues: Anyone who really enjoyed seeing their device
names in the default reportChart.ftl will be sourly disappointed unless
we modify the default ftl for this release as well.