Package org.apache.oodt.cas.filemgr.metadata.extractors.examples

Source Code of org.apache.oodt.cas.filemgr.metadata.extractors.examples.DateTimeExpandMetExtractor

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF 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.apache.oodt.cas.filemgr.metadata.extractors.examples;

// OODT imports
import org.apache.oodt.cas.filemgr.metadata.extractors.AbstractFilemgrMetExtractor;
import org.apache.oodt.cas.filemgr.structs.Product;
import org.apache.oodt.cas.metadata.Metadata;
import org.apache.oodt.cas.metadata.exceptions.MetExtractionException;
import org.apache.oodt.cas.metadata.util.PathUtils;

// Google imports
import com.google.common.base.Strings;

/**
* Expands a given metadata date time field out into multiple metadata fields (i.e. year, month,
* day, hour, minute, and second).
*
* @author bfoster@apache.org (Brian Foster)
*/
public class DateTimeExpandMetExtractor extends AbstractFilemgrMetExtractor {

  private static final String FULL_DATE_TIME_KEY = "FullDateTimeKey";
  private static final String FULL_DATE_TIME_FORMAT = "FullDateTimeFormat";

  private static final String YEAR_KEY = "YearKey";
  private static final String MONTH_KEY = "MonthKey";
  private static final String DAY_KEY = "DayKey";
  private static final String HOUR_KEY = "HourKey";
  private static final String MINUTE_KEY = "MinuteKey";
  private static final String SECOND_KEY = "SecondKey";

  private String fullDateTimeKey;
  private String fullDateTimeFormat;
  private String yearKey;
  private String monthKey;
  private String dayKey;
  private String hourKey;
  private String minuteKey;
  private String secondKey;

  @Override
  public void doConfigure() {
    fullDateTimeKey = getKey(FULL_DATE_TIME_KEY);
    fullDateTimeFormat = getKey(FULL_DATE_TIME_FORMAT);
    yearKey = getKey(YEAR_KEY);
    monthKey = getKey(MONTH_KEY);
    dayKey = getKey(DAY_KEY);
    hourKey = getKey(HOUR_KEY);
    minuteKey = getKey(MINUTE_KEY);
    secondKey = getKey(SECOND_KEY);
  }

  @Override
  public Metadata doExtract(Product product, Metadata metadata) throws MetExtractionException {
    String fullDateTime = getFullDateTime(metadata);

    createDateField(metadata, yearKey, fullDateTime, fullDateTimeFormat, "yyyy");
    createDateField(metadata, monthKey, fullDateTime, fullDateTimeFormat, "MM");
    createDateField(metadata, dayKey, fullDateTime, fullDateTimeFormat, "dd");
    createDateField(metadata, hourKey, fullDateTime, fullDateTimeFormat, "HH");
    createDateField(metadata, minuteKey, fullDateTime, fullDateTimeFormat, "mm");
    createDateField(metadata, secondKey, fullDateTime, fullDateTimeFormat, "ss");
    return metadata;
  }

  private String getKey(String key) {
    if (configuration.containsKey(key)) {
      return configuration.getProperty(key);
    } else {
      return null;
    }
  }

  private String getFullDateTime(Metadata metadata)
       throws MetExtractionException {
    if (!Strings.isNullOrEmpty(fullDateTimeKey)) {
      return metadata.getMetadata(fullDateTimeKey);
    } else {
      throw new MetExtractionException("Failed to find DateTimeKey " + fullDateTimeKey);
    }
  }

  private void createDateField(Metadata metadata, String fieldKey, String fullDateTime,
      String fullDateTimeFormat, String fieldFormat) throws MetExtractionException {
    if (!Strings.isNullOrEmpty(fieldKey)) {
      try {
        metadata.addMetadata(fieldKey, PathUtils.doDynamicReplacement(String.format(
            "[FORMAT(%s,%s,%s)]", fullDateTimeFormat, fullDateTime, fieldFormat)));
      } catch (Exception e) {
        throw new MetExtractionException(String.format(
            "Failed to create field for key %s from fullDateTime %s and fullDateTimeFormat %s",
            fieldKey, fullDateTime, fullDateTimeFormat), e);
      }
    }
  }
}
TOP

Related Classes of org.apache.oodt.cas.filemgr.metadata.extractors.examples.DateTimeExpandMetExtractor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.