diff --git a/bindings/java/src/net/hyperic/sigar/cmd/Iostat.java b/bindings/java/src/net/hyperic/sigar/cmd/Iostat.java new file mode 100644 index 00000000..a01c95bd --- /dev/null +++ b/bindings/java/src/net/hyperic/sigar/cmd/Iostat.java @@ -0,0 +1,110 @@ +package net.hyperic.sigar.cmd; + +import java.util.ArrayList; + +import net.hyperic.sigar.Sigar; +import net.hyperic.sigar.SigarException; +import net.hyperic.sigar.FileSystem; +import net.hyperic.sigar.FileSystemMap; +import net.hyperic.sigar.FileSystemUsage; + +import net.hyperic.sigar.shell.FileCompleter; +import net.hyperic.sigar.util.GetlineCompleter; + +/** + * Report filesytem disk space usage. + */ +public class Iostat extends SigarCommandBase { + + private static final String OUTPUT_FORMAT = + "%-10s %-10s %-10s %-10s"; + + //like df -h -a + private static final String[] HEADER = new String[] { + "Filesystem", + "Mounted on", + "Reads", + "Writes", + }; + + private GetlineCompleter completer; + + public Iostat(Shell shell) { + super(shell); + setOutputFormat(OUTPUT_FORMAT); + this.completer = new FileCompleter(shell); + } + + public Iostat() { + super(); + setOutputFormat(OUTPUT_FORMAT); + } + + public GetlineCompleter getCompleter() { + return this.completer; + } + + protected boolean validateArgs(String[] args) { + return args.length <= 1; + } + + public String getSyntaxArgs() { + return "[filesystem]"; + } + + public String getUsageShort() { + return "Report filesystem disk i/o"; + } + + public void printHeader() { + printf(HEADER); + } + + public void output(String[] args) throws SigarException { + if (args.length == 1) { + FileSystemMap mounts = this.proxy.getFileSystemMap(); + String name = FileCompleter.expand(args[0]); + FileSystem fs = mounts.getMountPoint(name); + + if (fs != null) { + printHeader(); + output(fs); + return; + } + + throw new SigarException(args[0] + + " No such file or directory"); + } + else { + FileSystem[] fslist = this.proxy.getFileSystemList(); + printHeader(); + for (int i=0; i