public Boolean LoadInstance(Guid instanceId, out IDictionary<XName, InstanceValue> instanceData, out IDictionary<XName, InstanceValue> instanceMetadata)
{
try
{
instanceData = new Dictionary<XName, InstanceValue>();
instanceMetadata = new Dictionary<XName, InstanceValue>();
String fileName = String.Format("{0}.xml", instanceId);
String fullPath = Path.Combine(_dataDirectory, fileName);
if(!File.Exists(fullPath))
{
return false;
}
NetDataContractSerializer serializer = new NetDataContractSerializer();
//load instance data
XElement xml = XElement.Load(fullPath);
var xElement = xml.Element("InstanceData");
if(xElement != null)
{
var entries =
(from e in xElement.Elements("Entry")
select e).ToList();
foreach(XElement entry in entries)
{
LoadSingleEntry(serializer, instanceData, entry);
}
//load instance metadata
fileName = String.Format("{0}.meta.xml", instanceId);
fullPath = Path.Combine(_dataDirectory, fileName);
xml = XElement.Load(fullPath);
var element = xml.Element("InstanceMetadata");
if(element != null)
{
entries =
(from e in element.Elements("Entry")
select e).ToList();
}
foreach(XElement entry in entries)
{
LoadSingleEntry(serializer, instanceMetadata, entry);
}
}
}
catch(Exception exception)
{
Dev2Logger.Log.Error(exception);
throw new InstancePersistenceException(exception.Message, exception);
}
return true;
}