Exemplo n.º 1
0
        public XElement Run(IMetabase metabase)
        {
            var query = Plan.ToQuery();

            Console.WriteLine(query); // For debugging purposes
            return(metabase.Query <string>(query).AsXElement());
        }
Exemplo n.º 2
0
 public void Update(IMetabase metabase, PlanFile plans)
 {
     var updateContext = new UpdateContext {Instructions = this, Metabase = metabase};
     var plan = plans.Plan(ExtractName);
     ExtractName = plan.Name;
     Plan = plan.GetPlan(updateContext);
 }
Exemplo n.º 3
0
        public void Process(XElement parent, IMetabase metabase, IDictionary <string, object> parentValues)
        {
            foreach (var element in GetElements(parent))
            {
                var values = GetValues(element);
                UpdateFromParentValues(values, parentValues);

                foreach (var lookup in Children.OfType <LookupPart>())
                {
                    lookup.Process(element, metabase, values);
                }

                foreach (var hasOne in Children.OfType <HasOnePart>())
                {
                    hasOne.Process(element, metabase, values);
                }

                var key = PushSelf(metabase, values);

                foreach (var hasMany in Children.OfType <HasManyPart>())
                {
                    hasMany.Process(element, metabase, values);
                }

                UpdateParentValues(parentValues, key);
            }
        }
Exemplo n.º 4
0
        protected virtual object PushSelf(IMetabase metabase, IDictionary <string, object> values)
        {
            var key = metabase.Insert(Table.Name, values);

            values[Table.PrimaryKey.Name] = key;
            return(key);
        }
Exemplo n.º 5
0
        public void Insert(IMetabase metabase, XElement extract)
        {
            var extractElement = extract.Element(ExtractName);

            if (extractElement != null)
            {
                Plan.Process(extractElement, metabase, null);
            }
        }
Exemplo n.º 6
0
        public void Update(IMetabase metabase, PlanFile plans)
        {
            var updateContext = new UpdateContext {
                Instructions = this, Metabase = metabase
            };
            var plan = plans.Plan(ExtractName);

            ExtractName = plan.Name;
            Plan        = plan.GetPlan(updateContext);
        }
Exemplo n.º 7
0
        public void Process(XElement parent, IMetabase metabase, IDictionary<string, object> parentValues)
        {
            foreach(var element in GetElements(parent))
            {
                var values = GetValues(element);
                UpdateFromParentValues(values, parentValues);

                foreach (var lookup in Children.OfType<LookupPart>())
                    lookup.Process(element, metabase, values);

                foreach (var hasOne in Children.OfType<HasOnePart>())
                    hasOne.Process(element, metabase, values);

                var key = PushSelf(metabase, values);

                foreach (var hasMany in Children.OfType<HasManyPart>())
                    hasMany.Process(element, metabase, values);

                UpdateParentValues(parentValues, key);
            }
        }
Exemplo n.º 8
0
 protected override object PushSelf(IMetabase metabase, IDictionary<string, object> values)
 {
     if (values.Any() == false)
         return null;
     var value = metabase.Lookup(Table.Name, values);
     values[Table.PrimaryKey.Name] = value;
     //Console.WriteLine("Looked up: {0}", value);
     return value;
 }
Exemplo n.º 9
0
 protected virtual object PushSelf(IMetabase metabase, IDictionary<string, object> values)
 {
     var key = metabase.Insert(Table.Name, values);
     values[Table.PrimaryKey.Name] = key;
     return key;
 }
Exemplo n.º 10
0
 public XElement Run(IMetabase metabase)
 {
     var query = Plan.ToQuery();
     Console.WriteLine(query); // For debugging purposes
     return metabase.Query<string>(query).AsXElement();
 }
Exemplo n.º 11
0
 public void Insert(IMetabase metabase, XElement extract)
 {
     var extractElement = extract.Element(ExtractName);
     if (extractElement != null)
         Plan.Process(extractElement, metabase, null);
 }