示例#1
0
文件: Pattern.cs 项目: japj/vulcan
 protected Pattern(Vulcan.Packages.VulcanPackage vulcanPackage,DTS.IDTSSequence parentContainer)
 {
     _vulcanPackage = vulcanPackage;
     _parentContainer = parentContainer;
     _firstExecutableGeneratedByPattern = null;
     _lastExecutableGeneratedByPattern = null;
 }
示例#2
0
文件: TextTarget.cs 项目: japj/vulcan
        public override void EmitObject(LogicalObject obj, Vulcan.Kernel.EmitterContext context)
        {
            LogicalObject objTemp = obj;
            LogicalObject objParent;
            while ((objParent = objTemp.Parent) != null)
            {
                objTemp = objParent;
                _streamWriter.Write("\t");
            }

            _streamWriter.Write("[{0}]: {1}", obj.GetType().Name, obj.Name);

            if (obj is LogicalReference)
            {
                LogicalObject r = ((LogicalReference)obj).RefObject;
                if (r != null)
                {
                    _streamWriter.Write(" ---> {0}:{1}", r.GetType().Name, r.Name);
                }
            }

            _streamWriter.WriteLine();

            foreach (LogicalObject objChildren in obj.Children)
            {
                EmitObject(objChildren, context);
            }
        }
示例#3
0
    void Start()
    {
        gameMarker          = GameObject.Find("Game Root/GameMarker");
        currentStunDuration = maxStunDuration;
        myRigidbody         = GetComponent <Rigidbody2D>();
        players.Add(gameObject);
        playerHitState        = gameObject.AddComponent <PlayerHitState>() as PlayerHitState;
        playerHitState.player = gameObject;
        GameObject vulcanObject = Instantiate(Resources.Load("Vulcan"), transform.position, Quaternion.identity) as GameObject;

        vulcanObject.transform.parent = transform;
        vulcan        = vulcanObject.GetComponent <Vulcan>() as Vulcan;
        vulcan.player = this;
        GameObject bombLauncherObject = Instantiate(Resources.Load("Bomb Launcher"), transform.position, Quaternion.identity) as GameObject;

        bombLauncherObject.transform.parent = transform;
        bombLauncher         = bombLauncherObject.GetComponent <BombLauncher>() as BombLauncher;
        bombLauncher.player  = this;
        shotgun              = gameObject.AddComponent <Shotgun>() as Shotgun;
        shotgun.player       = this;
        gigaBeam             = gameObject.AddComponent <GigaBeam>() as GigaBeam;
        gigaBeam.player      = this;
        magnetMissile        = gameObject.AddComponent <MagnetMissile>() as MagnetMissile;
        magnetMissile.player = this;
        reversePosition      = GetComponent <Entity>().affinity.GetComponent <Fleet>().reversePosition;
        body = transform.Find("Body").gameObject;
        body.GetComponent <SpriteRenderer>().color = GetComponent <Entity>().affinity.GetComponent <Fleet>().teamColor;
        shieldObject = Instantiate(shieldPrefab, transform.position, Quaternion.identity) as GameObject;
        shieldObject.transform.parent = gameObject.transform;
        shield        = shieldObject.GetComponent <Shield>();
        shield.player = this;
        playerHitState.SwitchToInvincible();
        damageBehavior = GetComponent <DamageBehavior>();
        currentExValue = GetComponent <Entity>().affinity.GetComponent <Fleet>().lastExValue;
        gameObject.transform.eulerAngles = new Vector3(
            gameObject.transform.eulerAngles.x,
            gameObject.transform.eulerAngles.y,
            gameObject.transform.eulerAngles.z - 90);
        vehicleControls = GetComponent <VehicleControls>();
        if (reversePosition)
        {
            reverseIndex *= -1;
        }
        GameObject playerHud = Instantiate(Resources.Load("HUD/PlayerHUD"), transform.position, Quaternion.identity) as GameObject;

        playerHud.transform.parent = GameObject.Find("WorldspaceHUD").transform;
        playerHud.GetComponent <PlayerHUD>().player = this;
        defaultColor = body.GetComponent <SpriteRenderer>().color;
        foreach (Transform child in body.transform)
        {
            CarWheel wheel = child.GetComponent <CarWheel>();
            if (wheel)
            {
                wheel.vehicleControls = vehicleControls;
            }
        }
        currentExValue = maxExValue;
    }
示例#4
0
 // TODO: The Ast needs to add a PreviewPropertyChanged or a PropertyChanging event in order to do this correctly with old and new values
 private void AstConnectionNode_SingletonPropertyChanged(object sender, Vulcan.Utility.ComponentModel.VulcanPropertyChangedEventArgs e)
 {
     if (e.PropertyName == "Server" || e.PropertyName == "Authentication" || e.PropertyName == "Login" || e.PropertyName == "Password" || e.PropertyName == "Database"
         || e.PropertyName == "AdditionalParameters" || e.PropertyName == "Protocol" || e.PropertyName == "Provider")
     {
         VulcanOnPropertyChanged("OleConnectionString", OleConnectionString, OleConnectionString);
         VulcanOnPropertyChanged("SqlConnectionString", SqlConnectionString, SqlConnectionString);
     }
 }
示例#5
0
        public override int Emit(LogicalObject obj, Vulcan.Kernel.EmitterContext context)
        {
            if (obj is Package)
            {
                _target.Initialize(context.DetegoRootPath, Path.ChangeExtension(context.XMLFileName, null));
            }

            _target.EmitObject(obj, context);

            return 0;
        }
示例#6
0
 private void AstAttributeNode_SingletonPropertyChanged(object sender, Vulcan.Utility.ComponentModel.VulcanPropertyChangedEventArgs e)
 {
     if (e.PropertyName == "NameColumn")
     {
         VulcanCompositeCollectionChanged(_columns, e.OldValue as AstAttributeColumnNode, e.NewValue as AstAttributeColumnNode);
     }
     else if (e.PropertyName == "ValueColumn")
     {
         VulcanCompositeCollectionChanged(_columns, e.OldValue as AstAttributeColumnNode, e.NewValue as AstAttributeColumnNode);
     }
 }
示例#7
0
 public DimensionsPattern(Vulcan.Packages.VulcanPackage vulcanPackage, DTS.IDTSSequence parentContainer)
     : base(vulcanPackage,
     parentContainer)
 {
 }
示例#8
0
        private static Transformation CreateUnionAllFromXml(Vulcan.Packages.VulcanPackage vulcanPackage, IDTSComponentMetaData90 parentComponent, MainPipe dataFlowTask, XPathNavigator unionAllNav)
        {
            if (unionAllNav == null || unionAllNav.Name.ToUpperInvariant() != "UnionAll".ToUpperInvariant())
            {
                return null;
            }
            string unionAllName = unionAllNav.SelectSingleNode("@Name", vulcanPackage.VulcanConfig.NamespaceManager).Value;
            Message.Trace(Severity.Debug, "Begin: UnionAll Transformation {0}", unionAllName);
            UnionAll ua = new UnionAll(
                  vulcanPackage,
                dataFlowTask,
                parentComponent,
                unionAllName,
                unionAllName
                );

            foreach (XPathNavigator navInput in unionAllNav.Select("rc:SourceComponent", vulcanPackage.VulcanConfig.NamespaceManager))
            {
                string sourceComponentName = navInput.SelectSingleNode("@SourceComponentName", vulcanPackage.VulcanConfig.NamespaceManager).Value;
                ua.Component.InputCollection.New().Name = "Input for " + sourceComponentName;

                ua.MapInput(sourceComponentName, dataFlowTask);

                foreach (XPathNavigator navInputColumn in navInput.Select("rc:Map", vulcanPackage.VulcanConfig.NamespaceManager))
                {
                    string sourceColumnName = navInputColumn.SelectSingleNode("@Source", vulcanPackage.VulcanConfig.NamespaceManager).Value;
                    string destinationColumnName;
                    bool unMap = false;
                    if (navInputColumn.SelectSingleNode("@Destination") == null)
                    {
                        unMap = true;
                        destinationColumnName = sourceColumnName;
                    }
                    else
                    {
                        destinationColumnName = navInputColumn.SelectSingleNode("@Destination", vulcanPackage.VulcanConfig.NamespaceManager).Value;
                    }
                    ua.MapInputColumn(sourceComponentName, sourceColumnName, destinationColumnName, unMap);
                }

            }

            ua.InitializeAndMapDestination();
            return ua;
        }
示例#9
0
        private static Transformation CreateTermLookupFromXml(Vulcan.Packages.VulcanPackage vulcanPackage, IDTSComponentMetaData90 parentComponent, MainPipe dataFlowTask, XPathNavigator termLookupNav)
        {
            if (termLookupNav == null || termLookupNav.Name.ToUpperInvariant() != "TermLookup".ToUpperInvariant())
            {
                return null;
            }
            string termLookupName = termLookupNav.SelectSingleNode("@Name", vulcanPackage.VulcanConfig.NamespaceManager).Value;
            bool isCaseSensitive = termLookupNav.SelectSingleNode("@IsCaseSensitive").ValueAsBoolean;
            string refTermColumn = termLookupNav.SelectSingleNode("@RefTermColumn").Value;
            string refTermTable = termLookupNav.SelectSingleNode("@RefTermTable").Value;

            Message.Trace(Severity.Debug, "Begin: TermLookup Transformation {0}", termLookupName);
            Connection sourceConnection =
               Connection.GetExistingConnection(vulcanPackage, termLookupNav.SelectSingleNode("@ConnectionName").Value);
            TermLookup tl = new TermLookup(
                vulcanPackage,
                dataFlowTask,
                parentComponent,
                termLookupName,
                termLookupName,
                sourceConnection,
                isCaseSensitive,
                refTermColumn,
                refTermTable
                );

            foreach (XPathNavigator nav in termLookupNav.Select("rc:InputColumn", vulcanPackage.VulcanConfig.NamespaceManager))
            {
                string inputColumnName = nav.SelectSingleNode("@InputColumnName").Value;
                TermLookup.InputColumnUsageType inputColumnUsageType = (TermLookup.InputColumnUsageType)Enum.Parse(typeof(TermLookup.InputColumnUsageType), nav.SelectSingleNode("@InputColumnUsageType").Value);
                tl.MapInput(inputColumnName, inputColumnUsageType);
            }
            return tl;
        }
示例#10
0
        private static Transformation CreateSortFromXml(Vulcan.Packages.VulcanPackage vulcanPackage, IDTSComponentMetaData90 parentComponent, MainPipe dataFlowTask, XPathNavigator sortNav)
        {
            if (sortNav == null || sortNav.Name.ToUpperInvariant() != "Sort".ToUpperInvariant())
            {
                return null;
            }
            string sortName = sortNav.SelectSingleNode("@Name", vulcanPackage.VulcanConfig.NamespaceManager).Value;
            bool eliminateDuplicates = sortNav.SelectSingleNode("@EliminateDuplicates", vulcanPackage.VulcanConfig.NamespaceManager).ValueAsBoolean;
            int maximumThreads = sortNav.SelectSingleNode("@MaximumThreads", vulcanPackage.VulcanConfig.NamespaceManager).ValueAsInt;

            //MaximumThreads can not be 0, according to SSIS
            if (maximumThreads == 0)
            {
                maximumThreads = -1;
            }

            Message.Trace(Severity.Debug, "Begin: UnionAll Transformation {0}", sortName);
            Sort sortTask = new Sort(
                  vulcanPackage,
                dataFlowTask,
                parentComponent,
                sortName,
                sortName,
                eliminateDuplicates,
                maximumThreads
                );

            foreach (XPathNavigator navInput in sortNav.Select("rc:InputColumn", vulcanPackage.VulcanConfig.NamespaceManager))
            {
                string inputColumnName = navInput.SelectSingleNode("@InputColumnName", vulcanPackage.VulcanConfig.NamespaceManager).Value;
                Sort.InputColumnUsageType inputColumnUsageType = (Sort.InputColumnUsageType)Enum.Parse(typeof(Sort.InputColumnUsageType), navInput.SelectSingleNode("@InputColumnUsageType").Value);
                Sort.SortType SortType = (Sort.SortType)Enum.Parse(typeof(Sort.SortType), navInput.SelectSingleNode("@SortType").Value);

                List<Sort.ComparisonFlag> comparisonFlagList = new List<Sort.ComparisonFlag>();
                foreach (XPathNavigator navComparisonFlag in navInput.Select("rc:ComparisonFlag", vulcanPackage.VulcanConfig.NamespaceManager))
                {
                    comparisonFlagList.Add((Sort.ComparisonFlag)Enum.Parse(typeof(Sort.ComparisonFlag), navComparisonFlag.Value));
                }
                sortTask.SetInputColumnProperty(inputColumnName, inputColumnUsageType, SortType, comparisonFlagList);
            }

            return sortTask;
        }
示例#11
0
        private static Transformation CreateConditionalSplitFromXml(Vulcan.Packages.VulcanPackage vulcanPackage, IDTSComponentMetaData90 parentComponent, MainPipe dataFlowTask, XPathNavigator conditionalSplitNav)
        {
            if (conditionalSplitNav == null || conditionalSplitNav.Name.ToUpperInvariant() != "ConditionalSplit".ToUpperInvariant())
            {
                return null;
            }
            string conditionalSplitName = conditionalSplitNav.SelectSingleNode("@Name", vulcanPackage.VulcanConfig.NamespaceManager).Value;
            Message.Trace(Severity.Debug, "Begin: ConditionalSplit Transformation {0}", conditionalSplitName);
            ConditionalSplit cs = new ConditionalSplit(
                vulcanPackage,
                dataFlowTask,
                parentComponent,
                conditionalSplitName,
                conditionalSplitName
                );

            int intEvaluationOrder = 0;
            string expression = string.Empty;
            foreach (XPathNavigator nav in conditionalSplitNav.Select("//rc:Output|//rc:DefaultOutput", vulcanPackage.VulcanConfig.NamespaceManager))
            {
                if (nav.Name == "DefaultOutput")
                {
                    cs.Component.OutputCollection.SetIndex(cs.Component.OutputCollection.GetObjectIndexByID(cs.Component.OutputCollection["Conditional Split Default Output"].ID), 0);
                }
                else
                {
                    expression = nav.SelectSingleNode("rc:Expression", vulcanPackage.VulcanConfig.NamespaceManager).Value;
                    IDTSOutput90 newPath = cs.Component.OutputCollection.New();
                    newPath.Name = nav.SelectSingleNode("@Name", vulcanPackage.VulcanConfig.NamespaceManager).Value;
                    newPath.Description = nav.SelectSingleNode("@Name", vulcanPackage.VulcanConfig.NamespaceManager).Value;
                    newPath.ExclusionGroup = cs.Component.OutputCollection["Conditional Split Default Output"].ExclusionGroup;
                    newPath.SynchronousInputID = cs.Component.OutputCollection["Conditional Split Default Output"].SynchronousInputID;
                    newPath.ErrorOrTruncationOperation = "Computation";
                    newPath.ErrorRowDisposition = DTSRowDisposition.RD_IgnoreFailure;
                    newPath.TruncationRowDisposition = DTSRowDisposition.RD_FailComponent;

                    IDTSCustomProperty90 propEvaluationOrder = newPath.CustomPropertyCollection.New();
                    propEvaluationOrder.Name = "EvaluationOrder";
                    propEvaluationOrder.Value = intEvaluationOrder;

                    IDTSCustomProperty90 propFriendlyExpression = newPath.CustomPropertyCollection.New();
                    propFriendlyExpression.Name = "FriendlyExpression";
                    propFriendlyExpression.Value = expression;

                    IDTSCustomProperty90 propExpression = newPath.CustomPropertyCollection.New();
                    propExpression.Name = "Expression";
                    propExpression.Value = expression;

                    //A workaround to connect the path to Conditional Spit's output,
                    //because we always connect the current task to the previous task's first output
                    cs.Component.OutputCollection.SetIndex(cs.Component.OutputCollection.GetObjectIndexByID(newPath.ID), 0);
                    intEvaluationOrder++;
                }

                IDTSComponentMetaData90 startComponent = cs.Component;

                XPathNavigator transNav = nav.SelectSingleNode("rc:ConditionalSplitOutputPath/rc:Transformations", vulcanPackage.VulcanConfig.NamespaceManager);
                if (transNav != null)
                {
                    foreach (XPathNavigator etlNav in transNav.SelectChildren(XPathNodeType.Element))
                    {
                        // this is naughty but can be fixed later :)
                        Transformation t = TransformationFactory.ProcessTransformation(vulcanPackage, startComponent, dataFlowTask, etlNav);
                        if (t != null)
                        {
                            startComponent = t.Component;
                        }
                    }
                }

                XPathNavigator destNav = nav.SelectSingleNode("rc:ConditionalSplitOutputPath/rc:Destination", vulcanPackage.VulcanConfig.NamespaceManager);
                if (destNav != null)
                {
                    string name = destNav.SelectSingleNode("@Name").Value;
                    Connection destConnection = Connection.GetExistingConnection(vulcanPackage, destNav.SelectSingleNode("@ConnectionName").Value);
                    string tableName = String.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}", destNav.SelectSingleNode("@Table").Value.Trim());
                    OLEDBDestination oledbDestination = new OLEDBDestination(vulcanPackage, dataFlowTask, startComponent, name, name, destConnection, tableName);

                    string accessMode = destNav.SelectSingleNode("@AccessMode").Value;
                    bool tableLock = destNav.SelectSingleNode("@TableLock").ValueAsBoolean;
                    bool checkConstraints = destNav.SelectSingleNode("@CheckConstraints").ValueAsBoolean;
                    bool keepIdentity = destNav.SelectSingleNode("@KeepIdentity").ValueAsBoolean;
                    bool keepNulls = destNav.SelectSingleNode("@KeepNulls").ValueAsBoolean;

                    int rowsPerBatch = destNav.SelectSingleNode("@RowsPerBatch").ValueAsInt;
                    int maxInsertCommitSize = destNav.SelectSingleNode("@MaximumInsertCommitSize").ValueAsInt;

                    switch (accessMode.ToUpperInvariant())
                    {
                        case "TABLE":
                            oledbDestination.ComponentInstance.SetComponentProperty("AccessMode", 0);
                            oledbDestination.ComponentInstance.SetComponentProperty("OpenRowset", tableName);
                            break;
                        case "TABLEFASTLOAD":
                            oledbDestination.ComponentInstance.SetComponentProperty("AccessMode", 3);
                            oledbDestination.ComponentInstance.SetComponentProperty("OpenRowset", tableName);

                            oledbDestination.ComponentInstance.SetComponentProperty("FastLoadKeepIdentity", keepIdentity);
                            oledbDestination.ComponentInstance.SetComponentProperty("FastLoadKeepNulls", keepNulls);
                            oledbDestination.ComponentInstance.SetComponentProperty("FastLoadMaxInsertCommitSize", maxInsertCommitSize);

                            StringBuilder fastLoadOptions = new StringBuilder();
                            if (tableLock)
                            {
                                fastLoadOptions.AppendFormat("TABLOCK,");
                            }
                            if (checkConstraints)
                            {
                                fastLoadOptions.AppendFormat("CHECK_CONSTRAINTS,");
                            }
                            if (rowsPerBatch > 0)
                            {
                                fastLoadOptions.AppendFormat("ROWS_PER_BATCH = {0}", rowsPerBatch);
                            }
                            fastLoadOptions = fastLoadOptions.Replace(",", "", fastLoadOptions.Length - 5, 5);

                            oledbDestination.ComponentInstance.SetComponentProperty("FastLoadOptions", fastLoadOptions.ToString());
                            break;
                        default:
                            Message.Trace(Severity.Error, "Unknown Destination Load Type of {0}", accessMode);
                            break;
                    }

                    try
                    {
                        oledbDestination.InitializeAndMapDestination();
                    }
                    catch (Exception)
                    {
                    }

                    // Map any overrides
                    foreach (XPathNavigator navMap in destNav.Select("rc:Map", vulcanPackage.VulcanConfig.NamespaceManager))
                    {
                        string source = navMap.SelectSingleNode("@Source").Value;
                        string destination;
                        bool unMap = false;

                        if (navMap.SelectSingleNode("@Destination") == null)
                        {
                            unMap = true;
                            destination = source;
                        }
                        else
                        {
                            destination = nav.SelectSingleNode("@Destination").Value;
                        }

                        oledbDestination.Map(source, destination, unMap);
                    }
                } // end DestNav != null
                //this.FirstExecutableGeneratedByPattern = pipeHost;
                //this.LastExecutableGeneratedByPattern = pipeHost;

            }

            return cs;
        }
示例#12
0
 void Start()
 {
     gameMarker = GameObject.Find("Game Root/GameMarker");
     currentStunDuration = maxStunDuration;
     myRigidbody = GetComponent<Rigidbody2D>();
     players.Add (gameObject);
     playerHitState = gameObject.AddComponent<PlayerHitState>() as PlayerHitState;
     playerHitState.player = gameObject;
     GameObject vulcanObject = Instantiate (Resources.Load ("Vulcan"), transform.position, Quaternion.identity) as GameObject;
     vulcanObject.transform.parent = transform;
     vulcan = vulcanObject.GetComponent<Vulcan>() as Vulcan;
     vulcan.player = this;
     GameObject bombLauncherObject = Instantiate (Resources.Load ("Bomb Launcher"), transform.position, Quaternion.identity) as GameObject;
     bombLauncherObject.transform.parent = transform;
     bombLauncher = bombLauncherObject.GetComponent<BombLauncher>() as BombLauncher;
     bombLauncher.player = this;
     shotgun = gameObject.AddComponent<Shotgun>() as Shotgun;
     shotgun.player = this;
     gigaBeam = gameObject.AddComponent<GigaBeam>() as GigaBeam;
     gigaBeam.player = this;
     magnetMissile = gameObject.AddComponent<MagnetMissile>() as MagnetMissile;
     magnetMissile.player = this;
     reversePosition = GetComponent<Entity>().affinity.GetComponent<Fleet>().reversePosition;
     body = transform.Find ("Body").gameObject;
     body.GetComponent<SpriteRenderer>().color = GetComponent<Entity>().affinity.GetComponent<Fleet>().teamColor;
     shieldObject = Instantiate (shieldPrefab, transform.position, Quaternion.identity) as GameObject;
     shieldObject.transform.parent = gameObject.transform;
     shield = shieldObject.GetComponent<Shield>();
     shield.player = this;
     playerHitState.SwitchToInvincible();
     damageBehavior = GetComponent<DamageBehavior>();
     currentExValue = GetComponent<Entity>().affinity.GetComponent<Fleet>().lastExValue;
     gameObject.transform.eulerAngles = new Vector3(
         gameObject.transform.eulerAngles.x,
         gameObject.transform.eulerAngles.y,
         gameObject.transform.eulerAngles.z - 90);
     vehicleControls = GetComponent<VehicleControls>();
     if(reversePosition) reverseIndex *= -1;
     GameObject playerHud = Instantiate (Resources.Load ("HUD/PlayerHUD"), transform.position, Quaternion.identity) as GameObject;
     playerHud.transform.parent = GameObject.Find ("WorldspaceHUD").transform;
     playerHud.GetComponent<PlayerHUD>().player = this;
     defaultColor = body.GetComponent<SpriteRenderer>().color;
     foreach(Transform child in body.transform){
         CarWheel wheel = child.GetComponent<CarWheel>();
         if(wheel){
             wheel.vehicleControls = vehicleControls;
         }
     }
     currentExValue = maxExValue;
 }
示例#13
0
 public LogUpdatePattern(Vulcan.Packages.VulcanPackage vulcanPackage, DTS.IDTSSequence parentContainer)
     : base(vulcanPackage,
     parentContainer)
 {
 }