Exemple #1
0
        private void Load(FdoBulkCopyOptions def, string name)
        {
            txtName.Text = name;

            grdConnections.Rows.Clear();

            foreach (string connName in def.ConnectionNames)
            {
                this.AddParticipatingConnection(connName);
            }

            TreeNode root = mTreeView.Nodes[0];

            foreach (FdoClassCopyOptions task in def.ClassCopyOptions)
            {
                //Init w/ defaults
                CopyTaskNodeDecorator dec = AddNewTask(
                    root,
                    task.SourceConnectionName,
                    task.SourceSchema,
                    task.SourceClassName,
                    task.TargetConnectionName,
                    task.TargetSchema,
                    task.TargetClassName,
                    task.Name,
                    task.CreateIfNotExists);

                _tasks[dec.DecoratedNode.Index] = dec;
                root.Expand();

                btnSave.Enabled = (root.Nodes.Count > 0);

                //Options
                dec.Options.BatchSize    = task.BatchSize;
                dec.Options.Delete       = task.DeleteTarget;
                dec.Options.SourceFilter = task.SourceFilter;
                dec.Options.Flatten      = task.FlattenGeometries;

                var checkProps = new List <string>(task.CheckSourceProperties);
                //Property Mappings
                foreach (string srcProp in task.SourcePropertyNames)
                {
                    string dstProp           = task.GetTargetProperty(srcProp);
                    bool   createIfNotExists = checkProps.Contains(srcProp);
                    try
                    {
                        dec.PropertyMappings.MapProperty(srcProp, dstProp, createIfNotExists);
                    }
                    catch (MappingException ex)
                    {
                        LoggingService.Info("Skipping mapping: " + srcProp + " => " + dstProp + " (" + ex.Message + ")");
                    }
                    FdoDataPropertyConversionRule   rule = task.GetDataConversionRule(srcProp);
                    PropertyConversionNodeDecorator cd   = dec.PropertyMappings.GetConversionRule(srcProp);
                    if (rule != null)
                    {
                        cd.NullOnFailedConversion = rule.NullOnFailure;
                        cd.Truncate = rule.Truncate;
                    }
                }

                //Expression Mappings
                foreach (string alias in task.SourceAliases)
                {
                    string expr              = task.GetExpression(alias);
                    string dstProp           = task.GetTargetPropertyForAlias(alias);
                    bool   createIfNotExists = checkProps.Contains(alias);
                    dec.ExpressionMappings.AddExpression(alias, expr);
                    dec.ExpressionMappings.MapExpression(alias, dstProp, createIfNotExists);

                    FdoDataPropertyConversionRule   rule = task.GetDataConversionRule(alias);
                    PropertyConversionNodeDecorator cd   = dec.ExpressionMappings.GetConversionRule(alias);

                    if (rule != null)
                    {
                        cd.NullOnFailedConversion = rule.NullOnFailure;
                        cd.Truncate = rule.Truncate;
                    }
                }
            }
        }
Exemple #2
0
        private FdoBulkCopyTaskDefinition Save()
        {
            FdoBulkCopyTaskDefinition def = new FdoBulkCopyTaskDefinition();

            def.name = txtName.Text;
            List <FdoConnectionEntryElement> conns = new List <FdoConnectionEntryElement>();

            foreach (DataGridViewRow row in grdConnections.Rows)
            {
                FdoConnectionEntryElement entry = new FdoConnectionEntryElement();
                entry.name             = row.Cells[0].Value.ToString();
                entry.provider         = row.Cells[1].Value.ToString();
                entry.ConnectionString = row.Cells[3].Value.ToString();
                conns.Add(entry);
            }
            List <FdoCopyTaskElement> tasks = new List <FdoCopyTaskElement>();

            foreach (CopyTaskNodeDecorator dec in _tasks.Values)
            {
                FdoCopyTaskElement task = new FdoCopyTaskElement();
                task.name = dec.Name;
                task.createIfNotExists = dec.CreateIfNotExists;

                task.Source  = new FdoCopySourceElement();
                task.Target  = new FdoCopyTargetElement();
                task.Options = new FdoCopyOptionsElement();
                List <FdoPropertyMappingElement>   pmaps = new List <FdoPropertyMappingElement>();
                List <FdoExpressionMappingElement> emaps = new List <FdoExpressionMappingElement>();

                //Source
                task.Source.@class     = dec.SourceClassName;
                task.Source.connection = dec.SourceConnectionName;
                task.Source.schema     = dec.SourceSchemaName;

                //Target
                task.Target.@class     = dec.TargetClassName;
                task.Target.connection = dec.TargetConnectionName;
                task.Target.schema     = dec.TargetSchemaName;

                //Options
                task.Options.BatchSize                  = dec.Options.BatchSize.ToString();
                task.Options.FlattenGeometries          = dec.Options.Flatten;
                task.Options.FlattenGeometriesSpecified = true;
                task.Options.DeleteTarget               = dec.Options.Delete;
                task.Options.Filter            = dec.Options.SourceFilter;
                task.Options.ForceWKB          = dec.Options.ForceWkb;
                task.Options.ForceWKBSpecified = true;

                //Property Mappings
                NameValueCollection mappings = dec.PropertyMappings.GetPropertyMappings();
                foreach (string srcProp in mappings.Keys)
                {
                    string dstProp = mappings[srcProp];
                    FdoPropertyMappingElement p = new FdoPropertyMappingElement();
                    p.source = srcProp;
                    p.target = dstProp;

                    PropertyConversionNodeDecorator conv = dec.PropertyMappings.GetConversionRule(p.source);
                    p.nullOnFailedConversion = conv.NullOnFailedConversion;
                    p.truncate          = conv.Truncate;
                    p.createIfNotExists = conv.CreateIfNotExists;

                    pmaps.Add(p);
                }

                foreach (string alias in dec.ExpressionMappings.GetAliases())
                {
                    FdoExpressionMappingElement e = new FdoExpressionMappingElement();
                    e.alias = alias;
                    ExpressionMappingInfo exMap = dec.ExpressionMappings.GetMapping(alias);
                    e.Expression = exMap.Expression;
                    e.target     = exMap.TargetProperty;

                    PropertyConversionNodeDecorator conv = dec.ExpressionMappings.GetConversionRule(e.alias);
                    e.nullOnFailedConversion = conv.NullOnFailedConversion;
                    e.truncate          = conv.Truncate;
                    e.createIfNotExists = conv.CreateIfNotExists;

                    emaps.Add(e);
                }

                task.PropertyMappings   = pmaps.ToArray();
                task.ExpressionMappings = emaps.ToArray();

                tasks.Add(task);
            }
            def.Connections = conns.ToArray();
            def.CopyTasks   = tasks.ToArray();
            return(def);
        }