public bool Save_To_Config_File(string FilePath)
{
bool returnValue = true;
StreamWriter writer = null;
try
{
// Start the output file
writer = new StreamWriter(FilePath, false, Encoding.UTF8);
writer.WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
writer.WriteLine("<Config>");
writer.WriteLine(Enabled ? "\t<OAI-PMH Enabled=\"true\">" : "\t<OAI-PMH Enabled=\"false\">");
writer.WriteLine("\t\t<Repository IdentifierBase=\"" + Identifier_Base + "\" />");
// Add the basic identify information
writer.WriteLine("\t\t<Identify>");
writer.WriteLine("\t\t\t<Name>" + Convert_String_To_XML_Safe(Name) + "</Name>");
writer.WriteLine("\t\t\t<Identifier>" + Convert_String_To_XML_Safe(Identifier) + "</Identifier>");
if ((Admin_Emails != null) && (Admin_Emails.Count > 0))
{
foreach (string thisEmail in Admin_Emails)
{
writer.WriteLine("\t\t\t<AdminEmail>" + Convert_String_To_XML_Safe(thisEmail) + "</AdminEmail>");
}
}
if ((Descriptions != null) && (Descriptions.Count > 0))
{
foreach (string description in Descriptions)
{
writer.WriteLine("\t\t\t<Description>" + Convert_String_To_XML_Safe(description) + "</Description>");
}
}
writer.WriteLine("\t\t</Identify>");
// Add the metadata prefixes and the associated assembly/class reference
if ((Metadata_Prefixes != null) && (Metadata_Prefixes.Count > 0))
{
writer.WriteLine("\t\t<MetadataPrefixes>");
foreach (OAI_PMH_Metadata_Format metadataFormat in Metadata_Prefixes)
{
writer.Write("\t\t\t<MetadataFormat Prefix=\"" + metadataFormat.Prefix + "\" Schema=\"" + metadataFormat.Schema + "\" MetadataNamespace=\"" + metadataFormat.MetadataNamespace + "\"");
if ( !String.IsNullOrEmpty(metadataFormat.Assembly))
writer.Write(" Assembly=\"" + Convert_String_To_XML_Safe(metadataFormat.Assembly) + "\"");
writer.WriteLine(" Namespace=\"" + metadataFormat.Namespace + "\" Class=\"" + metadataFormat.Class + "\" Enabled=\"" + metadataFormat.Enabled.ToString().ToLower() + "\" />");
}
writer.WriteLine("\t\t</MetadataPrefixes>");
}
writer.WriteLine("\t</OAI-PMH>");
writer.WriteLine("</Config>");
writer.Flush();
writer.Close();
}
catch
{
returnValue = false;
}
finally
{
if (writer != null)
writer.Close();
}
return returnValue;
}