| | |
| | | * CDDL HEADER END |
| | | * |
| | | * |
| | | * Portions Copyright 2007 Sun Microsystems, Inc. |
| | | * Portions Copyright 2007-2008 Sun Microsystems, Inc. |
| | | */ |
| | | |
| | | package org.opends.guitools.statuspanel; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.HashSet; |
| | | import java.util.LinkedHashSet; |
| | |
| | | private HashSet<String> administrativeUsers = new HashSet<String>(); |
| | | private Message errorMessage; |
| | | private boolean replicationConfigured = false; |
| | | private HashSet<String> replicatedSuffixes = new HashSet<String>(); |
| | | private ArrayList<String> replicatedSuffixes = new ArrayList<String>(); |
| | | private HashMap<String, Integer> hmMissingChanges = |
| | | new HashMap<String, Integer>(); |
| | | private HashMap<String, Integer> hmAgeOfOldestMissingChanges = |
| | | new HashMap<String, Integer>(); |
| | | private HashMap<String, Long> hmAgeOfOldestMissingChanges = |
| | | new HashMap<String, Long>(); |
| | | |
| | | private String dn; |
| | | private String pwd; |
| | |
| | | ctls.setSearchScope(SearchControls.SUBTREE_SCOPE); |
| | | ctls.setReturningAttributes( |
| | | new String[] { |
| | | "ds-cfg-base-dn" |
| | | "ds-cfg-base-dn", |
| | | "ds-cfg-server-id" |
| | | }); |
| | | filter = "(objectclass=ds-cfg-replication-domain)"; |
| | | |
| | | jndiName = new LdapName( |
| | | "cn=Multimaster Synchronization,cn=Synchronization Providers,cn=config"); |
| | | |
| | | ArrayList<String> replicaIds = new ArrayList<String>(); |
| | | try |
| | | { |
| | | NamingEnumeration syncProviders = ctx.search(jndiName, filter, ctls); |
| | |
| | | { |
| | | SearchResult sr = (SearchResult)syncProviders.next(); |
| | | |
| | | replicatedSuffixes.addAll(getValues(sr, "ds-cfg-base-dn")); |
| | | replicatedSuffixes.add(getFirstValue(sr, "ds-cfg-base-dn")); |
| | | replicaIds.add(getFirstValue(sr, "ds-cfg-server-id")); |
| | | } |
| | | } |
| | | catch (NameNotFoundException nse) |
| | |
| | | ctls.setSearchScope(SearchControls.ONELEVEL_SCOPE); |
| | | ctls.setReturningAttributes( |
| | | new String[] { |
| | | "approximate-delay", "waiting-changes", "base-dn" |
| | | "approx-older-change-not-synchronized-millis", "missing-changes", |
| | | "base-dn", "server-id" |
| | | }); |
| | | filter = "(approximate-delay=*)"; |
| | | filter = "(missing-changes=*)"; |
| | | |
| | | jndiName = new LdapName("cn=monitor"); |
| | | |
| | |
| | | SearchResult sr = (SearchResult)monitorEntries.next(); |
| | | |
| | | String dn = getFirstValue(sr, "base-dn"); |
| | | String replicaId = getFirstValue(sr, "server-id"); |
| | | |
| | | for (String baseDn: replicatedSuffixes) |
| | | for (int i=0; i<replicatedSuffixes.size(); i++) |
| | | { |
| | | |
| | | if (Utils.areDnsEqual(dn, baseDn)) |
| | | String baseDn = replicatedSuffixes.get(i); |
| | | String id = replicaIds.get(i); |
| | | if (Utils.areDnsEqual(dn, baseDn) && id.equals(replicaId)) |
| | | { |
| | | try |
| | | { |
| | | hmAgeOfOldestMissingChanges.put(baseDn, |
| | | new Integer(getFirstValue(sr, "approximate-delay"))); |
| | | new Long(getFirstValue(sr, |
| | | "approx-older-change-not-synchronized-millis"))); |
| | | } |
| | | catch (Throwable t) |
| | | { |
| | |
| | | try |
| | | { |
| | | hmMissingChanges.put(baseDn, |
| | | new Integer(getFirstValue(sr, "waiting-changes"))); |
| | | new Integer(getFirstValue(sr, "missing-changes"))); |
| | | } |
| | | catch (Throwable t) |
| | | { |
| | |
| | | { |
| | | BaseDNDescriptor.Type type; |
| | | int missingChanges = -1; |
| | | int ageOfOldestMissingChange = -1; |
| | | long ageOfOldestMissingChange = -1; |
| | | String mapSuffixDn = null; |
| | | |
| | | boolean replicated = false; |
| | |
| | | type = BaseDNDescriptor.Type.REPLICATED; |
| | | |
| | | Integer missing = hmMissingChanges.get(mapSuffixDn); |
| | | Integer age = hmAgeOfOldestMissingChanges.get(mapSuffixDn); |
| | | Long age = hmAgeOfOldestMissingChanges.get(mapSuffixDn); |
| | | |
| | | if (age != null) |
| | | { |
| | | ageOfOldestMissingChange = age.intValue(); |
| | | ageOfOldestMissingChange = age.longValue(); |
| | | } |
| | | |
| | | if (missing != null) |