示例#1
0
        private static void Main()
        {
            var xmlStorage = new LiteDbXmlStorage(SharedConfiguration.XmlKeysFolderPath, SharedConfiguration.DbName);

            XmlStorage = xmlStorage;
            ConfigureServiceCollection();

            //configure console logging
            ServiceProvider
            .GetService <ILoggerFactory>()
            .AddConsole(LogLevel.Debug);

            var loggerFactory = ServiceProvider.GetService <ILoggerFactory>();
            var logger        = loggerFactory.CreateLogger <Program>();

            logger.LogInformation("Starting application...");

            // other initialization
            xmlStorage.LoggerFactory = loggerFactory;
            logger.LogInformation("Started.");

            try
            {
                var sync = ServiceProvider.GetService <ISyncService>();
                sync.RunAsync().ConfigureAwait(false).GetAwaiter().GetResult();
            }
            catch (Exception e)
            {
                logger.LogCritical(e.ToString());
            }
            finally
            {
                Console.ReadKey();
            }
        }
示例#2
0
		public TaskRepository (string filename, IXmlStorage xmlStorage)
		{
			// set the db location
			storeLocation = filename;
			storage = xmlStorage;
			// deserialize XML from file at dbLocation
			tasks = storage.ReadXml (filename);
		}
示例#3
0
 public TaskRepository(string filename, IXmlStorage xmlStorage)
 {
     // set the db location
     storeLocation = filename;
     storage       = xmlStorage;
     // deserialize XML from file at dbLocation
     tasks = storage.ReadXml(filename);
 }
        static void AddStorageElements(XmlNode parentNode, IXmlStorage storage, XmlDocument dataFile)
        {
            if (storage != null && storage.Storage != null)
            {
                foreach (XmlNode nd in storage.Storage)
                {
                    XmlAttribute aa = nd as XmlAttribute;
                    if (aa == null)
                    {
                        XmlComment comm = nd as XmlComment;
                        if (comm == null)
                        {
                            XmlWhitespace whitespace = nd as XmlWhitespace;
                            if (whitespace == null)
                            {
                                XmlElement newNode = dataFile.CreateElement(nd.Name);
                                newNode.InnerXml = nd.InnerXml;

                                parentNode.AppendChild(newNode);
                            }
                            else
                            {
                                //if (whitespace.Data != "\r\n")
                                //{
                                //    //XmlWhitespace newWhitespace = dataFile.CreateWhitespace(whitespace.Data);
                                //    //parentNode.AppendChild(newWhitespace);
                                //}
                            }
                        }
                        else
                        {
                            if (comm.Value.StartsWith("Created by Artemis Mod Loader", StringComparison.OrdinalIgnoreCase) ||
                                comm.Value.StartsWith("Modified by Artemis Mod Loader", StringComparison.OrdinalIgnoreCase))
                            {
                            }
                            else
                            {
                                XmlComment newComm = dataFile.CreateComment(comm.Data);
                                parentNode.AppendChild(newComm);
                            }
                        }
                    }
                    else
                    {
                        XmlAttribute newAttrib = dataFile.CreateAttribute(nd.Name);
                        newAttrib.Value = aa.Value;
                        parentNode.Attributes.Append(newAttrib);
                    }
                }
            }
        }
        static bool ConvertObjectToXml(object conversionObject, XmlDocument dataDocument, XmlNode currentNode)
        {
            if (_log.IsDebugEnabled)
            {
                _log.DebugFormat("Starting {0}", MethodBase.GetCurrentMethod().ToString());
            }
            bool retVal = true;

            if (conversionObject != null)
            {
                foreach (PropertyInfo prop in conversionObject.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
                {
                    foreach (System.Attribute attr in prop.GetCustomAttributes(true))
                    {
                        XmlConversionAttribute nodeAttribute = attr as XmlConversionAttribute;
                        if (nodeAttribute != null)
                        {
                            //if the property is an IList, need to go through elements.
                            object propObject = prop.ThreadGetValue(conversionObject);
                            //if (CanInclude(prop.PropertyType, propObject))
                            //{

                            if (propObject != null)
                            {
                                BuildXmlDocument(dataDocument, nodeAttribute.NodeNameMap, propObject, currentNode);
                            }
                            //}
                            //else
                            //{
                            //    retVal = false;
                            //}
                            break;
                        }
                    }
                }
                IXmlStorage storage = conversionObject as IXmlStorage;

                if (storage != null)
                {
                    AddStorageElements(currentNode, storage, dataDocument);
                }
            }
            if (_log.IsDebugEnabled)
            {
                _log.DebugFormat("Ending {0}", MethodBase.GetCurrentMethod().ToString());
            }
            return(retVal);
        }
        static XmlNode GetNodeFromObject(object value, XmlDocument dataFile)
        {
            if (_log.IsDebugEnabled)
            {
                _log.DebugFormat("Starting {0}", MethodBase.GetCurrentMethod().ToString());
            }
            XmlNode     node    = null;
            XmlComment  cm      = null;
            IXmlStorage storage = value as IXmlStorage;

            if (value != null)
            {
                foreach (Attribute attrib in value.GetType().GetCustomAttributes(true))
                {
                    XmlConversionRootAttribute rootAttrib = attrib as XmlConversionRootAttribute;
                    if (rootAttrib != null)
                    {
                        node = dataFile.CreateElement(rootAttrib.RootNodeName);
                    }
                    XmlCommentAttribute comment = attrib as XmlCommentAttribute;
                    if (comment != null)
                    {
                        cm = dataFile.CreateComment(comment.Comment);
                    }
                }
                if (node != null && cm != null)
                {
                    node.AppendChild(cm);
                }
                if (node != null)
                {
                    AddStorageElements(node, storage, dataFile);
                }
            }

            if (_log.IsDebugEnabled)
            {
                _log.DebugFormat("Ending {0}", MethodBase.GetCurrentMethod().ToString());
            }
            return(node);
        }
示例#7
0
 /// <summary>
 /// Creates a new instance of the XML resource manager and initializes
 /// it with a provided XML storage.
 /// </summary>
 /// <param name="storage"></param>
 public XmlResourceManager(IXmlStorage storage)
 {
     this.storage = storage;
 }
		public TodoItemManager (string filename, IXmlStorage storage) 
		{
			repository = new TodoItemRepository(filename, storage);
		}
示例#9
0
 public DataProtectionXmlRepository(IXmlStorage storage)
 {
     _storage = storage;
 }
示例#10
0
 public TaskManager(string filename, IXmlStorage storage)
 {
     repository = new TaskRepository(filename, storage);
 }
示例#11
0
 public TodoItemManager(string filename, IXmlStorage storage)
 {
     repository = new TodoItemRepository(filename, storage);
 }
示例#12
0
        static void LoadProperties(XmlNode node, object conversionObject)
        {
            if (_log.IsDebugEnabled)
            {
                _log.DebugFormat("Starting {0}", MethodBase.GetCurrentMethod().ToString());
            }
            string expectedRootNode = GetExpectedRootNode(conversionObject.GetType());

            if (!string.IsNullOrEmpty(expectedRootNode) && node.Name != expectedRootNode)
            {
                throw new XmlConversionException("XmlConversionRootAttribute does not match the root node of the document. Expected: " + expectedRootNode + ", Actual: " + node.Name);
            }

            Dictionary <string, PropertyInfo> ConversionDictionary = LoadXmlConversionProperties(conversionObject.GetType());
            IXmlStorage store       = conversionObject as IXmlStorage;
            IList       listItem    = conversionObject as IList;
            Type        elementType = null;

            if (listItem != null)
            {
                elementType = listItem.GetElementType();
            }
            //Node children first, then attributes.
            foreach (XmlNode nd in node.ChildNodes)
            {
                if (listItem != null)
                {
                    object newElement = elementType.GetInstance();


                    LoadProperties(nd, newElement);

                    listItem.Add(newElement);
                }

                if (ConversionDictionary.ContainsKey(nd.Name))
                {
                    PropertyInfo prop = ConversionDictionary[nd.Name];
                    object       conv = prop.ThreadGetValue(conversionObject);
                    if (conv == null)
                    {
                        conv = prop.PropertyType.GetInstance();
                        prop.ThreadSetValue(conversionObject, conv);
                    }
                    IList lItem    = conv as IList;
                    Type  elemType = null;
                    if (lItem != null)
                    {
                        if (nd.Value == null && nd.Attributes.Count == 0 && nd.ChildNodes.Count == 0)
                        {
                        }
                        else
                        {
                            elemType = lItem.GetElementType();

                            object elem = elemType.GetInstance();
                            LoadProperties(nd, elem);

                            lItem.Add(elem);
                        }
                    }
                    else
                    {
                        //?? If is IList, loop here?
                        LoadProperties(nd, conv);
                    }
                }
                else
                {
                    if (store != null && store.Storage != null)
                    {
                        store.Storage.Add(nd);
                    }
                }
            }
            foreach (XmlAttribute attribute in node.Attributes)
            {
                if (ConversionDictionary.ContainsKey(attribute.Name))
                {
                    PropertyInfo prop = ConversionDictionary[attribute.Name];
                    SetPropertyValue(conversionObject, prop, attribute.Value);
                }
                else if (store != null && store.Storage != null)
                {
                    store.Storage.Add(attribute);
                }
            }
            if (_log.IsDebugEnabled)
            {
                _log.DebugFormat("Ending {0}", MethodBase.GetCurrentMethod().ToString());
            }
        }
示例#13
0
		public TaskManager (string filename, IXmlStorage storage) 
		{
			repository = new TaskRepository(filename, storage);
		}