/** * Copyright (C) 2014-2016 LinkedIn Corp. (pinot-core@linkedin.com) * * Licensed 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 com.linkedin.pinot.core.query.utils; import com.linkedin.pinot.common.data.MetricFieldSpec; import com.linkedin.pinot.common.segment.StarTreeMetadata; import com.linkedin.pinot.core.segment.creator.impl.V1Constants; import com.linkedin.pinot.core.startree.hll.HllConstants; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import javax.annotation.Nullable; import org.apache.commons.configuration.Configuration; import org.joda.time.Duration; import org.joda.time.Interval; import com.linkedin.pinot.common.data.Schema; import com.linkedin.pinot.common.segment.SegmentMetadata; public class SimpleSegmentMetadata implements SegmentMetadata { private static final String SEGMENT_SIZE = "segment.size"; private String _resourceName; private String _indexType; private Duration _timeGranularity; private Interval _interval; private String _crc; private String _version; private Schema _schema; private String _shardingKey; private long _size; private String _segmentName; private char _paddingCharacter = V1Constants.Str.DEFAULT_STRING_PAD_CHAR; public SimpleSegmentMetadata(String resourceName) { init(resourceName, new Schema()); } public SimpleSegmentMetadata(String resourceName, Schema schema) { init(resourceName, schema); } public SimpleSegmentMetadata() { } private void init(String resourceName, Schema schema) { _resourceName = resourceName; _schema = schema; // Added thread name so that concurrent calls to this method generate unique names. // Assumes multiple calls from same thread do not generate same _crc. _crc = System.currentTimeMillis() + ""; _segmentName = "SimpleSegment-" + _crc + "-" + Thread.currentThread().getName(); } @Override public String getTableName() { return _resourceName; } @Override public String getIndexType() { return _indexType; } @Override public String getTimeColumn() { return null; } @Override public long getStartTime() { return Long.MAX_VALUE; } @Override public long getEndTime() { return Long.MIN_VALUE; } @Override public TimeUnit getTimeUnit() { return null; } @Override public Duration getTimeGranularity() { return _timeGranularity; } @Override public Interval getTimeInterval() { return _interval; } @Override public String getCrc() { return _crc; } @Override public String getVersion() { return _version; } @Override public Schema getSchema() { return _schema; } @Override public String getShardingKey() { return _shardingKey; } public void setSize(long size) { _size = size; } public static SegmentMetadata load(Configuration properties) { final SegmentMetadata segmentMetadata = new SimpleSegmentMetadata(); ((SimpleSegmentMetadata) segmentMetadata).setSize(properties.getLong(SEGMENT_SIZE, 0)); return segmentMetadata; } @Override public int getTotalDocs() { return (int) _size; } @Override public int getTotalRawDocs() { return (int) _size; } @Override public String getIndexDir() { return null; } @Override public String getName() { return _segmentName; } @Override public Map<String, String> toMap() { return new HashMap<String, String>(); } @Override public long getIndexCreationTime() { return 0; } @Override public long getPushTime() { return Long.MIN_VALUE; } @Override public long getRefreshTime() { return Long.MIN_VALUE; } @Override public boolean hasDictionary(String columnName) { return false; } @Override public boolean close() { return true; } @Override public boolean hasStarTree() { return false; } @Nullable @Override public StarTreeMetadata getStarTreeMetadata() { return null; } @Override public String getForwardIndexFileName(String column, String segmentVersion) { // TODO Auto-generated method stub return null; } @Override public String getDictionaryFileName(String column, String segmentVersion) { // TODO Auto-generated method stub return null; } @Override public String getBitmapInvertedIndexFileName(String column, String segmentVersion) { // TODO Auto-generated method stub return null; } @Nullable @Override public String getCreatorName() { return null; } @Override public char getPaddingCharacter() { return _paddingCharacter; } @Override public int getHllLog2m() { return HllConstants.DEFAULT_LOG2M; } @Nullable @Override public String getDerivedColumn(String column, MetricFieldSpec.DerivedMetricType derivedMetricType) { return null; } }