in src/main/java/org/apache/sdap/ningester/processors/AddTimeFromGranuleName.java [43:85]
    public NexusTile setTimeFromGranuleName(NexusTile inputTile) {
        NexusTile.Builder outTileBuilder = NexusTile.newBuilder().mergeFrom(inputTile);
        switch (inputTile.getTile().getTileTypeCase()) {
            case GRID_TILE:
                String granuleName = inputTile.getSummary().getGranule();
                Matcher granuleNameMatcher = this.regex.matcher(granuleName);
                Boolean granuleNameMatched = granuleNameMatcher.find();
                if (!granuleNameMatched) {
                    throw new RuntimeException("regex did not match granuleName.");
                }
                if (granuleNameMatcher.groupCount() != 1) {
                    throw new RuntimeException("regex does not have exactly one capturing group.");
                }
                if (granuleNameMatcher.group(1).length() <= 0) {
                    throw new RuntimeException("group does not contain match.");
                }
                String dateTimeString = granuleNameMatcher.group(1);
                Date dateTime = null;
                try {
                    dateTime = dateFormat.parse(dateTimeString);
                } catch (ParseException e) {
                    throw new RuntimeException(e);
                }
                Long secondsSinceEpoch = (dateTime.getTime() / 1000);
                outTileBuilder.getTileBuilder().getGridTileBuilder().setTime(secondsSinceEpoch);
                outTileBuilder.getSummaryBuilder().getStatsBuilder().setMinTime(secondsSinceEpoch);
                outTileBuilder.getSummaryBuilder().getStatsBuilder().setMaxTime(secondsSinceEpoch);
                break;
            default:
                throw new UnsupportedOperationException("Can only handle GridTile at this time.");
        }
        return outTileBuilder.build();
    }