| | |
| | | * |
| | | * |
| | | * Copyright 2007-2010 Sun Microsystems, Inc. |
| | | * Portions Copyright 2011-2013 ForgeRock AS |
| | | * Portions Copyright 2011-2014 ForgeRock AS |
| | | */ |
| | | |
| | | package org.opends.server.tools.status; |
| | |
| | | import org.opends.guitools.controlpanel.datamodel.ServerDescriptor; |
| | | import org.opends.guitools.controlpanel.util.ControlPanelLog; |
| | | import org.opends.guitools.controlpanel.util.Utilities; |
| | | import org.opends.messages.Message; |
| | | import org.opends.messages.MessageBuilder; |
| | | import org.forgerock.i18n.LocalizableMessage; |
| | | import org.forgerock.i18n.LocalizableMessageBuilder; |
| | | import org.opends.server.admin.AdministrationConnector; |
| | | import org.opends.server.admin.client.ManagementContext; |
| | | import org.opends.server.admin.client.cli.DsFrameworkCliReturnCode; |
| | |
| | | try { |
| | | argParser.initializeGlobalArguments(getOutputStream()); |
| | | } catch (ArgumentException ae) { |
| | | Message message = ERR_CANNOT_INITIALIZE_ARGS.get(ae.getMessage()); |
| | | LocalizableMessage message = ERR_CANNOT_INITIALIZE_ARGS.get(ae.getMessage()); |
| | | println(message); |
| | | return ErrorReturnCode.ERROR_UNEXPECTED.getReturnCode(); |
| | | } |
| | |
| | | try { |
| | | argParser.parseArguments(args); |
| | | } catch (ArgumentException ae) { |
| | | Message message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage()); |
| | | LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage()); |
| | | println(message); |
| | | println(); |
| | | println(Message.raw(argParser.getUsage())); |
| | | println(LocalizableMessage.raw(argParser.getUsage())); |
| | | |
| | | return ErrorReturnCode.ERROR_PARSING_ARGS.getReturnCode(); |
| | | } |
| | |
| | | int v = argParser.validateGlobalOptions(getErrorStream()); |
| | | |
| | | if (v != DsFrameworkCliReturnCode.SUCCESSFUL_NOP.getReturnCode()) { |
| | | println(Message.raw(argParser.getUsage())); |
| | | println(LocalizableMessage.raw(argParser.getUsage())); |
| | | return v; |
| | | } else { |
| | | ControlPanelInfo controlInfo = ControlPanelInfo.getInstance(); |
| | |
| | | |
| | | private void writeStatus(ServerDescriptor desc) |
| | | { |
| | | Message[] labels = |
| | | LocalizableMessage[] labels = |
| | | { |
| | | INFO_SERVER_STATUS_LABEL.get(), |
| | | INFO_CONNECTIONS_LABEL.get(), |
| | |
| | | INFO_CTRL_PANEL_ADMIN_CONNECTOR_LABEL.get() |
| | | }; |
| | | int labelWidth = 0; |
| | | Message title = INFO_SERVER_STATUS_TITLE.get(); |
| | | LocalizableMessage title = INFO_SERVER_STATUS_TITLE.get(); |
| | | if (!isScriptFriendly()) |
| | | { |
| | | for (Message label : labels) |
| | | for (LocalizableMessage label : labels) |
| | | { |
| | | labelWidth = Math.max(labelWidth, label.length()); |
| | | } |
| | |
| | | private void writeStatusContents(ServerDescriptor desc, |
| | | int maxLabelWidth) |
| | | { |
| | | Message status; |
| | | LocalizableMessage status; |
| | | switch (desc.getStatus()) |
| | | { |
| | | case STARTED: |
| | |
| | | private void writeCurrentConnectionContents(ServerDescriptor desc, |
| | | int maxLabelWidth) |
| | | { |
| | | Message text; |
| | | LocalizableMessage text; |
| | | if (desc.getStatus() == ServerDescriptor.ServerStatus.STARTED) |
| | | { |
| | | int nConn = desc.getOpenConnections(); |
| | | if (nConn >= 0) |
| | | { |
| | | text = Message.raw(String.valueOf(nConn)); |
| | | text = LocalizableMessage.raw(String.valueOf(nConn)); |
| | | } |
| | | else |
| | | { |
| | |
| | | int maxLabelWidth) |
| | | { |
| | | writeLabelValue(INFO_HOSTNAME_LABEL.get(), |
| | | Message.raw(desc.getHostname()), |
| | | LocalizableMessage.raw(desc.getHostname()), |
| | | maxLabelWidth); |
| | | } |
| | | /** |
| | |
| | | int maxLabelWidth) |
| | | { |
| | | Set<DN> administrators = desc.getAdministrativeUsers(); |
| | | Message text; |
| | | LocalizableMessage text; |
| | | if (administrators.size() > 0) |
| | | { |
| | | TreeSet<DN> ordered = new TreeSet<DN>(); |
| | |
| | | DN first = ordered.iterator().next(); |
| | | writeLabelValue( |
| | | INFO_ADMINISTRATIVE_USERS_LABEL.get(), |
| | | Message.raw(first.toString()), |
| | | LocalizableMessage.raw(first.toString()), |
| | | maxLabelWidth); |
| | | |
| | | Iterator<DN> it = ordered.iterator(); |
| | |
| | | { |
| | | writeLabelValue( |
| | | INFO_ADMINISTRATIVE_USERS_LABEL.get(), |
| | | Message.raw(it.next().toString()), |
| | | LocalizableMessage.raw(it.next().toString()), |
| | | maxLabelWidth); |
| | | } |
| | | } |
| | |
| | | int maxLabelWidth) |
| | | { |
| | | writeLabelValue(INFO_INSTALLATION_PATH_LABEL.get(), |
| | | Message.raw(desc.getInstallPath()), |
| | | LocalizableMessage.raw(desc.getInstallPath()), |
| | | maxLabelWidth); |
| | | } |
| | | |
| | |
| | | int maxLabelWidth) |
| | | { |
| | | writeLabelValue(INFO_CTRL_PANEL_INSTANCE_PATH_LABEL.get(), |
| | | Message.raw(desc.getInstancePath()), |
| | | LocalizableMessage.raw(desc.getInstancePath()), |
| | | maxLabelWidth); |
| | | } |
| | | |
| | |
| | | { |
| | | String openDSVersion = desc.getOpenDSVersion(); |
| | | writeLabelValue(INFO_OPENDS_VERSION_LABEL.get(), |
| | | Message.raw(openDSVersion), |
| | | LocalizableMessage.raw(openDSVersion), |
| | | maxLabelWidth); |
| | | } |
| | | |
| | |
| | | private void writeJavaVersionContents(ServerDescriptor desc, |
| | | int maxLabelWidth) |
| | | { |
| | | Message text; |
| | | LocalizableMessage text; |
| | | if (desc.getStatus() == ServerDescriptor.ServerStatus.STARTED) |
| | | { |
| | | text = Message.raw(desc.getJavaVersion()); |
| | | text = LocalizableMessage.raw(desc.getJavaVersion()); |
| | | if (text == null) |
| | | { |
| | | if (!desc.isAuthenticated() || !desc.getExceptions().isEmpty()) |
| | |
| | | ConnectionHandlerDescriptor adminConnector = desc.getAdminConnector(); |
| | | if (adminConnector != null) |
| | | { |
| | | Message text = INFO_CTRL_PANEL_ADMIN_CONNECTOR_DESCRIPTION.get( |
| | | LocalizableMessage text = INFO_CTRL_PANEL_ADMIN_CONNECTOR_DESCRIPTION.get( |
| | | adminConnector.getPort()); |
| | | writeLabelValue(INFO_CTRL_PANEL_ADMIN_CONNECTOR_LABEL.get(), text, |
| | | maxLabelWidth); |
| | |
| | | { |
| | | if (!isScriptFriendly()) |
| | | { |
| | | Message title = INFO_LISTENERS_TITLE.get(); |
| | | LocalizableMessage title = INFO_LISTENERS_TITLE.get(); |
| | | getOutputStream().println(centerTitle(title)); |
| | | } |
| | | |
| | |
| | | */ |
| | | private void writeBaseDNContents(ServerDescriptor desc) |
| | | { |
| | | Message title = INFO_DATABASES_TITLE.get(); |
| | | LocalizableMessage title = INFO_DATABASES_TITLE.get(); |
| | | if (!isScriptFriendly()) |
| | | { |
| | | getOutputStream().println(centerTitle(title)); |
| | |
| | | { |
| | | for (OpenDsException ex : desc.getExceptions()) |
| | | { |
| | | Message errorMsg = ex.getMessageObject(); |
| | | LocalizableMessage errorMsg = ex.getMessageObject(); |
| | | if (errorMsg != null) |
| | | { |
| | | getOutputStream().println(); |
| | |
| | | * because the server is down. |
| | | * @return the text. |
| | | */ |
| | | private Message getNotAvailableBecauseServerIsDownText() |
| | | private LocalizableMessage getNotAvailableBecauseServerIsDownText() |
| | | { |
| | | displayMustStartLegend = true; |
| | | return INFO_NOT_AVAILABLE_SERVER_DOWN_CLI_LABEL.get(); |
| | |
| | | * because authentication is required. |
| | | * @return the text. |
| | | */ |
| | | private Message getNotAvailableBecauseAuthenticationIsRequiredText() |
| | | private LocalizableMessage getNotAvailableBecauseAuthenticationIsRequiredText() |
| | | { |
| | | displayMustAuthenticateLegend = true; |
| | | return INFO_NOT_AVAILABLE_AUTHENTICATION_REQUIRED_CLI_LABEL.get(); |
| | |
| | | * Returns the not available text explaining that the data is not available. |
| | | * @return the text. |
| | | */ |
| | | private Message getNotAvailableText() |
| | | private LocalizableMessage getNotAvailableText() |
| | | { |
| | | return INFO_NOT_AVAILABLE_LABEL.get(); |
| | | } |
| | |
| | | getOutputStream().println("-"); |
| | | for (int j=0; j<tableModel.getColumnCount(); j++) |
| | | { |
| | | MessageBuilder line = new MessageBuilder(); |
| | | LocalizableMessageBuilder line = new LocalizableMessageBuilder(); |
| | | line.append(tableModel.getColumnName(j)+": "); |
| | | if (j == 0) |
| | | { |
| | |
| | | TableBuilder table = new TableBuilder(); |
| | | for (int i=0; i< tableModel.getColumnCount(); i++) |
| | | { |
| | | table.appendHeading(Message.raw(tableModel.getColumnName(i))); |
| | | table.appendHeading(LocalizableMessage.raw(tableModel.getColumnName(i))); |
| | | } |
| | | for (int i=0; i<tableModel.getRowCount(); i++) |
| | | { |
| | |
| | | return v.split("<br>"); |
| | | } |
| | | |
| | | private Message getCellValue(Object v, ServerDescriptor desc) |
| | | private LocalizableMessage getCellValue(Object v, ServerDescriptor desc) |
| | | { |
| | | Message s = null; |
| | | LocalizableMessage s = null; |
| | | if (v != null) |
| | | { |
| | | if (v instanceof String) |
| | | { |
| | | s = Message.raw((String)v); |
| | | s = LocalizableMessage.raw((String)v); |
| | | } |
| | | else if (v instanceof Integer) |
| | | { |
| | | int nEntries = ((Integer)v).intValue(); |
| | | if (nEntries >= 0) |
| | | { |
| | | s = Message.raw(String.valueOf(nEntries)); |
| | | s = LocalizableMessage.raw(String.valueOf(nEntries)); |
| | | } |
| | | else |
| | | { |
| | |
| | | |
| | | int labelWidth = 0; |
| | | int labelWidthWithoutReplicated = 0; |
| | | Message[] labels = new Message[tableModel.getColumnCount()]; |
| | | LocalizableMessage[] labels = new LocalizableMessage[tableModel.getColumnCount()]; |
| | | for (int i=0; i<tableModel.getColumnCount(); i++) |
| | | { |
| | | Message header = Message.raw(tableModel.getColumnName(i)); |
| | | labels[i] = new MessageBuilder(header).append(":").toMessage(); |
| | | LocalizableMessage header = LocalizableMessage.raw(tableModel.getColumnName(i)); |
| | | labels[i] = new LocalizableMessageBuilder(header).append(":").toMessage(); |
| | | labelWidth = Math.max(labelWidth, labels[i].length()); |
| | | if ((i != 4) && (i != 5)) |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | Message replicatedLabel = INFO_BASEDN_REPLICATED_LABEL.get(); |
| | | LocalizableMessage replicatedLabel = INFO_BASEDN_REPLICATED_LABEL.get(); |
| | | for (int i=0; i<tableModel.getRowCount(); i++) |
| | | { |
| | | if (isScriptFriendly()) |
| | |
| | | } |
| | | for (int j=0; j<tableModel.getColumnCount(); j++) |
| | | { |
| | | Message value; |
| | | LocalizableMessage value; |
| | | Object v = tableModel.getValueAt(i, j); |
| | | if (v != null) |
| | | { |
| | |
| | | } |
| | | else if (v instanceof String) |
| | | { |
| | | value = Message.raw((String)v); |
| | | value = LocalizableMessage.raw((String)v); |
| | | } |
| | | else if (v instanceof Message) |
| | | else if (v instanceof LocalizableMessage) |
| | | { |
| | | value = (Message)v; |
| | | value = (LocalizableMessage)v; |
| | | } |
| | | else if (v instanceof Integer) |
| | | { |
| | | int nEntries = ((Integer)v).intValue(); |
| | | if (nEntries >= 0) |
| | | { |
| | | value = Message.raw(String.valueOf(nEntries)); |
| | | value = LocalizableMessage.raw(String.valueOf(nEntries)); |
| | | } |
| | | else |
| | | { |
| | |
| | | } |
| | | else |
| | | { |
| | | value = Message.EMPTY; |
| | | value = LocalizableMessage.EMPTY; |
| | | } |
| | | |
| | | if (value.equals(getNotAvailableText())) |
| | |
| | | } |
| | | } |
| | | |
| | | private void writeLabelValue(Message label, Message value, int maxLabelWidth) |
| | | private void writeLabelValue(LocalizableMessage label, LocalizableMessage value, int maxLabelWidth) |
| | | { |
| | | MessageBuilder buf = new MessageBuilder(); |
| | | LocalizableMessageBuilder buf = new LocalizableMessageBuilder(); |
| | | buf.append(label); |
| | | |
| | | int extra = maxLabelWidth - label.length(); |
| | |
| | | getOutputStream().println(wrapText(buf.toMessage())); |
| | | } |
| | | |
| | | private Message centerTitle(Message text) |
| | | private LocalizableMessage centerTitle(LocalizableMessage text) |
| | | { |
| | | Message centered; |
| | | LocalizableMessage centered; |
| | | if (text.length() <= getCommandLineMaxLineWidth() - 8) |
| | | { |
| | | MessageBuilder buf = new MessageBuilder(); |
| | | LocalizableMessageBuilder buf = new LocalizableMessageBuilder(); |
| | | int extra = Math.min(10, |
| | | (getCommandLineMaxLineWidth() - 8 - text.length()) / 2); |
| | | for (int i=0; i<extra; i++) |
| | |
| | | * @param text to wrap |
| | | * @return raw message representing wrapped string |
| | | */ |
| | | private Message wrapText(Message text) |
| | | private LocalizableMessage wrapText(LocalizableMessage text) |
| | | { |
| | | return Message.raw( |
| | | return LocalizableMessage.raw( |
| | | StaticUtils.wrapText(text, getCommandLineMaxLineWidth())); |
| | | } |
| | | } |