/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at
* trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
* add the following below this CDDL HEADER, with the fields enclosed
* by brackets "[]" replaced with your own identifying information:
* Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*
*
* Copyright 2008 Sun Microsystems, Inc.
* Portions Copyright 2011 ForgeRock AS
*/
/**
* This class provides an implementation of an Ant task that concatenates the
* contents of the files in the schema directory to create a base schema that
* may be used during the upgrade process. Each element will also include the
* X-SCHEMA-FILE extension to indicate the source schema file.
*/
public class ConcatSchema
extends Task
{
// The path to the directory containing the schema files.
// The path to the concatenated schema file to create.
/**
* Specifies the path to the directory containing the schema files.
*
* @param schemaDirectory The path to the directory containing the schema
* files.
*/
{
this.schemaDirectory = schemaDirectory;
}
/**
* Specifies the path to the file to create containing the concatenated schema
* elements.
*
* @param toFile The path to the file containing the concatenated schema
* elements.
*/
{
}
/**
* Performs the appropriate processing needed for this task. In this case,
* it uses SVNKit to identify all modified files in the current workspace.
* For all source files, look for comment lines containing the word
* "copyright" and make sure at least one of them contains the current year.
*/
@Override()
public void execute()
{
// Get a sorted list of the files in the schema directory.
{
{
}
}
// Create a set of lists that will hold the schema elements read from the
// files.
// Open each of the files in order and read the elements that they contain,
// appending them to the appropriate lists.
{
// Read the contents of the file into a list with one schema element per
// list element.
try
{
while (true)
{
{
break;
}
{
continue;
}
{
}
else
{
}
}
}
catch (Exception e)
{
": " + e, e);
}
// Iterate through each line in the list. Find the colon and get the
// attribute name at the beginning. If it's someting that we don't
// recognize, then skip it. Otherwise, add the X-SCHEMA-FILE extension
// and add it to the appropriate schema element list.
{
// Get the line and add the X-SCHEMA-FILE extension to the end of it.
// All of them should end with " )" but some might have the parenthesis
// crammed up against the last character so deal with that as well.
{
"' )";
}
{
"' )";
}
else
{
continue;
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
}
}
// Write the resulting output to the merged schema file.
try
{
{
}
{
}
{
}
{
}
{
}
{
}
{
}
}
catch (Exception e)
{
throw new BuildException("Error while writing concatenated schema file " +
toFile + ": " + e, e);
}
}
}