protected static String getSyncedDelayString(StructStorageStat[] storageStats, StructStorageStat currentStorageStat) {
        long maxLastSourceUpdate = 0;
        for (StructStorageStat storageStat : storageStats) {
            if (storageStat != currentStorageStat && storageStat.getLastSourceUpdate().getTime() > maxLastSourceUpdate) {
                maxLastSourceUpdate = storageStat.getLastSourceUpdate().getTime();
            }
        }

        if (maxLastSourceUpdate == 0) {
            return "";
        }

        if (currentStorageStat.getLastSyncedTimestamp().getTime() == 0) {
            return " (never synced)";
        }

        int delaySeconds = (int) ((maxLastSourceUpdate - currentStorageStat.getLastSyncedTimestamp().getTime()) / 1000);
        int day = delaySeconds / (24 * 3600);
        int remainSeconds = delaySeconds % (24 * 3600);
        int hour = remainSeconds / 3600;
        remainSeconds %= 3600;
        int minute = remainSeconds / 60;
        int second = remainSeconds % 60;
        String delayTimeStr;
        if (day != 0) {
            delayTimeStr = String.format("%1$d days %2$02dh:%3$02dm:%4$02ds", day, hour, minute, second);
        } else if (hour != 0) {
            delayTimeStr = String.format("%1$02dh:%2$02dm:%3$02ds", hour, minute, second);
        } else if (minute != 0) {
            delayTimeStr = String.format("%1$02dm:%2$02ds", minute, second);
        } else {
            delayTimeStr = String.format("%1$ds", second);
        }

        return " (" + delayTimeStr + " delay)";
    }