Update of /cvsroot/jrobin/src/org/jrobin/inspector
In directory sc8-pr-cvs1:/tmp/cvs-serv7205/org/jrobin/inspector
Modified Files:
ArchiveTableModel.java DataTableModel.java
DatasourceTableModel.java HeaderTableModel.java
InspectorModel.java MainTreeModel.java RrdInspector.java
Log Message:
Major enhancements to Inspector swing app. Supports interactive add/edit/remove operations on RRD datasources/archives. Several methods added to RrdToolkit - no plans to extend it further.
Index: ArchiveTableModel.java
===================================================================
RCS file: /cvsroot/jrobin/src/org/jrobin/inspector/ArchiveTableModel.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** ArchiveTableModel.java 13 Nov 2003 15:33:28 -0000 1.4
--- ArchiveTableModel.java 4 Dec 2003 13:21:03 -0000 1.5
***************
*** 71,78 ****
void setFile(File newFile) {
! if (file == null || !file.getAbsolutePath().equals(newFile.getAbsolutePath())) {
! file = newFile;
! setIndex(-1, -1);
! }
}
--- 71,76 ----
void setFile(File newFile) {
! file = newFile;
! setIndex(-1, -1);
}
Index: DataTableModel.java
===================================================================
RCS file: /cvsroot/jrobin/src/org/jrobin/inspector/DataTableModel.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** DataTableModel.java 13 Nov 2003 15:33:28 -0000 1.4
--- DataTableModel.java 4 Dec 2003 13:21:03 -0000 1.5
***************
*** 65,72 ****
void setFile(File newFile) {
! if (file == null || !file.getAbsolutePath().equals(newFile.getAbsolutePath())) {
! file = newFile;
! setIndex(-1, -1);
! }
}
--- 65,70 ----
void setFile(File newFile) {
! file = newFile;
! setIndex(-1, -1);
}
Index: DatasourceTableModel.java
===================================================================
RCS file: /cvsroot/jrobin/src/org/jrobin/inspector/DatasourceTableModel.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** DatasourceTableModel.java 13 Nov 2003 15:33:28 -0000 1.4
--- DatasourceTableModel.java 4 Dec 2003 13:21:03 -0000 1.5
***************
*** 70,77 ****
void setFile(File newFile) {
! if (file == null || !file.getAbsolutePath().equals(newFile.getAbsolutePath())) {
! file = newFile;
! setIndex(-1);
! }
}
--- 70,75 ----
void setFile(File newFile) {
! file = newFile;
! setIndex(-1);
}
Index: HeaderTableModel.java
===================================================================
RCS file: /cvsroot/jrobin/src/org/jrobin/inspector/HeaderTableModel.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** HeaderTableModel.java 13 Nov 2003 15:33:28 -0000 1.4
--- HeaderTableModel.java 4 Dec 2003 13:21:03 -0000 1.5
***************
*** 37,41 ****
class HeaderTableModel extends AbstractTableModel {
private static final Object[] DESCRIPTIONS = {"path", "signature", "step", "last timestamp",
! "datasources", "archives", "size"};
private static final String[] COLUMN_NAMES = {"description", "value"};
--- 37,41 ----
class HeaderTableModel extends AbstractTableModel {
private static final Object[] DESCRIPTIONS = {"path", "signature", "step", "last timestamp",
! "datasources", "archives", "size"};
private static final String[] COLUMN_NAMES = {"description", "value"};
***************
*** 47,63 ****
}
! public int getColumnCount() {
return COLUMN_NAMES.length;
}
public Object getValueAt(int rowIndex, int columnIndex) {
! if(columnIndex == 0) {
return DESCRIPTIONS[rowIndex];
! }
! else if(columnIndex == 1) {
! if(values != null) {
return values[rowIndex];
! }
! else {
return "--";
}
--- 47,61 ----
}
! public int getColumnCount() {
return COLUMN_NAMES.length;
}
public Object getValueAt(int rowIndex, int columnIndex) {
! if (columnIndex == 0) {
return DESCRIPTIONS[rowIndex];
! } else if (columnIndex == 1) {
! if (values != null) {
return values[rowIndex];
! } else {
return "--";
}
***************
*** 71,98 ****
void setFile(File newFile) {
! if(file == null || !file.getAbsolutePath().equals(newFile.getAbsolutePath())) {
! try {
! file = newFile;
! values = null;
! String path = file.getAbsolutePath();
! RrdDb rrd = new RrdDb(path);
! Header header = rrd.getHeader();
! String signature = header.getSignature();
! String step = "" + header.getStep();
! String lastTimestamp = header.getLastUpdateTime() + " [" +
! new Date(header.getLastUpdateTime() * 1000L) + "]";
! String datasources = "" + header.getDsCount();
! String archives = "" + header.getArcCount();
! String size = rrd.getRrdFile().getFileSize() + " bytes";
! rrd.close();
! values = new Object[] {
! path, signature, step, lastTimestamp, datasources, archives, size
! };
! fireTableDataChanged();
! }
! catch (IOException e) {
! }
! catch (RrdException e) {
! }
}
}
--- 69,94 ----
void setFile(File newFile) {
! try {
! file = newFile;
! values = null;
! String path = file.getAbsolutePath();
! RrdDb rrd = new RrdDb(path);
! Header header = rrd.getHeader();
! String signature = header.getSignature();
! String step = "" + header.getStep();
! String lastTimestamp = header.getLastUpdateTime() + " [" +
! new Date(header.getLastUpdateTime() * 1000L) + "]";
! String datasources = "" + header.getDsCount();
! String archives = "" + header.getArcCount();
! String size = rrd.getRrdFile().getFileSize() + " bytes";
! rrd.close();
! values = new Object[]{
! path, signature, step, lastTimestamp, datasources, archives, size
! };
! fireTableDataChanged();
! } catch (IOException e) {
! e.printStackTrace();
! } catch (RrdException e) {
! e.printStackTrace();
}
}
Index: InspectorModel.java
===================================================================
RCS file: /cvsroot/jrobin/src/org/jrobin/inspector/InspectorModel.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** InspectorModel.java 10 Nov 2003 08:52:28 -0000 1.2
--- InspectorModel.java 4 Dec 2003 13:21:03 -0000 1.3
***************
*** 29,38 ****
import java.text.DecimalFormat;
- /**
- * Created by saxon
- * User: stalker
- * Date: Oct 5, 2003
- * Time: 11:26:05 AM
- */
class InspectorModel {
private MainTreeModel mainTreeModel = new MainTreeModel();
--- 29,32 ----
***************
*** 41,44 ****
--- 35,40 ----
private ArchiveTableModel archiveTableModel = new ArchiveTableModel();
private DataTableModel dataTableModel = new DataTableModel();
+ private File file;
+ private boolean ok = false;
MainTreeModel getMainTreeModel() {
***************
*** 63,67 ****
void setFile(File file) {
! mainTreeModel.setFile(file);
generalTableModel.setFile(file);
datasourceTableModel.setFile(file);
--- 59,64 ----
void setFile(File file) {
! this.file = file;
! this.ok = mainTreeModel.setFile(file);
generalTableModel.setFile(file);
datasourceTableModel.setFile(file);
***************
*** 70,77 ****
--- 67,86 ----
}
+ void refresh() {
+ setFile(file);
+ }
+
void selectModel(int dsIndex, int arcIndex) {
datasourceTableModel.setIndex(dsIndex);
archiveTableModel.setIndex(dsIndex, arcIndex);
dataTableModel.setIndex(dsIndex, arcIndex);
+ }
+
+ File getFile() {
+ return file;
+ }
+
+ boolean isOk() {
+ return ok;
}
Index: MainTreeModel.java
===================================================================
RCS file: /cvsroot/jrobin/src/org/jrobin/inspector/MainTreeModel.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** MainTreeModel.java 13 Nov 2003 15:33:28 -0000 1.4
--- MainTreeModel.java 4 Dec 2003 13:21:03 -0000 1.5
***************
*** 44,75 ****
}
! void setFile(File newFile) {
! if (file == null || !file.getAbsolutePath().equals(newFile.getAbsolutePath())) {
! try {
! file = newFile;
! RrdDb rrd = new RrdDb(file.getAbsolutePath());
! DefaultMutableTreeNode root = new DefaultMutableTreeNode(new RrdNode(rrd));
! int dsCount = rrd.getRrdDef().getDsCount();
! int arcCount = rrd.getRrdDef().getArcCount();
! for (int dsIndex = 0; dsIndex < dsCount; dsIndex++) {
! DefaultMutableTreeNode dsNode =
! new DefaultMutableTreeNode(new RrdNode(rrd, dsIndex));
! for (int arcIndex = 0; arcIndex < arcCount; arcIndex++) {
! DefaultMutableTreeNode arcNode =
! new DefaultMutableTreeNode(new RrdNode(rrd, dsIndex, arcIndex));
! dsNode.add(arcNode);
! }
! root.add(dsNode);
}
! rrd.close();
! setRoot(root);
! }
! catch (IOException e) {
! setRoot(INVALID_NODE);
! }
! catch (RrdException e) {
! setRoot(INVALID_NODE);
}
}
}
}
--- 44,73 ----
}
! boolean setFile(File newFile) {
! try {
! file = newFile;
! RrdDb rrd = new RrdDb(file.getAbsolutePath());
! DefaultMutableTreeNode root = new DefaultMutableTreeNode(new RrdNode(rrd));
! int dsCount = rrd.getRrdDef().getDsCount();
! int arcCount = rrd.getRrdDef().getArcCount();
! for (int dsIndex = 0; dsIndex < dsCount; dsIndex++) {
! DefaultMutableTreeNode dsNode =
! new DefaultMutableTreeNode(new RrdNode(rrd, dsIndex));
! for (int arcIndex = 0; arcIndex < arcCount; arcIndex++) {
! DefaultMutableTreeNode arcNode =
! new DefaultMutableTreeNode(new RrdNode(rrd, dsIndex, arcIndex));
! dsNode.add(arcNode);
}
! root.add(dsNode);
}
+ rrd.close();
+ setRoot(root);
+ return true;
+ } catch (IOException e) {
+ setRoot(INVALID_NODE);
+ } catch (RrdException e) {
+ setRoot(INVALID_NODE);
}
+ return false;
}
}
Index: RrdInspector.java
===================================================================
RCS file: /cvsroot/jrobin/src/org/jrobin/inspector/RrdInspector.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** RrdInspector.java 10 Nov 2003 08:52:28 -0000 1.2
--- RrdInspector.java 4 Dec 2003 13:21:03 -0000 1.3
***************
*** 26,29 ****
--- 26,31 ----
package org.jrobin.inspector;
+ import org.jrobin.core.*;
+
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
***************
*** 36,42 ****
--- 38,48 ----
import java.awt.event.*;
import java.io.File;
+ import java.io.IOException;
class RrdInspector extends JFrame {
static final String TITLE = "RRD File Inspector";
+ static final boolean SHOULD_FIX_ARCHIVED_VALUES = false;
+ static final boolean SHOULD_CREATE_BACKUPS = true;
+
static Dimension MAIN_TREE_SIZE = new Dimension(250, 400);
static Dimension INFO_PANE_SIZE = new Dimension(450, 400);
***************
*** 51,55 ****
private InspectorModel inspectorModel = new InspectorModel();
! RrdInspector() {
super(TITLE);
constructUI();
--- 57,63 ----
private InspectorModel inspectorModel = new InspectorModel();
! private String lastDirectory = null;
!
! RrdInspector() {
super(TITLE);
constructUI();
***************
*** 69,73 ****
private void constructUI() {
! JPanel content = (JPanel) getContentPane();
content.setLayout(new BorderLayout());
--- 77,81 ----
private void constructUI() {
! JPanel content = (JPanel) getContentPane();
content.setLayout(new BorderLayout());
***************
*** 76,89 ****
leftPanel.setLayout(new BorderLayout());
JScrollPane treePane = new JScrollPane(mainTree);
! leftPanel.add(treePane);
leftPanel.setPreferredSize(MAIN_TREE_SIZE);
content.add(leftPanel, BorderLayout.WEST);
mainTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
mainTree.addTreeSelectionListener(new TreeSelectionListener() {
! public void valueChanged(TreeSelectionEvent e) { nodeChangedAction(); }
});
mainTree.setModel(inspectorModel.getMainTreeModel());
// EAST, tabbed pane
// GENERAL TAB
--- 84,101 ----
leftPanel.setLayout(new BorderLayout());
JScrollPane treePane = new JScrollPane(mainTree);
! leftPanel.add(treePane);
leftPanel.setPreferredSize(MAIN_TREE_SIZE);
content.add(leftPanel, BorderLayout.WEST);
mainTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
mainTree.addTreeSelectionListener(new TreeSelectionListener() {
! public void valueChanged(TreeSelectionEvent e) {
! nodeChangedAction();
! }
});
mainTree.setModel(inspectorModel.getMainTreeModel());
+ ////////////////////////////////////////////
// EAST, tabbed pane
+ ////////////////////////////////////////////
// GENERAL TAB
***************
*** 94,98 ****
generalTable.getColumnModel().getColumn(0).setPreferredWidth(150);
generalTable.getColumnModel().getColumn(0).setMaxWidth(150);
! //generalTable.getColumnModel().getColumn(0).setMinWidth(150);
// DATASOURCE TAB
JScrollPane spDatasource = new JScrollPane(datasourceTable);
--- 106,110 ----
generalTable.getColumnModel().getColumn(0).setPreferredWidth(150);
generalTable.getColumnModel().getColumn(0).setMaxWidth(150);
!
// DATASOURCE TAB
JScrollPane spDatasource = new JScrollPane(datasourceTable);
***************
*** 102,106 ****
datasourceTable.getColumnModel().getColumn(0).setPreferredWidth(150);
datasourceTable.getColumnModel().getColumn(0).setMaxWidth(150);
! //datasourceTable.getColumnModel().getColumn(0).setMinWidth(150);
// ARCHIVE TAB
JScrollPane spArchive = new JScrollPane(archiveTable);
--- 114,118 ----
datasourceTable.getColumnModel().getColumn(0).setPreferredWidth(150);
datasourceTable.getColumnModel().getColumn(0).setMaxWidth(150);
!
// ARCHIVE TAB
JScrollPane spArchive = new JScrollPane(archiveTable);
***************
*** 108,114 ****
archiveTable.getColumnModel().getColumn(0).setPreferredWidth(150);
archiveTable.getColumnModel().getColumn(0).setMaxWidth(150);
- //archiveTable.getColumnModel().getColumn(0).setMinWidth(150);
spArchive.setPreferredSize(INFO_PANE_SIZE);
! tabbedPane.add("Archive info", spArchive);
// DATA TAB
JScrollPane spData = new JScrollPane(dataTable);
--- 120,126 ----
archiveTable.getColumnModel().getColumn(0).setPreferredWidth(150);
archiveTable.getColumnModel().getColumn(0).setMaxWidth(150);
spArchive.setPreferredSize(INFO_PANE_SIZE);
! tabbedPane.add("Archive info", spArchive);
!
// DATA TAB
JScrollPane spData = new JScrollPane(dataTable);
***************
*** 122,127 ****
--- 134,142 ----
content.add(tabbedPane, BorderLayout.CENTER);
+ ////////////////////////////////////////
// MENU
+ ////////////////////////////////////////
JMenuBar menuBar = new JMenuBar();
+ // FILE
JMenu fileMenu = new JMenu("File");
fileMenu.setMnemonic(KeyEvent.VK_F);
***************
*** 133,136 ****
--- 148,196 ----
});
fileMenu.add(fileMenuItem);
+ fileMenu.addSeparator();
+ JMenuItem addDatasourceMenuItem = new JMenuItem("Add datasource...");
+ addDatasourceMenuItem.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ addDatasource();
+ }
+ });
+ fileMenu.add(addDatasourceMenuItem);
+ JMenuItem editDatasourceMenuItem = new JMenuItem("Edit datasource...");
+ editDatasourceMenuItem.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ editDatasource();
+ }
+ });
+ fileMenu.add(editDatasourceMenuItem);
+ JMenuItem removeDatasourceMenuItem = new JMenuItem("Remove datasource");
+ removeDatasourceMenuItem.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ removeDatasource();
+ }
+ });
+ fileMenu.add(removeDatasourceMenuItem);
+ fileMenu.addSeparator();
+ JMenuItem addArchiveMenuItem = new JMenuItem("Add archive...");
+ addArchiveMenuItem.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ addArchive();
+ }
+ });
+ fileMenu.add(addArchiveMenuItem);
+ JMenuItem editArchiveMenuItem = new JMenuItem("Edit archive...");
+ editArchiveMenuItem.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ editArchive();
+ }
+ });
+ fileMenu.add(editArchiveMenuItem);
+ JMenuItem removeArchiveMenuItem = new JMenuItem("Remove archive...");
+ removeArchiveMenuItem.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ removeArchive();
+ }
+ });
+ fileMenu.add(removeArchiveMenuItem);
+ fileMenu.addSeparator();
JMenuItem exitMenuItem = new JMenuItem("Exit", KeyEvent.VK_X);
exitMenuItem.addActionListener(new ActionListener() {
***************
*** 139,143 ****
}
});
- fileMenu.addSeparator();
fileMenu.add(exitMenuItem);
menuBar.add(fileMenu);
--- 199,202 ----
***************
*** 146,150 ****
// finalize UI
addWindowListener(new WindowAdapter() {
! public void windowClosing(WindowEvent e) { System.exit(0); }
});
--- 205,211 ----
// finalize UI
addWindowListener(new WindowAdapter() {
! public void windowClosing(WindowEvent e) {
! System.exit(0);
! }
});
***************
*** 152,185 ****
private void nodeChangedAction() {
TreePath path = mainTree.getSelectionPath();
! if(path != null) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();
Object obj = node.getUserObject();
! if(obj instanceof RrdNode) {
RrdNode rrdNode = (RrdNode) obj;
! inspectorModel.selectModel(rrdNode.getDsIndex(), rrdNode.getArcIndex());
! if(rrdNode.getDsIndex() >= 0 && rrdNode.getArcIndex() >= 0) {
! // archive node
! if(tabbedPane.getSelectedIndex() < 2) {
! tabbedPane.setSelectedIndex(2);
! }
! }
! else if(rrdNode.getDsIndex() >= 0) {
! tabbedPane.setSelectedIndex(1);
! }
! else {
! tabbedPane.setSelectedIndex(0);
! }
}
}
}
private void selectFile() {
! JFileChooser chooser = new JFileChooser();
FileFilter filter = new FileFilter() {
public boolean accept(File f) {
! return f.isDirectory()? true:
f.getAbsolutePath().toLowerCase().endsWith(".rrd");
}
public String getDescription() {
return "JRobin RRD files";
--- 213,253 ----
private void nodeChangedAction() {
+ RrdNode rrdNode = getSelectedRrdNode();
+ if (rrdNode != null) {
+ inspectorModel.selectModel(rrdNode.getDsIndex(), rrdNode.getArcIndex());
+ if (rrdNode.getDsIndex() >= 0 && rrdNode.getArcIndex() >= 0) {
+ // archive node
+ if (tabbedPane.getSelectedIndex() < 2) {
+ tabbedPane.setSelectedIndex(2);
+ }
+ } else if (rrdNode.getDsIndex() >= 0) {
+ tabbedPane.setSelectedIndex(1);
+ } else {
+ tabbedPane.setSelectedIndex(0);
+ }
+ }
+ }
+
+ private RrdNode getSelectedRrdNode() {
TreePath path = mainTree.getSelectionPath();
! if (path != null) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();
Object obj = node.getUserObject();
! if (obj instanceof RrdNode) {
RrdNode rrdNode = (RrdNode) obj;
! return rrdNode;
}
}
+ return null;
}
private void selectFile() {
! JFileChooser chooser = new JFileChooser(lastDirectory);
FileFilter filter = new FileFilter() {
public boolean accept(File f) {
! return f.isDirectory() ? true :
f.getAbsolutePath().toLowerCase().endsWith(".rrd");
}
+
public String getDescription() {
return "JRobin RRD files";
***************
*** 188,195 ****
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(this);
! if(returnVal == JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
inspectorModel.setFile(file);
tabbedPane.setSelectedIndex(0);
}
}
--- 256,432 ----
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(this);
! if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
+ lastDirectory = file.getParent();
inspectorModel.setFile(file);
tabbedPane.setSelectedIndex(0);
+ }
+ }
+
+ private void addDatasource() {
+ if (!inspectorModel.isOk()) {
+ Util.error(this, "Open a valid RRD file first.");
+ return;
+ }
+ DsDef newDsDef = new EditDatasourceDialog(this, null).getDsDef();
+ if (newDsDef != null) {
+ // action
+ RrdToolkit toolkit = RrdToolkit.getInstance();
+ try {
+ String sourcePath = inspectorModel.getFile().getCanonicalPath();
+ toolkit.addDatasource(sourcePath, newDsDef, SHOULD_CREATE_BACKUPS);
+ inspectorModel.refresh();
+ tabbedPane.setSelectedIndex(0);
+ } catch (IOException e) {
+ Util.error(this, e.toString());
+ } catch (RrdException e) {
+ Util.error(this, e.toString());
+ }
+ }
+ }
+
+ private void addArchive() {
+ if (!inspectorModel.isOk()) {
+ Util.error(this, "Open a valid RRD file first.");
+ return;
+ }
+ ArcDef newArcDef = new EditArchiveDialog(this, null).getArcDef();
+ if (newArcDef != null) {
+ // action
+ RrdToolkit toolkit = RrdToolkit.getInstance();
+ try {
+ String sourcePath = inspectorModel.getFile().getCanonicalPath();
+ toolkit.addArchive(sourcePath, newArcDef, SHOULD_CREATE_BACKUPS);
+ inspectorModel.refresh();
+ tabbedPane.setSelectedIndex(0);
+ } catch (IOException e) {
+ Util.error(this, e.toString());
+ } catch (RrdException e) {
+ Util.error(this, e.toString());
+ }
+ }
+ }
+
+ private void editDatasource() {
+ if (!inspectorModel.isOk()) {
+ Util.error(this, "Open a valid RRD file first.");
+ return;
+ }
+ RrdNode rrdNode = getSelectedRrdNode();
+ int dsIndex = -1;
+ if(rrdNode == null || (dsIndex = rrdNode.getDsIndex()) < 0) {
+ Util.error(this, "Select datasource first");
+ return;
+ }
+ try {
+ String sourcePath = inspectorModel.getFile().getCanonicalPath();
+ RrdDb rrd = new RrdDb(sourcePath);
+ DsDef dsDef = rrd.getRrdDef().getDsDefs()[dsIndex];
+ rrd.close();
+ DsDef newDsDef = new EditDatasourceDialog(this, dsDef).getDsDef();
+ if(newDsDef != null) {
+ // action!
+ RrdToolkit toolkit = RrdToolkit.getInstance();
+ toolkit.setDsHeartbeat(sourcePath, newDsDef.getDsName(),
+ newDsDef.getHeartbeat());
+ toolkit.setDsMinMaxValue(sourcePath, newDsDef.getDsName(),
+ newDsDef.getMinValue(), newDsDef.getMaxValue(), SHOULD_FIX_ARCHIVED_VALUES);
+ inspectorModel.refresh();
+ tabbedPane.setSelectedIndex(0);
+ }
+ rrd.close();
+ } catch (IOException e) {
+ Util.error(this, e.toString());
+ } catch (RrdException e) {
+ Util.error(this, e.toString());
+ }
+ }
+
+ private void editArchive() {
+ if (!inspectorModel.isOk()) {
+ Util.error(this, "Open a valid RRD file first.");
+ return;
+ }
+ RrdNode rrdNode = getSelectedRrdNode();
+ int arcIndex = -1;
+ if(rrdNode == null || (arcIndex = rrdNode.getArcIndex()) < 0) {
+ Util.error(this, "Select archive first");
+ return;
+ }
+ try {
+ String sourcePath = inspectorModel.getFile().getCanonicalPath();
+ RrdDb rrd = new RrdDb(sourcePath);
+ ArcDef arcDef = rrd.getRrdDef().getArcDefs()[arcIndex];
+ rrd.close();
+ ArcDef newArcDef = new EditArchiveDialog(this, arcDef).getArcDef();
+ if(newArcDef != null) {
+ // action!
+ RrdToolkit toolkit = RrdToolkit.getInstance();
+ toolkit.setArcXff(sourcePath, newArcDef.getConsolFun(),
+ newArcDef.getSteps(), newArcDef.getXff());
+ inspectorModel.refresh();
+ tabbedPane.setSelectedIndex(0);
+ }
+ rrd.close();
+ } catch (IOException e) {
+ Util.error(this, e.toString());
+ } catch (RrdException e) {
+ Util.error(this, e.toString());
+ }
+ }
+
+ private void removeDatasource() {
+ if (!inspectorModel.isOk()) {
+ Util.error(this, "Open a valid RRD file first.");
+ return;
+ }
+ RrdNode rrdNode = getSelectedRrdNode();
+ int dsIndex = -1;
+ if(rrdNode == null || (dsIndex = rrdNode.getDsIndex()) < 0) {
+ Util.error(this, "Select datasource first");
+ return;
+ }
+ try {
+ String sourcePath = inspectorModel.getFile().getCanonicalPath();
+ RrdDb rrd = new RrdDb(sourcePath);
+ String dsName = rrd.getRrdDef().getDsDefs()[dsIndex].getDsName();
+ rrd.close();
+ RrdToolkit toolkit = RrdToolkit.getInstance();
+ toolkit.removeDatasource(sourcePath, dsName, SHOULD_CREATE_BACKUPS);
+ inspectorModel.refresh();
+ tabbedPane.setSelectedIndex(0);
+ } catch (IOException e) {
+ Util.error(this, e.toString());
+ } catch (RrdException e) {
+ Util.error(this, e.toString());
+ }
+ }
+
+ private void removeArchive() {
+ if (!inspectorModel.isOk()) {
+ Util.error(this, "Open a valid RRD file first.");
+ return;
+ }
+ RrdNode rrdNode = getSelectedRrdNode();
+ int arcIndex = -1;
+ if(rrdNode == null || (arcIndex = rrdNode.getArcIndex()) < 0) {
+ Util.error(this, "Select archive first");
+ return;
+ }
+ try {
+ String sourcePath = inspectorModel.getFile().getCanonicalPath();
+ RrdDb rrd = new RrdDb(sourcePath);
+ ArcDef arcDef = rrd.getRrdDef().getArcDefs()[arcIndex];
+ String consolFun = arcDef.getConsolFun();
+ int steps = arcDef.getSteps();
+ rrd.close();
+ RrdToolkit toolkit = RrdToolkit.getInstance();
+ toolkit.removeArchive(sourcePath, consolFun, steps, SHOULD_CREATE_BACKUPS);
+ inspectorModel.refresh();
+ tabbedPane.setSelectedIndex(0);
+ } catch (IOException e) {
+ Util.error(this, e.toString());
+ } catch (RrdException e) {
+ Util.error(this, e.toString());
}
}
|