9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson/*
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * CDDL HEADER START
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson *
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * The contents of this file are subject to the terms of the
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * Common Development and Distribution License, Version 1.0 only
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * (the "License"). You may not use this file except in compliance
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * with the License.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson *
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac * or http://forgerock.org/license/CDDLv1.0.html.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * See the License for the specific language governing permissions
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * and limitations under the License.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson *
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * When distributing Covered Code, include this CDDL HEADER in each
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac * file and include the License file at legal-notices/CDDLv1_0.txt.
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac * If applicable, add the following below this CDDL HEADER, with the
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac * fields enclosed by brackets "[]" replaced with your own identifying
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac * information:
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * Portions Copyright [yyyy] [name of copyright owner]
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson *
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * CDDL HEADER END
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson *
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson *
a395dd575518d9e5280fc5d5d5ef47c61b174647ludovicp * Copyright 2006-2008 Sun Microsystems, Inc.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson */
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilsonpackage org.opends.server.tools.makeldif;
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suterimport org.opends.messages.Message;
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilsonimport java.util.List;
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilsonimport java.util.Random;
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
b4851fc75ef4634840dcbadec085d586d36b434dneil_a_wilsonimport org.opends.server.types.InitializationException;
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suterimport static org.opends.messages.ToolMessages.*;
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson/**
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * This class defines a tag that is used to indicate that a value should only be
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * included in a percentage of the entries.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson */
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilsonpublic class PresenceTag
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson extends Tag
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson{
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson // The percentage of the entries in which this attribute value should appear.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson private int percentage;
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson // The random number generator for this tag.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson private Random random;
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson /**
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * Creates a new instance of this presence tag.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson */
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson public PresenceTag()
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson {
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson percentage = 100;
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson }
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson /**
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * Retrieves the name for this tag.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson *
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @return The name for this tag.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson */
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson public String getName()
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson {
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson return "Presence";
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson }
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson /**
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * Indicates whether this tag is allowed for use in the extra lines for
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * branches.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson *
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @return <CODE>true</CODE> if this tag may be used in branch definitions,
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * or <CODE>false</CODE> if not.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson */
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson public boolean allowedInBranch()
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson {
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson return true;
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson }
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson /**
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * Performs any initialization for this tag that may be needed while parsing
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * a branch definition.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson *
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @param templateFile The template file in which this tag is used.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @param branch The branch in which this tag is used.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @param arguments The set of arguments provided for this tag.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @param lineNumber The line number on which this tag appears in the
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * template file.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @param warnings A list into which any appropriate warning messages
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * may be placed.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson *
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @throws InitializationException If a problem occurs while initializing
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * this tag.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson */
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson public void initializeForBranch(TemplateFile templateFile, Branch branch,
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson String[] arguments, int lineNumber,
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter List<Message> warnings)
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson throws InitializationException
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson {
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson initializeInternal(templateFile, arguments, lineNumber);
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson }
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson /**
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * Performs any initialization for this tag that may be needed while parsing
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * a template definition.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson *
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @param templateFile The template file in which this tag is used.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @param template The template in which this tag is used.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @param arguments The set of arguments provided for this tag.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @param lineNumber The line number on which this tag appears in the
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * template file.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @param warnings A list into which any appropriate warning messages
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * may be placed.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson *
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @throws InitializationException If a problem occurs while initializing
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * this tag.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson */
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson public void initializeForTemplate(TemplateFile templateFile,
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson Template template, String[] arguments,
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter int lineNumber, List<Message> warnings)
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson throws InitializationException
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson {
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson initializeInternal(templateFile, arguments, lineNumber);
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson }
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson /**
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * Performs any initialization for this tag that may be needed for this tag.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson *
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @param templateFile The template file in which this tag is used.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @param arguments The set of arguments provided for this tag.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @param lineNumber The line number on which this tag appears in the
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * template file.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson *
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @throws InitializationException If a problem occurs while initializing
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * this tag.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson */
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson private void initializeInternal(TemplateFile templateFile, String[] arguments,
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson int lineNumber)
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson throws InitializationException
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson {
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson random = templateFile.getRandom();
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson if (arguments.length != 1)
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson {
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter Message message = ERR_MAKELDIF_TAG_INVALID_ARGUMENT_COUNT.get(
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter getName(), lineNumber, 1, arguments.length);
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter throw new InitializationException(message);
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson }
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson try
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson {
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson percentage = Integer.parseInt(arguments[0]);
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson if (percentage < 0)
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson {
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter Message message = ERR_MAKELDIF_TAG_INTEGER_BELOW_LOWER_BOUND.get(
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter percentage, 0, getName(), lineNumber);
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter throw new InitializationException(message);
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson }
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson else if (percentage > 100)
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson {
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter Message message = ERR_MAKELDIF_TAG_INTEGER_ABOVE_UPPER_BOUND.get(
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter percentage, 100, getName(), lineNumber);
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter throw new InitializationException(message);
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson }
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson }
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson catch (NumberFormatException nfe)
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson {
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter Message message = ERR_MAKELDIF_TAG_CANNOT_PARSE_AS_INTEGER.get(
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter arguments[0], getName(), lineNumber);
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter throw new InitializationException(message);
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson }
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson }
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson /**
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * Generates the content for this tag by appending it to the provided tag.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson *
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @param templateEntry The entry for which this tag is being generated.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @param templateValue The template value to which the generated content
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * should be appended.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson *
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson * @return The result of generating content for this tag.
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson */
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson public TagResult generateValue(TemplateEntry templateEntry,
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson TemplateValue templateValue)
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson {
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson int intValue = random.nextInt(100);
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson if (intValue < percentage)
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson {
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson return TagResult.SUCCESS_RESULT;
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson }
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson else
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson {
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson return TagResult.OMIT_FROM_ENTRY;
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson }
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson }
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson}
9763c30263c2e128dade7dbb7fa4aeabc936d8b3neil_a_wilson