From aaee394b8c7fdcb653d09d35ea1a28e574632a22 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Tue, 08 May 2007 21:29:14 +0000
Subject: [PATCH] Do not display the replication monitoring information if there are no replicated suffixes.
---
opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ConfigFromFile.java | 48 ++++++---
opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/DatabaseDescriptor.java | 17 ++-
opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ServerStatusPooler.java | 4
opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ListenerDescriptor.java | 17 +++
opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/StatusCli.java | 2
opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ui/DatabasesTableModel.java | 13 ++
opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ui/StatusPanelDialog.java | 113 ++++++++++++++++++----
opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/BaseDNDescriptor.java | 19 +++
opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ConfigFromLDAP.java | 37 ++++---
opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ServerStatusDescriptor.java | 8 +
10 files changed, 208 insertions(+), 70 deletions(-)
diff --git a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/BaseDNDescriptor.java b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/BaseDNDescriptor.java
index 1974a64..b23cc38 100644
--- a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/BaseDNDescriptor.java
+++ b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/BaseDNDescriptor.java
@@ -34,7 +34,7 @@
* used by the classes in the DatabasesTableModel class.
*
*/
-public class BaseDNDescriptor
+public class BaseDNDescriptor implements Comparable
{
/**
* An enumeration describing the type of base DN for a given Database.
@@ -102,7 +102,6 @@
getDatabase().getBackendID().equals(
desc.getDatabase().getBackendID()) &&
(getDatabase().getEntries() == desc.getDatabase().getEntries());
-
}
}
else
@@ -118,8 +117,22 @@
public int hashCode()
{
return (getType().toString() + getAgeOfOldestMissingChange() + getDn() +
- getMissingChanges()).hashCode();
+ getDatabase().getBackendID() + getMissingChanges()).hashCode();
}
+ /**
+ * {@inheritDoc}
+ */
+ public int compareTo(Object o)
+ {
+ int returnValue = -1;
+ if (o instanceof BaseDNDescriptor)
+ {
+ BaseDNDescriptor desc = (BaseDNDescriptor)o;
+ returnValue = desc.getDn().compareTo(getDn());
+ }
+ return returnValue;
+ }
+
/**
* Returns the number of missing changes in the replication topology for
diff --git a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ConfigFromFile.java b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ConfigFromFile.java
index 291bb86..95aaea3 100644
--- a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ConfigFromFile.java
+++ b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ConfigFromFile.java
@@ -100,13 +100,14 @@
administrativeUsers.clear();
replicationConfigured = false;
replicatedSuffixes.clear();
+ LDIFReader reader = null;
try
{
Installation installation =
new Installation(Utils.getInstallPathFromClasspath());
LDIFImportConfig c = new LDIFImportConfig(
Utils.getPath(installation.getCurrentConfigurationFile()));
- LDIFReader reader = new LDIFReader(c);
+ reader = new LDIFReader(c);
for (Entry entry = reader.readEntry(false); entry != null;
entry = reader.readEntry(false))
{
@@ -131,6 +132,19 @@
errorMessage = Utils.getThrowableMsg(getI18n(),
"error-reading-config-file", null, t);
}
+ finally
+ {
+ if (reader != null)
+ {
+ try
+ {
+ reader.close();
+ }
+ catch (Throwable t)
+ {
+ }
+ }
+ }
}
/**
@@ -139,7 +153,9 @@
*/
public HashSet<String> getAdministrativeUsers()
{
- return administrativeUsers;
+ HashSet<String> copy = new HashSet<String>();
+ copy.addAll(administrativeUsers);
+ return copy;
}
/**
@@ -148,7 +164,9 @@
*/
public HashSet<DatabaseDescriptor> getDatabases()
{
- return databases;
+ HashSet<DatabaseDescriptor> copy = new HashSet<DatabaseDescriptor>();
+ copy.addAll(databases);
+ return copy;
}
/**
@@ -157,7 +175,9 @@
*/
public HashSet<ListenerDescriptor> getListeners()
{
- return listeners;
+ HashSet<ListenerDescriptor> copy = new HashSet<ListenerDescriptor>();
+ copy.addAll(listeners);
+ return copy;
}
/**
@@ -377,21 +397,18 @@
if (!isConfigBackend(id))
{
- Set<String> baseDns = new TreeSet<String>();
- baseDns.addAll(getValues(entry, "ds-cfg-backend-base-dn"));
- Set<BaseDNDescriptor> replicas = new LinkedHashSet<BaseDNDescriptor>();
+ Set<String> baseDns = getValues(entry, "ds-cfg-backend-base-dn");
+ TreeSet<BaseDNDescriptor> replicas = new TreeSet<BaseDNDescriptor>();
+
+ DatabaseDescriptor db = new DatabaseDescriptor(id, replicas, nEntries);
for (String baseDn : baseDns)
{
- replicas.add(getBaseDNDescriptor(entry, baseDn));
- }
-
- DatabaseDescriptor db = new DatabaseDescriptor(id, replicas, nEntries);
- databases.add(db);
- for (BaseDNDescriptor rep: replicas)
- {
+ BaseDNDescriptor rep = getBaseDNDescriptor(entry, baseDn);
rep.setDatabase(db);
+ db.getBaseDns().add(rep);
}
+ databases.add(db);
}
}
@@ -453,8 +470,7 @@
}
if (replica != null)
{
- replica.setType(BaseDNDescriptor.Type.REPLICATED);
- }
+ replica.setType(BaseDNDescriptor.Type.REPLICATED); }
}
}
}
diff --git a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ConfigFromLDAP.java b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ConfigFromLDAP.java
index 64575b4..22c9722 100644
--- a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ConfigFromLDAP.java
+++ b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ConfigFromLDAP.java
@@ -29,7 +29,6 @@
import java.util.HashMap;
import java.util.HashSet;
-import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;
@@ -204,25 +203,31 @@
*/
public HashSet<String> getAdministrativeUsers()
{
- return administrativeUsers;
+ HashSet<String> copy = new HashSet<String>();
+ copy.addAll(administrativeUsers);
+ return copy;
}
/**
- * Returns the database descriptors found using LDAP.
- * @return the database descriptors found using LDAP.
+ * Returns the database descriptors found in the config.ldif.
+ * @return the database descriptors found in the config.ldif.
*/
public HashSet<DatabaseDescriptor> getDatabases()
{
- return databases;
+ HashSet<DatabaseDescriptor> copy = new HashSet<DatabaseDescriptor>();
+ copy.addAll(databases);
+ return copy;
}
/**
- * Returns the listener descriptors found using LDAP.
- * @return the listeners descriptors found using LDAP.
+ * Returns the listener descriptors found in the config.ldif.
+ * @return the listeners descriptors found in the config.ldif.
*/
public HashSet<ListenerDescriptor> getListeners()
{
- return listeners;
+ HashSet<ListenerDescriptor> copy = new HashSet<ListenerDescriptor>();
+ copy.addAll(listeners);
+ return copy;
}
/**
@@ -794,22 +799,20 @@
if (!isConfigBackend(id))
{
- Set<String> baseDns = new TreeSet<String>();
- baseDns.addAll(getValues(entry, "ds-cfg-backend-base-dn"));
- Set<BaseDNDescriptor> replicas = new LinkedHashSet<BaseDNDescriptor>();
+ Set<String> baseDns = getValues(entry, "ds-cfg-backend-base-dn");
+ TreeSet<BaseDNDescriptor> replicas = new TreeSet<BaseDNDescriptor>();
int nEntries = getEntryCount(ctx, id);
+ DatabaseDescriptor db = new DatabaseDescriptor(id, replicas, nEntries);
+
for (String baseDn : baseDns)
{
- replicas.add(getBaseDNDescriptor(ctx, baseDn));
+ BaseDNDescriptor rep = getBaseDNDescriptor(ctx, baseDn);
+ rep.setDatabase(db);
+ db.getBaseDns().add(rep);
}
- DatabaseDescriptor db = new DatabaseDescriptor(id, replicas, nEntries);
databases.add(db);
- for (BaseDNDescriptor rep: replicas)
- {
- rep.setDatabase(db);
- }
}
}
diff --git a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/DatabaseDescriptor.java b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/DatabaseDescriptor.java
index 3f1a296..05a1af9 100644
--- a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/DatabaseDescriptor.java
+++ b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/DatabaseDescriptor.java
@@ -27,7 +27,7 @@
package org.opends.statuspanel;
-import java.util.Set;
+import java.util.SortedSet;
/**
* This class is used to represent a Database and is aimed to be used by the
@@ -36,7 +36,7 @@
public class DatabaseDescriptor
{
private String backendID;
- private Set<BaseDNDescriptor> baseDns;
+ private SortedSet<BaseDNDescriptor> baseDns;
private int entries;
/**
@@ -45,7 +45,8 @@
* @param baseDns the base DNs associated with the Database.
* @param entries the number of entries in the Database.
*/
- public DatabaseDescriptor(String backendID, Set<BaseDNDescriptor> baseDns,
+ public DatabaseDescriptor(String backendID,
+ SortedSet<BaseDNDescriptor> baseDns,
int entries)
{
this.backendID = backendID;
@@ -66,7 +67,7 @@
* Returns the Base DN objects associated with the database.
* @return the Base DN objects associated with the database.
*/
- public Set<BaseDNDescriptor> getBaseDns()
+ public SortedSet<BaseDNDescriptor> getBaseDns()
{
return baseDns;
}
@@ -97,7 +98,7 @@
if (equals)
{
- equals = baseDns.equals(desc.getBaseDns());
+ equals = desc.getBaseDns().equals(getBaseDns());
}
}
}
@@ -116,8 +117,10 @@
StringBuilder buf = new StringBuilder();
for (BaseDNDescriptor rep: getBaseDns())
{
- buf.append(rep.getDn());
+ buf.append(rep.hashCode()+";");
}
- return (getBackendID() + buf.toString() + getEntries()).hashCode();
+ buf.append(getBackendID() + getEntries());
+
+ return buf.toString().hashCode();
}
}
diff --git a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ListenerDescriptor.java b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ListenerDescriptor.java
index e00532a..90d6568 100644
--- a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ListenerDescriptor.java
+++ b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ListenerDescriptor.java
@@ -145,4 +145,21 @@
return (getAddressPort() + getProtocolDescription() +
getState()).hashCode();
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean equals(Object o)
+ {
+ boolean equals = false;
+ if (o == this)
+ {
+ equals = true;
+ }
+ else if (o instanceof ListenerDescriptor)
+ {
+ equals = hashCode() == o.hashCode();
+ }
+ return equals;
+ }
}
diff --git a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ServerStatusDescriptor.java b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ServerStatusDescriptor.java
index f33fab8..ecfc56c 100644
--- a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ServerStatusDescriptor.java
+++ b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ServerStatusDescriptor.java
@@ -238,6 +238,11 @@
if (equals)
{
+ equals = desc.getListeners().equals(getListeners());
+ }
+
+ if (equals)
+ {
equals = desc.getDatabases().equals(getDatabases());
}
@@ -266,8 +271,7 @@
*/
public int hashCode()
{
- return status.hashCode() + openConnections + databases.hashCode() +
- listeners.hashCode() + administrativeUsers.hashCode() +
+ return status.hashCode() + openConnections +
(String.valueOf(
installPath+openDSVersion+javaVersion+errorMsg+isAuthenticated)).
hashCode();
diff --git a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ServerStatusPooler.java b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ServerStatusPooler.java
index a56274c..97af64b 100644
--- a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ServerStatusPooler.java
+++ b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ServerStatusPooler.java
@@ -60,8 +60,8 @@
private int nTriesWithErrorOnline;
/* The pooling periods */
- private static final int OFFLINE_POOLING_PERIOD = 3000;
- private static final int ONLINE_POOLING_PERIOD = 5000;
+ private static final int OFFLINE_POOLING_PERIOD = 6000;
+ private static final int ONLINE_POOLING_PERIOD = 4000;
/**
* Default constructor.
diff --git a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/StatusCli.java b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/StatusCli.java
index e1dbac3..9d01935 100644
--- a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/StatusCli.java
+++ b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/StatusCli.java
@@ -719,7 +719,7 @@
}
else
{
- DatabasesTableModel databasesTableModel = new DatabasesTableModel();
+ DatabasesTableModel databasesTableModel = new DatabasesTableModel(true);
Set<BaseDNDescriptor> replicas = new HashSet<BaseDNDescriptor>();
Set<DatabaseDescriptor> dbs = desc.getDatabases();
for (DatabaseDescriptor db: dbs)
diff --git a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ui/DatabasesTableModel.java b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ui/DatabasesTableModel.java
index 5ba295e..e17b884 100644
--- a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ui/DatabasesTableModel.java
+++ b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ui/DatabasesTableModel.java
@@ -61,6 +61,17 @@
};
private int sortColumn = 0;
private boolean sortAscending = true;
+ private boolean displayReplicationInformation;
+
+ /**
+ * Constructor for this table model.
+ * @param displayReplicationInformation whether to display replication
+ * monitoring information or not.
+ */
+ public DatabasesTableModel(boolean displayReplicationInformation)
+ {
+ this.displayReplicationInformation = displayReplicationInformation;
+ }
/**
* Sets the data for this table model.
@@ -296,7 +307,7 @@
*/
public int getColumnCount()
{
- return 6;
+ return displayReplicationInformation ? 6 : 4;
}
/**
diff --git a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ui/StatusPanelDialog.java b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ui/StatusPanelDialog.java
index ee38635..0425421 100644
--- a/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ui/StatusPanelDialog.java
+++ b/opendj-sdk/opends/src/statuspanel/org/opends/statuspanel/ui/StatusPanelDialog.java
@@ -33,6 +33,7 @@
import java.awt.GridBagLayout;
import java.awt.Point;
import java.awt.Rectangle;
+import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
@@ -112,8 +113,10 @@
private HashSet<JLabel> subsectionLabels = new HashSet<JLabel>();
- private DatabasesTableModel dbTableModel;
- private JTable dbTable;
+ private DatabasesTableModel dbTableModelWithReplication;
+ private DatabasesTableModel dbTableModelWithoutReplication;
+ private JTable dbTableWithReplication;
+ private JTable dbTableWithoutReplication;
private ListenersTableModel listenersTableModel;
private JTable listenersTable;
@@ -122,9 +125,6 @@
private final String NOT_AVAILABLE = getMsg("not-available-label");
- private final int MAXIMAL_WIDTH = 1000;
- private final int MAXIMAL_HEIGHT = 1000;
-
/**
* ProgressDialog constructor.
*/
@@ -163,8 +163,8 @@
int packedMinWidth = (int) getPreferredSize().getWidth();
int packedMinHeight = (int) getPreferredSize().getHeight();
- int minWidth = Math.min(packedMinWidth, MAXIMAL_WIDTH);
- int minHeight = Math.min(packedMinHeight, MAXIMAL_HEIGHT);
+ int minWidth = Math.min(packedMinWidth, getMaximalWidth());
+ int minHeight = Math.min(packedMinHeight, getMaximalHeight());
addComponentListener(new MinimumSizeComponentListener(this,
minWidth, minHeight));
@@ -226,6 +226,18 @@
if (mustRepack)
{
pack();
+ int packedMinWidth = (int) getPreferredSize().getWidth();
+ int packedMinHeight = (int) getPreferredSize().getHeight();
+
+ int minWidth = Math.min(packedMinWidth, getMaximalWidth());
+ int minHeight = Math.min(packedMinHeight, getMaximalHeight());
+
+ if ((minWidth != packedMinWidth) || (minHeight != packedMinHeight))
+ {
+ setPreferredSize(new Dimension(minWidth, minHeight));
+ pack();
+ }
+
lastPackDescriptor = lastDescriptor;
}
}
@@ -744,18 +756,35 @@
p.add(createSubsectionTitle(getMsg("databases-title")), gbc);
- dbTableModel = new DatabasesTableModel();
- dbTable = UIFactory.makeSortableTable(dbTableModel,
+ dbTableModelWithReplication = new DatabasesTableModel(true);
+ dbTableModelWithoutReplication = new DatabasesTableModel(false);
+ dbTableWithReplication =
+ UIFactory.makeSortableTable(dbTableModelWithReplication,
new DatabasesCellRenderer(),
UIFactory.makeHeaderRenderer());
- toolTipManager.registerComponent(dbTable);
+ toolTipManager.registerComponent(dbTableWithReplication);
+ dbTableWithoutReplication =
+ UIFactory.makeSortableTable(dbTableModelWithoutReplication,
+ new DatabasesCellRenderer(),
+ UIFactory.makeHeaderRenderer());
+ toolTipManager.registerComponent(dbTableWithoutReplication);
gbc.insets.top = UIFactory.TOP_INSET_PRIMARY_FIELD;
- p.add(dbTable.getTableHeader(), gbc);
- int height = (int)dbTable.getTableHeader().getPreferredSize().getHeight();
- dbTable.setRowHeight(height);
+ p.add(dbTableWithReplication.getTableHeader(), gbc);
+ int height = (int)dbTableWithReplication.getTableHeader().
+ getPreferredSize().getHeight();
+ dbTableWithReplication.setRowHeight(height);
gbc.insets.top = 0;
- p.add(dbTable, gbc);
+ p.add(dbTableWithReplication, gbc);
+
+ gbc.insets.top = UIFactory.TOP_INSET_PRIMARY_FIELD;
+ p.add(dbTableWithoutReplication.getTableHeader(), gbc);
+ height = (int)dbTableWithoutReplication.getTableHeader().
+ getPreferredSize().getHeight();
+ dbTableWithoutReplication.setRowHeight(height);
+ gbc.insets.top = 0;
+ p.add(dbTableWithoutReplication, gbc);
+ dbTableWithoutReplication.setVisible(false);
gbc.insets.top = UIFactory.TOP_INSET_PRIMARY_FIELD;
lDbTableEmpty = UIFactory.makeJLabel(UIFactory.IconType.NO_ICON, "",
@@ -1063,12 +1092,16 @@
{
replicas.addAll(db.getBaseDns());
}
- dbTableModel.setData(replicas);
+ dbTableModelWithReplication.setData(replicas);
+ dbTableModelWithoutReplication.setData(replicas);
- if (dbTableModel.getRowCount() == 0)
+ if (dbTableModelWithReplication.getRowCount() == 0)
{
- dbTable.setVisible(false);
- dbTable.getTableHeader().setVisible(false);
+
+ dbTableWithoutReplication.setVisible(false);
+ dbTableWithoutReplication.getTableHeader().setVisible(false);
+ dbTableWithReplication.setVisible(false);
+ dbTableWithReplication.getTableHeader().setVisible(false);
lDbTableEmpty.setVisible(true);
if (desc.getStatus() == ServerStatusDescriptor.ServerStatus.STARTED)
{
@@ -1088,10 +1121,22 @@
}
else
{
- dbTable.setVisible(true);
- dbTable.getTableHeader().setVisible(true);
+ boolean replicated = false;
+ for (BaseDNDescriptor suffix: replicas)
+ {
+ if (suffix.getType() == BaseDNDescriptor.Type.REPLICATED)
+ {
+ replicated = true;
+ }
+ }
+
+ updateTableSizes(dbTableWithoutReplication);
+ updateTableSizes(dbTableWithReplication);
+ dbTableWithoutReplication.setVisible(!replicated);
+ dbTableWithoutReplication.getTableHeader().setVisible(!replicated);
+ dbTableWithReplication.setVisible(replicated);
+ dbTableWithReplication.getTableHeader().setVisible(replicated);
lDbTableEmpty.setVisible(false);
- updateTableSizes(dbTable);
}
}
@@ -1232,6 +1277,32 @@
}
}
+ private int getMaximalWidth()
+ {
+ Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+
+ boolean multipleScreen = screenSize.width / screenSize.height >= 2;
+
+ if (multipleScreen)
+ {
+ return Math.min((screenSize.width/2) - 100, 1000);
+ }
+ else
+ {
+ return Math.min(screenSize.width - 100, 1000);
+ }
+ }
+
+ /**
+ * Returns the maximum height we allow this dialog to have after pack.
+ * @return the maximum height we allow this dialog to have after pack.
+ */
+ private int getMaximalHeight()
+ {
+ Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+
+ return Math.min(screenSize.height - 100, 800);
+ }
/**
* Method written for testing purposes.
* @param args the arguments to be passed to the test program.
--
Gitblit v1.10.0