public void add(ImageMetadata metadata, int imageOrder) { String key = metadata.getKey(); String source = metadata.getSource().toString(); keyLength = Math.max(keyLength, key.length()); sourceLength = Math.max(sourceLength, source.length()); if (metadata.getUnit() != null) unitLength = Math.max(unitLength, metadata.getUnit().length()); if (metadata.getValue() != null) { if (metadata.getUnit() != null) { valueWithUnitLength[imageOrder] = Math.max(valueWithUnitLength[imageOrder], metadata.getValue().toString().length()); } valueLength = Math.max(valueLength, metadata.getValue().toString().length()); } if (!metadataByKeyName.containsKey(key)) { metadataByKeyName.put(key, new HashMap<String, ImageMetadata[]>()); } if (!metadataByKeyName.get(key).containsKey(source)) { metadataByKeyName.get(key).put(source, new ImageMetadata[2]); } metadataByKeyName.get(key).get(source)[imageOrder] = metadata; }