private List<CoordSysSet> wireObjectsTogether(List<Coverage> coverages) {
for (CoverageCoordAxis axis : coordAxes)
axisMap.put(axis.getName(), axis);
for (CoverageCoordAxis axis : coordAxes)
axis.setDataset(this);
Map<String, CoordSysSet> map = new HashMap<>();
for (Coverage coverage : coverages) {
coverageMap.put(coverage.getName(), coverage);
CoordSysSet gset = map.get(coverage.getCoordSysName());
if (gset == null) {
CoverageCoordSys ccsys = findCoordSys(coverage.getCoordSysName());
if (ccsys == null) {
throw new IllegalStateException("Cant find "+coverage.getCoordSysName());
}
gset = new CoordSysSet(ccsys);
map.put(coverage.getCoordSysName(), gset);
gset.getCoordSys().setDataset(this);
}
gset.addCoverage(coverage);
coverage.setCoordSys(gset.getCoordSys());
}
List<CoordSysSet> csets = new ArrayList<>(map.values());
Collections.sort(csets, (o1, o2) -> o1.getCoordSys().getName().compareTo(o2.getCoordSys().getName()));
return csets;
}