From 8990a259a41f2f90606233139c4937fc1c8182cc Mon Sep 17 00:00:00 2001
From: Mark Craig <mark.craig@forgerock.com>
Date: Wed, 18 Feb 2015 10:12:37 +0000
Subject: [PATCH] CR-6114 OPENDJ-1822 Separate generated content from formatting
---
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java | 363 +++++++++++++++++++++++----------------------------
1 files changed, 162 insertions(+), 201 deletions(-)
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java
index 261028a..a3288c0 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java
@@ -22,12 +22,13 @@
*
*
* Copyright 2007-2010 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2015 ForgeRock AS.
*/
package org.forgerock.opendj.config.dsconfig;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.CliMessages.*;
+import static com.forgerock.opendj.cli.DocGenerationHelper.*;
import static com.forgerock.opendj.cli.Utils.*;
import static com.forgerock.opendj.dsconfig.DsconfigMessages.*;
import static com.forgerock.opendj.util.StaticUtils.*;
@@ -54,6 +55,7 @@
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
@@ -127,93 +129,61 @@
*/
public final class DSConfig extends ConsoleApplication {
- private static final String ALLOW_UNLIMITED = "A value of \"-1\" or \"unlimited\" for no limit.";
- private static final String ACI_SYNTAX_REL_URL =
- "<link" + EOL
- + " xlink:show=\"new\"" + EOL
- + " xlink:href=\"admin-guide#about-acis\"" + EOL
- + " xlink:role=\"http://docbook.org/xlink/role/olink\">" + EOL
- + "<citetitle>About Access Control Instructions</citetitle></link>" + EOL;
- private static final String DURATION_SYNTAX_REL_URL =
- " <itemizedlist>" + EOL
- + " <para>Some property values take a time duration. Durations are expressed" + EOL
- + " as numbers followed by units. For example <literal>1 s</literal> means" + EOL
- + " one second, and <literal>2 w</literal> means two weeks. Some durations" + EOL
- + " have minimum granularity or maximum units, so you cannot necessary specify" + EOL
- + " every duration in milliseconds or weeks for example. Some durations allow" + EOL
- + " you to use a special value to mean unlimited. Units are specified as" + EOL
- + " follows.</para>" + EOL
- + " <listitem><para><literal>ms</literal>: milliseconds</para></listitem>" + EOL
- + " <listitem><para><literal>s</literal>: seconds</para></listitem>" + EOL
- + " <listitem><para><literal>m</literal>: minutes</para></listitem>" + EOL
- + " <listitem><para><literal>h</literal>: hours</para></listitem>" + EOL
- + " <listitem><para><literal>d</literal>: days</para></listitem>" + EOL
- + " <listitem><para><literal>w</literal>: weeks</para></listitem>" + EOL
- + " </itemizedlist>" + EOL;
-
- // FIXME: I18n support. Today all the strings are hardcoded in this file
+ /**
+ * This class provides additional information about subcommands for generated reference documentation.
+ */
private final class DSConfigSubCommandUsageHandler implements SubCommandUsageHandler {
+ /** Marker to open a DocBook XML paragraph. */
+ private String op = "<para>";
+
+ /** Marker to close a DocBook XML paragraph. */
+ private String cp = "</para>";
+
/** {@inheritDoc} */
@Override
- public void appendArgumentAdditionalInfo(StringBuilder sb, SubCommand sc, Argument a, String nameOption) {
+ public String getArgumentAdditionalInfo(SubCommand sc, Argument a, String nameOption) {
+ StringBuilder sb = new StringBuilder();
final AbstractManagedObjectDefinition<?, ?> defn = getManagedObjectDefinition(sc);
if (defn == null) {
- return;
+ return "";
}
- final String longID = a.getLongIdentifier();
- if ("set".equals(longID)
- || "reset".equals(longID)
- || "add".equals(longID)
- || "remove".equals(longID)) {
- sb.append(" <para>").append(EOL);
+ if (doesHandleProperties(a)) {
final LocalizableMessage name = defn.getUserFriendlyName();
- sb.append(" ").append(name).append(" properties depend on the ").append(name)
- .append(" type, which depends on the ").append(nameOption).append(" option.").append(EOL);
- sb.append(" </para>").append(EOL);
+ sb.append(op).append(REF_DSCFG_ARG_ADDITIONAL_INFO.get(name, name, nameOption)).append(cp).append(EOL);
} else {
listSubtypes(sb, a, defn);
}
- return;
+ return sb.toString();
}
private void listSubtypes(StringBuilder sb, Argument a, AbstractManagedObjectDefinition<?, ?> defn) {
final LocalizableMessage placeholder = a.getValuePlaceholder();
- sb.append(" <variablelist>").append(EOL);
- sb.append(" <para>").append(EOL);
- final LocalizableMessage name = defn.getUserFriendlyName();
- sb.append(" ").append(name).append(" properties depend on the ").append(name)
- .append(" type, which depends on the ").append(placeholder).append(" you provide.").append(EOL);
- sb.append(" </para>").append(EOL);
- sb.append(" <para>").append(EOL);
- sb.append(" By default, OpenDJ directory server supports the following ")
- .append(name).append(" types:").append(EOL);
- sb.append(" </para>").append(EOL);
+ Map<String, Object> map = new HashMap<String, Object>();
+
+ final LocalizableMessage name = defn.getUserFriendlyName();
+ map.put("dependencies", REF_DSCFG_SUBTYPE_DEPENDENCIES.get(name, name, placeholder));
+ map.put("typesIntro", REF_DSCFG_SUBTYPE_TYPES_INTRO.get(name));
+
+ List<Map<String, Object>> children = new LinkedList<Map<String, Object>>();
for (AbstractManagedObjectDefinition<?, ?> childDefn : getLeafChildren(defn)) {
- sb.append(" <varlistentry>").append(EOL);
- sb.append(" <term>").append(childDefn.getName()).append("</term>").append(EOL);
- sb.append(" <listitem>").append(EOL);
- sb.append(" <para>").append(EOL);
- sb.append(" Default ").append(placeholder).append(": ")
- .append(childDefn.getUserFriendlyName()).append(EOL);
- sb.append(" </para>").append(EOL);
- sb.append(" <para>").append(EOL);
- final boolean isEnabled = propertyExists(childDefn, "enabled");
- sb.append(" Enabled by default: ").append(isEnabled).append(EOL);
- sb.append(" </para>").append(EOL);
- sb.append(" <para>").append(EOL);
- sb.append(" See <xref linkend=\"")
- .append(getScriptName()).append("-")
- .append(a.getLongIdentifier()).append("-")
- .append(defn.getName()).append("-prop-").append(childDefn.getName())
- .append("\" /> for the properties of this ").append(defn.getUserFriendlyName())
- .append(" type.").append(EOL);
- sb.append(" </para>").append(EOL);
- sb.append(" </listitem>").append(EOL);
- sb.append(" </varlistentry>").append(EOL);
+
+ Map<String, Object> child = new HashMap<String, Object>();
+
+ child.put("name", childDefn.getName());
+ child.put("default", REF_DSCFG_CHILD_DEFAULT.get(placeholder, childDefn.getUserFriendlyName()));
+ child.put("enabled", REF_DSCFG_CHILD_ENABLED_BY_DEFAULT.get(propertyExists(childDefn, "enabled")));
+
+ final String link = getLink(getScriptName() + "-" + a.getLongIdentifier()
+ + "-" + defn.getName() + "-prop-" + childDefn.getName());
+ child.put("link", REF_DSCFG_CHILD_LINK.get(link, defn.getUserFriendlyName()));
+
+ children.add(child);
}
- sb.append(" </variablelist>").append(EOL);
+ map.put("children", children);
+
+ applyTemplate(sb, "dscfgListSubtypes.ftl", map);
}
private boolean propertyExists(AbstractManagedObjectDefinition<?, ?> defn, String name) {
@@ -226,27 +196,26 @@
/** {@inheritDoc} */
@Override
- public void appendProperties(StringBuilder sb, SubCommand sc) {
+ public String getProperties(SubCommand sc) {
+ StringBuilder sb = new StringBuilder();
final AbstractManagedObjectDefinition<?, ?> defn = getManagedObjectDefinition(sc);
if (defn == null) {
- return;
+ return "";
}
for (AbstractManagedObjectDefinition<?, ?> childDefn : getLeafChildren(defn)) {
final List<PropertyDefinition<?>> props =
new ArrayList<PropertyDefinition<?>>(childDefn.getAllPropertyDefinitions());
Collections.sort(props);
-
+ Map<String, Object> map = new HashMap<String, Object>();
final String propPrefix = getScriptName() + "-" + sc.getName() + "-" + childDefn.getName();
- sb.append(" <refsect3 xml:id=\"").append(propPrefix).append("\">").append(EOL);
- sb.append(" <title>").append(childDefn.getUserFriendlyName()).append("</title>").append(EOL);
- sb.append(" <para>").append(EOL);
- sb.append(" ").append(defn.getUserFriendlyPluralName()).append(" of type ")
- .append(childDefn.getName()).append(" have the following properties:").append(EOL);
- sb.append(" </para>").append(EOL);
- toVariableList(props, defn, propPrefix, sb);
- sb.append(" </refsect3>").append(EOL);
+ map.put("id", propPrefix);
+ map.put("title", childDefn.getUserFriendlyName());
+ map.put("intro", REF_DSCFG_PROPS_INTRO.get(defn.getUserFriendlyPluralName(), childDefn.getName()));
+ map.put("list", toVariableList(props, defn, propPrefix));
+ applyTemplate(sb, "dscfgAppendProps.ftl", map);
}
+ return sb.toString();
}
private AbstractManagedObjectDefinition<?, ?> getManagedObjectDefinition(SubCommand sc) {
@@ -298,57 +267,57 @@
return null;
}
- private void toVariableList(List<PropertyDefinition<?>> props, AbstractManagedObjectDefinition<?, ?> defn,
- String propPrefix, StringBuilder b) {
- final String indent = " ";
- b.append(" <variablelist>").append(EOL);
+ private String toVariableList(List<PropertyDefinition<?>> props, AbstractManagedObjectDefinition<?, ?> defn,
+ String propPrefix) {
+ StringBuilder b = new StringBuilder();
+ Map<String, Object> map = new HashMap<String, Object>();
+
+ List<Map<String, Object>> properties = new LinkedList<Map<String, Object>>();
for (PropertyDefinition<?> prop : props) {
- b.append(" <varlistentry xml:id=\"")
- .append(propPrefix).append("-").append(prop.getName()).append("\">").append(EOL);
- b.append(" <term>").append(prop.getName()).append("</term>").append(EOL);
- b.append(" <listitem>").append(EOL);
- b.append(" <variablelist>").append(EOL);
- appendVarlistentry(b, "Description", getDescriptionString(prop), indent);
- appendDefaultBehavior(b, indent, prop);
- appendAllowedValues(b, prop, indent);
- appendVarlistentry(b, "Multi-valued", getYN(prop, MULTI_VALUED), indent);
- appendVarlistentry(b, "Required", getYN(prop, MANDATORY), indent);
- appendVarlistentry(b, "Admin Action Required", getAdminActionRequired(prop, defn), indent);
- appendVarlistentry(b, "Advanced Property", getYNAdvanced(prop, ADVANCED), indent);
- appendVarlistentry(b, "Read-only", getYN(prop, READ_ONLY), indent);
- b.append(" </variablelist>").append(EOL);
- b.append(" </listitem>").append(EOL);
- b.append(" </varlistentry>").append(EOL);
+ Map<String, Object> property = new HashMap<String, Object>();
+ property.put("id", propPrefix + "-" + prop.getName());
+ property.put("term", prop.getName());
+ property.put("descTitle", REF_TITLE_DESCRIPTION.get());
+ property.put("description", getDescriptionString(prop));
+
+ final StringBuilder sb = new StringBuilder();
+ appendDefaultBehavior(sb, prop);
+ appendAllowedValues(sb, prop);
+ appendVarListEntry(sb, REF_DSCFG_PROPS_LABEL_MULTI_VALUED.get().toString(), getYN(prop, MULTI_VALUED));
+ appendVarListEntry(sb, REF_DSCFG_PROPS_LABEL_REQUIRED.get().toString(), getYN(prop, MANDATORY));
+ appendVarListEntry(sb, REF_DSCFG_PROPS_LABEL_ADMIN_ACTION_REQUIRED.get().toString(),
+ getAdminActionRequired(prop, defn));
+ appendVarListEntry(sb, REF_DSCFG_PROPS_LABEL_ADVANCED_PROPERTY.get().toString(),
+ getYNAdvanced(prop, ADVANCED));
+ appendVarListEntry(sb, REF_DSCFG_PROPS_LABEL_READ_ONLY.get().toString(), getYN(prop, READ_ONLY));
+ property.put("list", sb.toString());
+
+ properties.add(property);
}
- b.append(" </variablelist>").append(EOL);
+ map.put("properties", properties);
+
+ applyTemplate(b, "dscfgVariableList.ftl", map);
+ return b.toString();
}
- private StringBuilder appendVarlistentry(StringBuilder b, String term, Object para, String indent) {
- b.append(indent).append("<varlistentry>").append(EOL);
- b.append(indent).append(" <term>").append(term).append("</term>").append(EOL);
- b.append(indent).append(" <listitem>").append(EOL);
- b.append(indent).append(" <para>").append(para).append("</para>").append(EOL);
- b.append(indent).append(" </listitem>").append(EOL);
- b.append(indent).append("</varlistentry>").append(EOL);
+ private StringBuilder appendVarListEntry(StringBuilder b, String term, Object definition) {
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("term", term);
+ map.put("definition", definition);
+ applyTemplate(b, "dscfgVarListEntry.ftl", map);
return b;
}
- private void appendDefaultBehavior(StringBuilder b, final String indent, PropertyDefinition<?> prop) {
- b.append(indent).append("<varlistentry>").append(EOL);
- b.append(indent).append(" <term>").append("Default Value").append("</term>").append(EOL);
- b.append(indent).append(" <listitem>").append(EOL);
- appendDefaultBehaviorString(b, indent + " ", prop);
- b.append(indent).append(" </listitem>").append(EOL);
- b.append(indent).append("</varlistentry>").append(EOL);
+ private void appendDefaultBehavior(StringBuilder b, PropertyDefinition<?> prop) {
+ StringBuilder sb = new StringBuilder();
+ appendDefaultBehaviorString(sb, prop);
+ appendVarListEntry(b, REF_DSCFG_PROPS_LABEL_DEFAULT_VALUE.get().toString(), sb.toString());
}
- private void appendAllowedValues(StringBuilder b, PropertyDefinition<?> prop, String indent) {
- b.append(indent).append("<varlistentry>").append(EOL);
- b.append(indent).append(" <term>").append("Allowed Values").append("</term>").append(EOL);
- b.append(indent).append(" <listitem>").append(EOL);
- appendSyntax(b, prop, indent + " ");
- b.append(indent).append(" </listitem>").append(EOL);
- b.append(indent).append("</varlistentry>").append(EOL);
+ private void appendAllowedValues(StringBuilder b, PropertyDefinition<?> prop) {
+ StringBuilder sb = new StringBuilder();
+ appendSyntax(sb, prop);
+ appendVarListEntry(b, REF_DSCFG_PROPS_LABEL_ALLOWED_VALUES.get().toString(), sb.toString());
}
private Object getDescriptionString(PropertyDefinition<?> prop) {
@@ -363,152 +332,146 @@
final Type actionType = adminAction.getType();
final StringBuilder action = new StringBuilder();
if (actionType == Type.COMPONENT_RESTART) {
- action.append("The ").append(defn.getUserFriendlyName())
- .append(" must be disabled and re-enabled for changes to this setting to take effect");
+ action.append(op)
+ .append(REF_DSCFG_ADMIN_ACTION_COMPONENT_RESTART.get(defn.getUserFriendlyName()))
+ .append(cp);
} else if (actionType == Type.SERVER_RESTART) {
- action.append("Restart the server");
+ action.append(op).append(REF_DSCFG_ADMIN_ACTION_SERVER_RESTART.get()).append(cp);
} else if (actionType == Type.NONE) {
- action.append("None");
+ action.append(op).append(REF_DSCFG_ADMIN_ACTION_NONE.get()).append(cp);
}
if (synopsis != null) {
- if (action.length() > 0) {
- action.append(". ");
- }
- action.append(synopsis);
+ action.append(op).append(synopsis).append(cp);
}
return action.toString();
}
- return "None";
+ return op + REF_DSCFG_ADMIN_ACTION_NONE.get() + cp;
}
private String getYN(PropertyDefinition<?> prop, PropertyOption option) {
- return prop.hasOption(option) ? "Yes" : "No";
+ LocalizableMessage msg = prop.hasOption(option) ? REF_DSCFG_PROP_YES.get() : REF_DSCFG_PROP_NO.get();
+ return op + msg + cp;
}
private String getYNAdvanced(PropertyDefinition<?> prop, PropertyOption option) {
- return prop.hasOption(option) ? "Yes (Use --advanced in interactive mode.)" : "No";
+ LocalizableMessage msg = prop.hasOption(option)
+ ? REF_DSCFG_PROP_YES_ADVANCED.get() : REF_DSCFG_PROP_NO.get();
+ return op + msg + cp;
}
- private void appendDefaultBehaviorString(StringBuilder b, String indent, PropertyDefinition<?> prop) {
- b.append(indent);
+ private void appendDefaultBehaviorString(StringBuilder b, PropertyDefinition<?> prop) {
final DefaultBehaviorProvider<?> defaultBehavior = prop.getDefaultBehaviorProvider();
if (defaultBehavior instanceof UndefinedDefaultBehaviorProvider) {
- b.append("<para>None</para>").append(EOL);
- return;
+ b.append(op).append(REF_DSCFG_DEFAULT_BEHAVIOR_NONE.get()).append(cp).append(EOL);
} else if (defaultBehavior instanceof DefinedDefaultBehaviorProvider) {
DefinedDefaultBehaviorProvider<?> behavior = (DefinedDefaultBehaviorProvider<?>) defaultBehavior;
final Collection<String> defaultValues = behavior.getDefaultValues();
if (defaultValues.size() == 0) {
- b.append("<para>None</para>").append(EOL);
+ b.append(op).append(REF_DSCFG_DEFAULT_BEHAVIOR_NONE.get()).append(cp).append(EOL);
} else if (defaultValues.size() == 1) {
- b.append("<para>").append(defaultValues.iterator().next()).append("</para>").append(EOL);
+ b.append(op).append(REF_DSCFG_DEFAULT_BEHAVIOR.get(defaultValues.iterator().next()))
+ .append(cp).append(EOL);
} else {
final Iterator<String> it = defaultValues.iterator();
- b.append("<para>").append(it.next()).append("</para>");
+ b.append(op).append(REF_DSCFG_DEFAULT_BEHAVIOR.get(it.next())).append(cp);
for (; it.hasNext();) {
- final String str = it.next();
- b.append(EOL).append(indent).append("<para>").append(str).append("</para>");
+ b.append(EOL).append(op).append(REF_DSCFG_DEFAULT_BEHAVIOR.get(it.next())).append(cp);
}
b.append(EOL);
}
- return;
} else if (defaultBehavior instanceof AliasDefaultBehaviorProvider) {
AliasDefaultBehaviorProvider<?> behavior = (AliasDefaultBehaviorProvider<?>) defaultBehavior;
- b.append("<para>").append(behavior.getSynopsis()).append("</para>").append(EOL);
- return;
+ b.append(op).append(REF_DSCFG_DEFAULT_BEHAVIOR.get(behavior.getSynopsis())).append(cp).append(EOL);
} else if (defaultBehavior instanceof RelativeInheritedDefaultBehaviorProvider) {
final RelativeInheritedDefaultBehaviorProvider<?> behavior =
(RelativeInheritedDefaultBehaviorProvider<?>) defaultBehavior;
- appendDefaultBehaviorString(b, indent,
+ appendDefaultBehaviorString(b,
behavior.getManagedObjectDefinition().getPropertyDefinition(behavior.getPropertyName()));
- return;
} else if (defaultBehavior instanceof AbsoluteInheritedDefaultBehaviorProvider) {
final AbsoluteInheritedDefaultBehaviorProvider<?> behavior =
(AbsoluteInheritedDefaultBehaviorProvider<?>) defaultBehavior;
- appendDefaultBehaviorString(b, indent,
+ appendDefaultBehaviorString(b,
behavior.getManagedObjectDefinition().getPropertyDefinition(behavior.getPropertyName()));
- return;
}
}
- private void appendSyntax(final StringBuilder b, PropertyDefinition<?> prop, final String indent) {
+ private void appendSyntax(final StringBuilder b, PropertyDefinition<?> prop) {
// Create a visitor for performing syntax specific processing.
PropertyDefinitionVisitor<String, Void> visitor = new PropertyDefinitionVisitor<String, Void>() {
@Override
public String visitACI(ACIPropertyDefinition prop, Void p) {
- b.append(indent).append("<para>").append(ACI_SYNTAX_REL_URL).append("</para>").append(EOL);
+ b.append(op).append(REF_DSCFG_ACI_SYNTAX_REL_URL.get()).append(cp).append(EOL);
return null;
}
@Override
public String visitAggregation(AggregationPropertyDefinition prop, Void p) {
- b.append(indent).append("<para>");
+ b.append(op);
final RelationDefinition<?, ?> rel = prop.getRelationDefinition();
- final String linkStr = getLink(rel.getName() + ".html");
- b.append("The DN of any ").append(linkStr).append(". ");
+ final String linkStr = getLink(rel.getName());
+ b.append(REF_DSCFG_AGGREGATION.get(linkStr)).append(". ");
final LocalizableMessage synopsis = prop.getSourceConstraintSynopsis();
if (synopsis != null) {
b.append(synopsis);
}
- b.append("</para>").append(EOL);
+ b.append(cp).append(EOL);
return null;
}
@Override
public String visitAttributeType(AttributeTypePropertyDefinition prop, Void p) {
- b.append(indent).append("<para>");
- b.append("The name of an attribute type defined in the server schema.");
- b.append("</para>").append(EOL);
+ b.append(op).append(REF_DSCFG_ANY_ATTRIBUTE.get()).append(".").append(cp).append(EOL);
return null;
}
@Override
public String visitBoolean(BooleanPropertyDefinition prop, Void p) {
- b.append(indent).append("<para>true</para>").append(EOL);
- b.append(indent).append("<para>false</para>").append(EOL);
+ b.append(op).append("true").append(cp).append(EOL);
+ b.append(op).append("false").append(cp).append(EOL);
return null;
}
@Override
public String visitClass(ClassPropertyDefinition prop, Void p) {
- b.append(indent).append("<para>");
- b.append("A java class that implements or extends the class(es) :")
- .append(Utils.joinAsString(EOL, prop.getInstanceOfInterface()));
- b.append("</para>").append(EOL);
+ b.append(op).append(REF_DSCFG_JAVA_PLUGIN.get()).append(" ")
+ .append(Utils.joinAsString(EOL, prop.getInstanceOfInterface())).append(cp).append(EOL);
return null;
}
@Override
public String visitDN(DNPropertyDefinition prop, Void p) {
- b.append(indent).append("<para>");
- b.append("A valid DN.");
+ b.append(op).append(REF_DSCFG_VALID_DN.get());
final DN baseDN = prop.getBaseDN();
if (baseDN != null) {
- b.append(" ").append(baseDN);
+ b.append(": ").append(baseDN);
+ } else {
+ b.append(".");
}
- b.append("</para>").append(EOL);
+ b.append(cp).append(EOL);
return null;
}
@Override
public String visitDuration(DurationPropertyDefinition prop, Void p) {
- b.append(indent).append("<para>");
- b.append(DURATION_SYNTAX_REL_URL).append(". ");
+ b.append(REF_DSCFG_DURATION_SYNTAX_REL_URL.get()).append(EOL);
+ b.append(op);
if (prop.isAllowUnlimited()) {
- b.append(ALLOW_UNLIMITED).append(" ");
+ b.append(REF_DSCFG_ALLOW_UNLIMITED.get()).append(" ");
}
if (prop.getMaximumUnit() != null) {
- b.append("Maximum unit is \"").append(prop.getMaximumUnit().getLongName()).append("\". ");
+ final String maxUnitName = prop.getMaximumUnit().getLongName();
+ b.append(REF_DSCFG_DURATION_MAX_UNIT.get(maxUnitName)).append(".");
}
final DurationUnit baseUnit = prop.getBaseUnit();
- b.append("Lower limit is ").append(valueOf(baseUnit, prop.getLowerLimit()))
- .append(" ").append(baseUnit.getLongName()).append(". ");
+ final long lowerLimit = valueOf(baseUnit, prop.getLowerLimit());
+ final String unitName = baseUnit.getLongName();
+ b.append(REF_DSCFG_DURATION_LOWER_LIMIT.get(lowerLimit, unitName)).append(".");
if (prop.getUpperLimit() != null) {
- b.append("Upper limit is ").append(valueOf(baseUnit, prop.getUpperLimit()))
- .append(" ").append(baseUnit.getLongName()).append(". ");
+ final long upperLimit = valueOf(baseUnit, prop.getUpperLimit());
+ b.append(REF_DSCFG_DURATION_UPPER_LIMIT.get(upperLimit, unitName)).append(".");
}
- b.append("</para>").append(EOL);
+ b.append(cp).append(EOL);
return null;
}
@@ -518,79 +481,77 @@
@Override
public String visitEnum(EnumPropertyDefinition prop, Void p) {
- b.append(indent).append("<para>").append(EOL);
- b.append(indent).append(" <variablelist>").append(EOL);
+ b.append("<variablelist>").append(EOL);
final Class<?> en = prop.getEnumClass();
final Object[] constants = en.getEnumConstants();
for (Object enumConstant : constants) {
final LocalizableMessage valueSynopsis = prop.getValueSynopsis((Enum) enumConstant);
- appendVarlistentry(b, enumConstant.toString(), valueSynopsis, indent + " ");
+ appendVarListEntry(b, enumConstant.toString(), valueSynopsis);
}
- b.append(indent).append(" </variablelist>").append(EOL);
- b.append(indent).append("</para>").append(EOL);
+ b.append("</variablelist>").append(EOL);
return null;
}
@Override
public String visitInteger(IntegerPropertyDefinition prop, Void p) {
- b.append(indent).append("<para>");
- b.append("An integer value. Lower value is ").append(prop.getLowerLimit()).append(".");
+ b.append(op).append(REF_DSCFG_INT.get()).append(". ")
+ .append(REF_DSCFG_INT_LOWER_LIMIT.get(prop.getLowerLimit())).append(".");
if (prop.getUpperLimit() != null) {
- b.append(" Upper value is ").append(prop.getUpperLimit()).append(".");
+ b.append(" ").append(REF_DSCFG_INT_UPPER_LIMIT.get(prop.getUpperLimit())).append(".");
}
if (prop.isAllowUnlimited()) {
- b.append(" ").append(ALLOW_UNLIMITED);
+ b.append(" ").append(REF_DSCFG_ALLOW_UNLIMITED.get());
}
if (prop.getUnitSynopsis() != null) {
- b.append(" Unit is ").append(prop.getUnitSynopsis()).append(".");
+ b.append(" ").append(REF_DSCFG_INT_UNIT.get(prop.getUnitSynopsis())).append(".");
}
- b.append("</para>").append(EOL);
+ b.append(cp).append(EOL);
return null;
}
@Override
public String visitIPAddress(IPAddressPropertyDefinition prop, Void p) {
- b.append(indent).append("<para>An IP address</para>").append(EOL);
+ b.append(op).append(REF_DSCFG_IP_ADDRESS.get()).append(cp).append(EOL);
return null;
}
@Override
public String visitIPAddressMask(IPAddressMaskPropertyDefinition prop, Void p) {
- b.append(indent).append("<para>An IP address mask</para>").append(EOL);
+ b.append(op).append(REF_DSCFG_IP_ADDRESS_MASK.get()).append(cp).append(EOL);
return null;
}
@Override
public String visitSize(SizePropertyDefinition prop, Void p) {
- b.append(indent).append("<para>");
+ b.append(op);
if (prop.getLowerLimit() != 0) {
- b.append(" Lower value is ").append(prop.getLowerLimit()).append(".");
+ b.append(REF_DSCFG_INT_LOWER_LIMIT.get(prop.getLowerLimit())).append(".");
}
if (prop.getUpperLimit() != null) {
- b.append(" Upper value is ").append(prop.getUpperLimit()).append(" .");
+ b.append(REF_DSCFG_INT_UPPER_LIMIT.get(prop.getUpperLimit())).append(".");
}
if (prop.isAllowUnlimited()) {
- b.append(" ").append(ALLOW_UNLIMITED);
+ b.append(REF_DSCFG_ALLOW_UNLIMITED.get());
}
- b.append("</para>").append(EOL);
+ b.append(cp).append(EOL);
return null;
}
@Override
public String visitString(StringPropertyDefinition prop, Void p) {
- b.append(indent).append("<para>");
+ b.append(op);
if (prop.getPatternSynopsis() != null) {
b.append(prop.getPatternSynopsis());
} else {
- b.append("A String");
+ b.append(REF_DSCFG_STRING.get());
}
- b.append("</para>").append(EOL);
+ b.append(cp).append(EOL);
return null;
}
@Override
public String visitUnknown(PropertyDefinition prop, Void p) {
- b.append(indent).append("<para>Unknown</para>").append(EOL);
+ b.append(op).append(REF_DSCFG_UNKNOWN.get()).append(cp).append(EOL);
return null;
}
};
@@ -600,7 +561,7 @@
}
private String getLink(String target) {
- return " <xref linkend=" + target + " />";
+ return " <xref linkend=\"" + target + "\" />";
}
}
--
Gitblit v1.10.0