public NexusTile setTimeFromGranuleName()

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();
    }