List<AttributeType> attributes,
List<ObjectClass> objectClasses) throws OpenDsException
{
if (isSchemaFileDefined)
{
LDIFExportConfig exportConfig =
new LDIFExportConfig(schemaFile,
ExistingFileBehavior.OVERWRITE);
LDIFReader reader = null;
Entry schemaEntry = null;
try
{
reader = new LDIFReader(new LDIFImportConfig(schemaFile));
schemaEntry = reader.readEntry();
for (AttributeType attribute : attributes)
{
Modification mod = new Modification(ModificationType.ADD,
Attributes.create(getAttributeName(attribute).toLowerCase(),
getValueOffline(attribute)));
schemaEntry.applyModification(mod);
}
for (ObjectClass oc : objectClasses)
{
Modification mod = new Modification(ModificationType.ADD,
Attributes.create(getAttributeName(oc).toLowerCase(),
getValueOffline(oc)));
schemaEntry.applyModification(mod);
}
LDIFWriter writer = new LDIFWriter(exportConfig);
writer.writeEntry(schemaEntry);
exportConfig.getWriter().newLine();
}
catch (Throwable t)
{
}
finally
{
if (reader != null)
{
try
{
reader.close();
}
catch (Throwable t)
{
}
}
if (exportConfig != null)
{
try
{
exportConfig.close();
}
catch (Throwable t)
{
}
}
}
}
else
{
LDIFExportConfig exportConfig =
new LDIFExportConfig(schemaFile,
ExistingFileBehavior.FAIL);
try
{
ArrayList<String> lines = getSchemaEntryLines();
for (AttributeType attribute : attributes)
{
lines.add(
getAttributeName(attribute)+": "+getValueOffline(attribute));
}
for (ObjectClass oc : objectClasses)
{
lines.add(getAttributeName(oc)+": "+getValueOffline(oc));
}
for (String line : lines)
{
LDIFWriter.writeLDIFLine(new StringBuilder(line),
exportConfig.getWriter(), exportConfig.getWrapColumn() > 1,
exportConfig.getWrapColumn());
}
exportConfig.getWriter().newLine();
}
catch (Throwable t)
{
throw new OfflineUpdateException(
ERR_CTRL_PANEL_ERROR_UPDATING_SCHEMA.get(t.toString()), t);
}
finally
{
if (exportConfig != null)
{
try
{
exportConfig.close();
}
catch (Throwable t)
{
}
}