Updated Branches: refs/heads/trunk 719103b64 -> 782273365
add SnapshotDetailsTabularData.java Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/78227336 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/78227336 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/78227336 Branch: refs/heads/trunk Commit: 7822733658b5614549ccad8c7c51463b159aa923 Parents: 719103b Author: Jonathan Ellis <jbel...@apache.org> Authored: Tue Jan 21 22:28:46 2014 -0800 Committer: Jonathan Ellis <jbel...@apache.org> Committed: Tue Jan 21 22:28:46 2014 -0800 ---------------------------------------------------------------------- .../db/SnapshotDetailsTabularData.java | 86 ++++++++++++++++++++ 1 file changed, 86 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/78227336/src/java/org/apache/cassandra/db/SnapshotDetailsTabularData.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/SnapshotDetailsTabularData.java b/src/java/org/apache/cassandra/db/SnapshotDetailsTabularData.java new file mode 100644 index 0000000..97caea1 --- /dev/null +++ b/src/java/org/apache/cassandra/db/SnapshotDetailsTabularData.java @@ -0,0 +1,86 @@ +/* + * 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.cassandra.db; + +import java.util.Map; +import javax.management.openmbean.*; + +import com.google.common.base.Throwables; +import org.apache.cassandra.io.util.FileUtils; +import org.apache.cassandra.utils.Pair; + + + + +public class SnapshotDetailsTabularData +{ + + private static final String[] ITEM_NAMES = new String[]{"Snapshot name", + "Keyspace name", + "Column family name", + "True size", + "Size on disk"}; + + private static final String[] ITEM_DESCS = new String[]{"snapshot_name", + "keyspace_name", + "columnfamily_name", + "TrueDiskSpaceUsed", + "TotalDiskSpaceUsed"}; + + private static final String TYPE_NAME = "SnapshotDetails"; + + private static final String ROW_DESC = "SnapshotDetails"; + + private static final OpenType<?>[] ITEM_TYPES; + + private static final CompositeType COMPOSITE_TYPE; + + public static final TabularType TABULAR_TYPE; + + static + { + try + { + ITEM_TYPES = new OpenType[]{ SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING }; + + COMPOSITE_TYPE = new CompositeType(TYPE_NAME, ROW_DESC, ITEM_NAMES, ITEM_DESCS, ITEM_TYPES); + + TABULAR_TYPE = new TabularType(TYPE_NAME, ROW_DESC, COMPOSITE_TYPE, ITEM_NAMES); + } + catch (OpenDataException e) + { + throw Throwables.propagate(e); + } + } + + + public static void from(final String snapshot, final String ks, final String cf, Map.Entry<String, Pair<Long,Long>> snapshotDetail, TabularDataSupport result) + { + try + { + final String totalSize = FileUtils.stringifyFileSize(snapshotDetail.getValue().left); + final String liveSize = FileUtils.stringifyFileSize(snapshotDetail.getValue().right); + result.put(new CompositeDataSupport(COMPOSITE_TYPE, ITEM_NAMES, + new Object[]{ snapshot, ks, cf, liveSize, totalSize })); + } + catch (OpenDataException e) + { + throw new RuntimeException(e); + } + } +}