/* * Copyright (C) 2014 Indeed Inc. * * 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.indeed.imhotep; import com.google.common.base.Function; import com.google.common.collect.Collections2; import com.google.common.collect.Lists; import com.indeed.imhotep.protobuf.DatasetInfoMessage; import com.indeed.imhotep.protobuf.ShardInfoMessage; import java.util.Collection; /** * @author jsgroth */ public class DatasetInfo { private final String dataset; private final Collection<ShardInfo> shardList; private final Collection<String> intFields; private final Collection<String> stringFields; private final Collection<String> metrics; public DatasetInfo(String dataset, Collection<ShardInfo> shardList, Collection<String> intFields, Collection<String> stringFields, Collection<String> metrics) { this.dataset = dataset; this.shardList = shardList; this.intFields = intFields; this.stringFields = stringFields; this.metrics = metrics; } public String getDataset() { return dataset; } public Collection<ShardInfo> getShardList() { return shardList; } public Collection<String> getIntFields() { return intFields; } public Collection<String> getStringFields() { return stringFields; } public Collection<String> getMetrics() { return metrics; } public DatasetInfoMessage toProto() { return DatasetInfoMessage.newBuilder() .setDataset(dataset) .addAllShardInfo(Collections2.transform(shardList, new Function<ShardInfo, ShardInfoMessage>() { @Override public ShardInfoMessage apply(ShardInfo input) { return input.toProto(); } })) .addAllIntField(intFields) .addAllStringField(stringFields) .addAllMetric(metrics) .build(); } public static DatasetInfo fromProto(final DatasetInfoMessage proto) { return new DatasetInfo( proto.getDataset(), Lists.transform(proto.getShardInfoList(), new Function<ShardInfoMessage, ShardInfo>() { @Override public ShardInfo apply(ShardInfoMessage input) { return ShardInfo.fromProto(input); } }), proto.getIntFieldList(), proto.getStringFieldList(), proto.getMetricList() ); } }