All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.greencheek.related.indexing.locationmappers.HourBasedStorageLocationMapper Maven / Gradle / Ivy

/*
 *
 *  * Licensed to Relateit under one or more contributor
 *  * license agreements. See the NOTICE file distributed with
 *  * this work for additional information regarding copyright
 *  * ownership. Relateit licenses this file to you under
 *  * the Apache License, Version 2.0 (the "License"); you may
 *  * not use this file except in compliance with the License.
 *  * You may obtain a copy of the License at
 *  *
 *  *    http://www.apache.org/licenses/LICENSE-2.0
 *  *
 *  * Unless required by applicable law or agreed to in writing,
 *  * software distributed under the License is distributed on an
 *  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 *  * KIND, either express or implied.  See the License for the
 *  * specific language governing permissions and limitations
 *  * under the License.
 *
 */

package org.greencheek.related.indexing.locationmappers;

import org.greencheek.related.api.indexing.RelatedItem;
import org.greencheek.related.indexing.RelatedItemStorageLocationMapper;
import org.greencheek.related.indexing.util.UTCCurrentDateAndHourFormatter;
import org.greencheek.related.util.config.Configuration;


/**
 * Creates an index name based on the current hour : [indexnameprefix]-yyyy-MM-dd_HH
 */
public class HourBasedStorageLocationMapper implements RelatedItemStorageLocationMapper {

    private final String indexPrefixName;
    private final UTCCurrentDateAndHourFormatter currentDayFormatter;
    private final int indexNameSize;

    public HourBasedStorageLocationMapper(Configuration configuration,
                                          UTCCurrentDateAndHourFormatter dateFormatter) {
        String s = configuration.getStorageIndexNamePrefix();
        this.indexPrefixName = s.endsWith("-") ? s : s + "-";
        currentDayFormatter = dateFormatter;

        indexNameSize = indexPrefixName.length() + 13;

    }

    @Override
    public String getLocationName(RelatedItem product) {
        String dateStr = product.getDate();
        String date;
        if(dateStr==null) {
            date = currentDayFormatter.getCurrentDayAndHour();
        } else {
            date = currentDayFormatter.parseToDateAndHour(dateStr);
        }


        StringBuilder indexName = new StringBuilder(indexNameSize);
        return indexName.append(this.indexPrefixName).append(date).toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy