상속: ElementWrapper, TSF.UmlToolingFramework.UML.Classes.Kernel.Class, TSF.UmlToolingFramework.UML.Classes.Interfaces.BehavioredClassifier
        private void checkContext(TSF_EA.ElementWrapper context)
        {
            // clean up for new context build-up
            this.clear();
            this.notify("Please select a Data Item or Table");
            this.context              = null;
            this.syncButton.Enabled   = false;
            this.addButton.Enabled    = false;
            this.filterButton.Enabled = false;

            // validate context
            if (context != null && context is TSF_EA.Class)
            {
                TSF_EA.Class clazz = context as TSF_EA.Class;
                if (clazz.HasStereotype("Data Item") || clazz.HasStereotype("table"))
                {
                    this.context              = clazz;
                    this.addButton.Enabled    = true;
                    this.filterButton.Enabled = true;
                    this.hideNotifications();
                }
            }

            this.refreshTree();
        }
 /// <summary>
 /// gets the superclasses of an element
 /// </summary>
 /// <param name="classElement"></param>
 /// <returns></returns>
 protected virtual List <UTF_EA.Class> getsuperClasses(UTF_EA.Class classElement)
 {
     if (!_superClasses.ContainsKey(classElement))
     {
         if (classElement.superClasses.Count == 0)
         {
             //no superclasses, return empty list
             _superClasses.Add(classElement, new List <UTF_EA.Class>());
         }
         else
         {
             var superClasses = new List <UTF_EA.Class>();
             //first add the superclasses of the superclasses
             foreach (UTF_EA.Class superClass in classElement.superClasses)
             {
                 superClasses.AddRange(getsuperClasses(superClass));
             }
             //the add the superclasses themselves
             foreach (UTF_EA.Class superClass in classElement.superClasses)
             {
                 superClasses.Add(superClass);
             }
             _superClasses.Add(classElement, superClasses);
         }
     }
     return(_superClasses[classElement]);
 }
        public void refresh()
        {
            List <DataItem> dataItems = this.list <DataItem>(this.managedPackage);

            // add all Logical DataTypes from this package and optionally others
            // from the dataItems

            if (this.managedPackage != null)
            {
                foreach (TSF_EA.Class clazz in
                         this.managedPackage.ownedElements.OfType <TSF_EA.Class>())
                {
                    if (clazz.stereotypes.Count == 1)
                    {
                        if (clazz.stereotypes.ToList()[0].name == "LogicalDataType")
                        {
                        }
                    }
                }
            }
            foreach (DataItem item in dataItems)
            {
                TSF_EA.Class element = this.model.getElementByGUID(item.datatypeDisplayName) as TSF_EA.Class;
            }
            this.model.activateTab(appTitle);
        }
예제 #4
0
        private bool notInSync(TSF_EA.Attribute column, TSF_EA.Class clazz)
        {
            //DataItem di = GlossaryItemFactory<DataItem>.FromClass(clazz);
            DataItem di = null;

            if (di == null)
            {
                return(true);
            }                          // ???
            if (column.name != di.Label)
            {
                return(true);
            }
            // TODO DataType
            if (column.length != di.Size)
            {
                return(true);
            }
            // TODO Format
            if (column.defaultValue.ToString() != di.InitialValue)
            {
                return(true);
            }
            return(false);
        }
        protected DB2TableTransformer addDB2Table(UTF_EA.Class classElement)
        {
            DB2TableTransformer transformer = null;

            if (classElement.owningPackage.Equals(this.logicalPackage))
            {
                if (!this._tableTransformers.Any(x => x.logicalClasses.Any(y => y.Equals(classElement))))
                {
                    transformer = new DB2TableTransformer(this._newDatabase, _nameTranslator);
                    this._tableTransformers.Add(transformer);
                }
            }
            else
            {
                if (!this.externalTableTransformers.Any(x => x.logicalClasses.Any(y => y.Equals(classElement))))
                {
                    transformer = new DB2TableTransformer(this._externalDatabase, _nameTranslator);
                    this.externalTableTransformers.Add(transformer);
                }
            }
            if (transformer != null)
            {
                //transform to table
                transformer.transformLogicalClass(classElement);
                //now do the external tables linked to this classElement
                foreach (var dependingAssociationEnd in transformer.getDependingAssociationEnds())
                {
                    transformer.dependingTransformers.Add(addDB2Table(dependingAssociationEnd));
                }
                //add the remote columns and primary and foreign keys
                transformer.addRemoteColumnsAndKeys();
            }
            return(transformer);
        }
예제 #6
0
        public static DB_EA.Table createTable(TSF_EA.Class tableElement)
        {
            //get the database
            var database = getDatabase(tableElement);

            if (database == null)
            {
                return(null);
            }
            //create the table
            return(new Table(database, tableElement));
        }
        private TreeNode createDataItemNode(TSF_EA.Class clazz,
                                            TreeNodeCollection parent)
        {
            TreeNode node = new TreeNode(clazz.name)
            {
                Tag              = clazz,
                ImageKey         = "data item",
                SelectedImageKey = "data item"
            };

            parent.Add(node);
            this.hideCheckBox(node);
            return(node);
        }
예제 #8
0
        public void refresh()
        {
            this.ui.BusinessItems.Show <BusinessItem>(this.list <BusinessItem>(this.managedPackage));
            List <DataItem> dataItems = this.list <DataItem>(this.managedPackage);

            this.ui.DataItems.Show <DataItem>(dataItems);
            // add all Logical DataTypes from this package and optionally others
            // from the dataItems
            List <FieldValue> logicalDataTypes = new List <FieldValue>();

            if (this.managedPackage != null)
            {
                foreach (TSF_EA.Class clazz in
                         this.managedPackage.ownedElements.OfType <TSF_EA.Class>())
                {
                    if (clazz.stereotypes.Count == 1)
                    {
                        if (clazz.stereotypes.ToList()[0].name == "LogicalDataType")
                        {
                            logicalDataTypes.Add(new FieldValue()
                            {
                                Key   = clazz.name,
                                Value = clazz.guid
                            });
                        }
                    }
                }
            }
            foreach (DataItem item in dataItems)
            {
                TSF_EA.Class element = this.model.getElementByGUID(item.LogicalDatatypeName) as TSF_EA.Class;
                if (element != null && !logicalDataTypes.Any(x => x.Value == element.guid))
                {
                    logicalDataTypes.Add(new FieldValue()
                    {
                        Key   = element.name,
                        Value = element.guid
                    });
                }
            }

            this.ui.DataItems.LogicalDataTypes = logicalDataTypes;
            this.ui.ColumnLinks.DataItems      = dataItems;
            this.model.activateTab(appTitle);
        }
        private void linkColumnToDataItem()
        {
            // TODO: this allows for selecting/creating a new table anywhere
            //       currently the TreeView will only be populated with tables
            //       that are within the managed (gloaasry) package.

            // select a table (or create a new one)
            TSF_EA.Class table =
                (TSF_EA.Class) this.ui.Addin.Model.getUserSelectedElement(
                    new List <string>()
            {
                "Class"
            }
                    );
            if (!table.HasStereotype("table"))
            {
                return;
            }

            // create new column on table
            TSF_EA.Attribute attribute =
                this.ui.Addin.Model.factory.createNewElement <TSF_EA.Attribute>(
                    table, "<new>"
                    );
            attribute.AddStereotype("column");
            var context = this.context;

            attribute.save();

            // link the column to the DataItem
            attribute.addTaggedValue("EDD::dataitem", context.guid);
            attribute.save();

            // sync
            this.sync(attribute);

            this.ui.Addin.SelectedItem = context;
        }
 protected override void createTable(UTF_EA.Class classElement)
 {
     this._logicalClasses.Add(classElement);
     this.table = new Table(_database, classElement.alias);
     setTableSpaceName();
 }
예제 #11
0
 protected abstract void addTable(UTF_EA.Class classElement);
예제 #12
0
 protected abstract void createTable(UTF_EA.Class classElement);
예제 #13
0
 protected override void addTable(UTF_EA.Class classElement)
 {
     addDB2Table(classElement);
 }
 public Table(Database owner,Class wrappedClass)
 {
     this._wrappedClass = wrappedClass;
     this._owner = owner;
 }
        public override void save()
        {
            if (_wrappedClass == null)
            {
                var databasePackage = this._owner._wrappedPackage;

                if (databasePackage != null)
                {
                    Package tablePackage = databasePackage.ownedElements.OfType<Package>()
                        .FirstOrDefault(x => x.name.Equals("Tables",StringComparison.InvariantCultureIgnoreCase));
                    Package ownerPackage = databasePackage;
                    if (tablePackage != null) ownerPackage = tablePackage;
                    _wrappedClass = this._factory._modelFactory.createNewElement<Class>(ownerPackage, this.name);
                    //TODO: provide wrapper function for gentype?
                    _wrappedClass.wrappedElement.Gentype = this.factory.databaseName;
                    _wrappedClass.setStereotype("table");
                    _wrappedClass.save();
                    //add trace relation to logical class(ses)
                    setTracesToLogicalClasses();
                }
                else
                {
                    throw new Exception(string.Format("cannot save {0} because wrapped pacakge for database {1} does not exist",this.name, this.databaseOwner.name));
                }

            }
        }