Importing FileUtils.java Pair.java SnapshotDetailsTabularData.java
This adds the functionality that is used by the JMX from Origin. The following files where import: FileUtils.java Pair.java SnapshotDetailsTabularData.java, un needed functionality was removed to minimize the dependency and they were placed in a util directory. Signed-off-by: Amnon Heiman <amnon@cloudius-systems.com>
This commit is contained in:
parent
16f5f5d07d
commit
565d62d4db
5
pom.xml
5
pom.xml
@ -32,6 +32,11 @@
|
||||
<artifactId>javax.json</artifactId>
|
||||
<version>1.0.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava</artifactId>
|
||||
<version>18.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
|
92
src/main/java/com/cloudius/urchin/utils/FileUtils.java
Normal file
92
src/main/java/com/cloudius/urchin/utils/FileUtils.java
Normal file
@ -0,0 +1,92 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright 2015 Cloudius Systems
|
||||
*
|
||||
* Modified by Cloudius Systems
|
||||
*/
|
||||
|
||||
package com.cloudius.urchin.utils;
|
||||
|
||||
import java.io.*;
|
||||
import java.text.DecimalFormat;
|
||||
|
||||
public class FileUtils
|
||||
{
|
||||
private static final double KB = 1024d;
|
||||
private static final double MB = 1024*1024d;
|
||||
private static final double GB = 1024*1024*1024d;
|
||||
private static final double TB = 1024*1024*1024*1024d;
|
||||
|
||||
private static final DecimalFormat df = new DecimalFormat("#.##");
|
||||
|
||||
|
||||
public static String stringifyFileSize(double value)
|
||||
{
|
||||
double d;
|
||||
if ( value >= TB )
|
||||
{
|
||||
d = value / TB;
|
||||
String val = df.format(d);
|
||||
return val + " TB";
|
||||
}
|
||||
else if ( value >= GB )
|
||||
{
|
||||
d = value / GB;
|
||||
String val = df.format(d);
|
||||
return val + " GB";
|
||||
}
|
||||
else if ( value >= MB )
|
||||
{
|
||||
d = value / MB;
|
||||
String val = df.format(d);
|
||||
return val + " MB";
|
||||
}
|
||||
else if ( value >= KB )
|
||||
{
|
||||
d = value / KB;
|
||||
String val = df.format(d);
|
||||
return val + " KB";
|
||||
}
|
||||
else
|
||||
{
|
||||
String val = df.format(value);
|
||||
return val + " bytes";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the size of a directory in bytes
|
||||
* @param directory The directory for which we need size.
|
||||
* @return The size of the directory
|
||||
*/
|
||||
public static long folderSize(File directory)
|
||||
{
|
||||
long length = 0;
|
||||
for (File file : directory.listFiles())
|
||||
{
|
||||
if (file.isFile())
|
||||
length += file.length();
|
||||
else
|
||||
length += folderSize(file);
|
||||
}
|
||||
return length;
|
||||
}
|
||||
}
|
68
src/main/java/com/cloudius/urchin/utils/Pair.java
Normal file
68
src/main/java/com/cloudius/urchin/utils/Pair.java
Normal file
@ -0,0 +1,68 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright 2015 Cloudius Systems
|
||||
*
|
||||
* Modified by Cloudius Systems
|
||||
*/
|
||||
|
||||
package com.cloudius.urchin.utils;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
|
||||
public class Pair<T1, T2>
|
||||
{
|
||||
public final T1 left;
|
||||
public final T2 right;
|
||||
|
||||
protected Pair(T1 left, T2 right)
|
||||
{
|
||||
this.left = left;
|
||||
this.right = right;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int hashCode()
|
||||
{
|
||||
int hashCode = 31 + (left == null ? 0 : left.hashCode());
|
||||
return 31*hashCode + (right == null ? 0 : right.hashCode());
|
||||
}
|
||||
|
||||
@Override
|
||||
public final boolean equals(Object o)
|
||||
{
|
||||
if(!(o instanceof Pair))
|
||||
return false;
|
||||
@SuppressWarnings("rawtypes")
|
||||
Pair that = (Pair)o;
|
||||
// handles nulls properly
|
||||
return Objects.equal(left, that.left) && Objects.equal(right, that.right);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "(" + left + "," + right + ")";
|
||||
}
|
||||
|
||||
public static <X, Y> Pair<X, Y> create(X x, Y y)
|
||||
{
|
||||
return new Pair<X, Y>(x, y);
|
||||
}
|
||||
}
|
@ -0,0 +1,91 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
/*
|
||||
* Copyright 2015 Cloudius Systems
|
||||
*
|
||||
* Modified by Cloudius Systems
|
||||
*/
|
||||
package com.cloudius.urchin.utils;
|
||||
|
||||
import java.util.Map;
|
||||
import javax.management.openmbean.*;
|
||||
|
||||
import com.google.common.base.Throwables;
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
public static void from(final String snapshot, final String ks,
|
||||
final String cf, long total, long live, TabularDataSupport result) {
|
||||
try {
|
||||
final String totalSize = FileUtils.stringifyFileSize(total);
|
||||
final String liveSize = FileUtils.stringifyFileSize(live);
|
||||
result.put(new CompositeDataSupport(COMPOSITE_TYPE, ITEM_NAMES,
|
||||
new Object[] { snapshot, ks, cf, liveSize, totalSize }));
|
||||
} catch (OpenDataException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user