public string TransferPublications()
{
string xsdPath = Path.Combine(AppConfiguration.DataPath, "Temp", "Administrator");
PublicationManager pms = new PublicationManager();
MetadataCreator metadataCreator = new MetadataCreator();
//Import MetaDataStructure
string schemaFile = xsdPath + @"\publication.xsd";
//open schema
XmlSchemaManager xmlSchemaManager = new XmlSchemaManager();
string userName = "******";
xmlSchemaManager.Load(schemaFile, userName);
long metadataStructureId = 0;
try
{
metadataStructureId = metadataCreator.importMetadataStructure(schemaFile, userName, schemaFile, "Publication", "Metadata/publicationDetails/publicationDetails/title/title", "Metadata/publicationDetails/publicationDetails/information/information");// xmlSchemaManager.GenerateMetadataStructure("publication", "publication");
}
catch (Exception ex)
{
xmlSchemaManager.Delete("publication");
return "Couldn't create publication metadatastructure!";
}
//Create an empty publication
MetadataStructureManager msm = new MetadataStructureManager();
MetadataStructure metadataStructure = msm.Repo.Get(metadataStructureId);
XmlDocument metadataXmlTemplate = BExIS.Xml.Helpers.XmlMetadataWriter.ToXmlDocument(metadataCreator.createXmlTemplate(metadataStructureId));
var publicationsMetaData = metadataCreator.getPublicationsMetadataXml(DataBase);
var xmlMapperManager = new XmlMapperManager();
string filePath = AppConfiguration.GetModuleWorkspacePath("BMM");
string path_mappingFile = filePath + @"\bexis_publication_metadata_mapping.xml";
foreach (var publicationMetaData in publicationsMetaData)
{
var pc = pms.CreateEmptyPublication(metadataStructure);
var publicationId = pc.Id;
if (pms.IsPublicationCheckedOutFor(publicationId, userName) || pms.CheckOutPublication(publicationId, userName))
{
PublicationVersion workingCopy = pms.GetPublicationWorkingCopy(publicationId);
// XML mapper + mapping file
xmlMapperManager.Load(path_mappingFile, "Publication");
XmlDocument metadataBpp = xmlMapperManager.Generate(publicationMetaData.MetaDataXml, 99);
metadataBpp = metadataCreator.fillInXmlAttributes(metadataBpp, metadataXmlTemplate);
workingCopy.Metadata = metadataBpp;
foreach (var pbContent in publicationMetaData.PublicationContentDescriptors)
{
string storePath = Path.Combine(AppConfiguration.DataPath, "Publications", publicationId.ToString());
storePath = Path.Combine(storePath, publicationId.ToString() + "_" + workingCopy.VersionNo.ToString() + "_" + pbContent.Name);
File.Move(pbContent.URI, storePath);
pbContent.URI = storePath;
pbContent.PublicationVersion = workingCopy;
workingCopy.PublicationContentDescriptors.Add(pbContent);
}
pms.CheckInPublication(publicationId, "Metadata was submited.", userName);
}
}
return "";
}