public override DB.DatabaseItem createAsNewItem(DB.DatabaseItem owner, bool save = true)
 {
     Table newTable = owner as Table;
     Database existingDatabase = owner as Database;
     if (newTable == null)
     {
         //look for corresponding table in existingDatabase
         newTable = (Table)existingDatabase.tables.FirstOrDefault(x => x.name == this.ownerTable.name);
     }
     if (newTable != null && newTable.primaryKey == null ) //only create it if htere is not already one
     {
         var newPrimaryKey = new PrimaryKey(newTable,this._involvedColumns);
         newPrimaryKey.name = name;
         //newPrimaryKey.isOverridden = this.isOverridden;
         newPrimaryKey.derivedFromItem = this;
         if (save) newPrimaryKey.save();
         return newPrimaryKey;
     }
     return null;
 }
		public void loadComparison(DB.Compare.DatabaseComparer comparer)
		{
			this._comparer = comparer;
			this.clear();
			string tableName = string.Empty;
			foreach (var comparedItem in comparer.comparedItems) 
			{
				if (comparedItem.newDatabaseItem is DB.Table) 
				{
					tableName = comparedItem.newDatabaseItem.name;
				} else if (comparedItem.existingDatabaseItem is DB.Table)
				{
					tableName = comparedItem.existingDatabaseItem.name;
				}
				
				var newItem = addListViewItem(comparedItem,tableName);
				this.setStatusColor(newItem);
				this.compareDBListView.Items.Add(newItem);
			}
			enableDisable();
		}
 public DB.DatabaseItem createAsNewItem(DB.DatabaseItem owner,bool save = true)
 {
     //do nothing. deleting or adding of base datatypes should happen manually in the EA GUI
     return null;
 }
 public override DB.Transformation.DatabaseItemTransformer getCorrespondingTransformer(DB.DatabaseItem item)
 {
     //check if the item is our new database
     if (item == this.newDatabase) return this;
     //go deeper
     DB.Transformation.DatabaseItemTransformer correspondingTransformer = null;
     foreach (var tableTransformer in this.tableTransformers)
     {
         correspondingTransformer = tableTransformer.getCorrespondingTransformer(item);
         if (correspondingTransformer != null) break;
     }
     return correspondingTransformer;
 }
 protected override void updateDetails(DB.DatabaseItem newDatabaseItem)
 {
     var newColumn = (Column)newDatabaseItem;
     this._isNotNullable = newColumn.isNotNullable;
     this._logicalAttribute = newColumn.logicalAttribute;
     this._type = newColumn._type;
     this.isOverridden = newColumn.isOverridden;
     this.isRenamed = newColumn.isRenamed;
     this.position = newColumn.position;
 }
 public override DB.Transformation.DatabaseItemTransformer getCorrespondingTransformer(DB.DatabaseItem item)
 {
     if (item == this.column) return this;
     return null;
 }
		private string getLogicalName(DB.DatabaseItem databaseItem)
		{
			string logicalName = string.Empty;
			if (databaseItem.logicalElements != null)
			{
				var logicalElement = databaseItem.logicalElements.FirstOrDefault();
				if (logicalElement != null)
				{
					logicalName = logicalElement.name;
				}
			}
			return logicalName;
		}
		private ListViewItem addListViewItem(DB.Compare.DatabaseItemComparison comparison,string tableName)
		{

			var listViewItem = new ListViewItem(comparison.comparisonStatusName);
			listViewItem.SubItems.Add(comparison.itemType);
			listViewItem.SubItems.Add(tableName);
			listViewItem.SubItems.Add(getLogicalName(comparison));
			
			addDatabaseItemSpecifics(listViewItem,comparison.newDatabaseItem );
			addDatabaseItemSpecifics(listViewItem,comparison.existingDatabaseItem);
			
			listViewItem.Tag = comparison;
			return listViewItem;
		}
 public void removeTable(DB.Table table)
 {
     this._tables.Remove((Table)table);
 }
 public DB.Table getCorrespondingTable(DB.Table externalTable)
 {
     var _externalTable = (Table) externalTable;
     //first check for exact match
     var correspondingTable = this.tables.FirstOrDefault(x => x.name == externalTable.name);
     if (correspondingTable == null)
     {
         //if no exact match found then get the one that is derived from the same logical classes
         foreach (Table table in this.tables)
         {
             bool match = false;
             //each logical class of the external table should be equal to the logical class of this table
             foreach (var logicalClass in table.logicalClasses)
             {
                 if (_externalTable.logicalClasses.Any(x => x.Equals(logicalClass)))
                 {
                     match = true;
                 }
                 else
                 {
                     match = false;
                 }
             }
             if (match)
             {
                 //found it;
                 correspondingTable = table;
                 break;
             }
         }
     }
     return correspondingTable;
 }
 public override DB.DatabaseItem createAsNewItem(DB.DatabaseItem owner, bool save = true)
 {
     //TODO: figure out how to handle creation of new databases
     return null;
 }
 public void addTable(DB.Table table)
 {
     //initialize
     int nbrOfTable = this.tables.Count;
     this._tables.Add(table as Table);
 }
 protected override void updateDetails(DB.DatabaseItem newDatabaseItem)
 {
     base.updateDetails(newDatabaseItem);
     ForeignKey newForeignKey = (ForeignKey)newDatabaseItem;
     //update the association
     this._foreignTable = newForeignKey._foreignTable;
     //set logical association
     this.logicalAssociation = newForeignKey.logicalAssociation;
 }
 public override DB.DatabaseItem createAsNewItem(DB.DatabaseItem owner, bool save = true)
 {
     Table newTable = owner as Table;
     Database existingDatabase = owner as Database;
     if (newTable != null)
     {
         existingDatabase = newTable.databaseOwner as Database;
     }
     if (newTable == null)
     {
         //look for corresponding table in existingDatabase
         newTable = (Table)existingDatabase.tables.FirstOrDefault(x => x.name == this.ownerTable.name);
     }
     var newForeignTable = existingDatabase.tables.FirstOrDefault(x => x.name == this.foreignTable.name);
     if (newTable != null && newForeignTable != null)
     {
         var newForeignKey = new ForeignKey(newTable,this._involvedColumns);
         newForeignKey.name = name;
         newForeignKey._foreignTable = (Table)newForeignTable;
         newForeignKey._logicalAssociation = _logicalAssociation;
         newForeignKey.isOverridden = isOverridden;
         newForeignKey.derivedFromItem = this;
         if (save) newForeignKey.save();
         return newForeignKey;
     }
     return null;
 }
 public DB.DatabaseItem createAsNewItem(DB.DatabaseItem owner, bool save = true)
 {
     throw new NotImplementedException();
 }
 public void update(DB.DatabaseItem newDatabaseItem, bool save = true)
 {
     //don't think we need it here
     throw new NotImplementedException();
 }
 public void addColumn(DB.Column column)
 {
     //initialise columns
     if (this.columns != null) this._columns.Add((Column) column);
 }
		private string getLogicalName(DB.Compare.DatabaseItemComparison comparison)
		{
			string logicalname = string.Empty;
			if (comparison.newDatabaseItem != null)
			{
				logicalname = getLogicalName(comparison.newDatabaseItem);
			}
			if (logicalname == string.Empty && comparison.existingDatabaseItem != null)
			{
				logicalname = getLogicalName(comparison.existingDatabaseItem);
			}
			return logicalname;
		}
 public void addConstraint(DB.Constraint constraint)
 {
     if (this.constraints != null) this._constraints.Add((Constraint) constraint);
 }
		private void addDatabaseItemSpecifics(ListViewItem listViewItem,DB.DatabaseItem databaseItem )
		{
			if (databaseItem != null)
			{
				listViewItem.SubItems.Add(databaseItem.name);
				listViewItem.SubItems.Add(databaseItem.properties);
			}
			else
			{
				listViewItem.SubItems.Add(string.Empty);
				listViewItem.SubItems.Add(string.Empty);
			}
		}
 public override DB.DatabaseItem createAsNewItem(DB.DatabaseItem owner, bool save = true)
 {
     Database existingDatabase = owner as Database;
     var newTable = new Table((Database)existingDatabase,this.name);
     newTable._logicalClasses = new List<Class>(logicalClasses);
     newTable.derivedFromItem = this;
     if (save) newTable.save();
     return newTable;
 }
 private List<Column> getCorrespondingColumn(List<DB.Column> originalColumns, DB.Table newTable)
 {
     var newColumns = new List<Column>();
     foreach (Column originalcolumn in originalColumns)
     {
         Column newColumn = newTable.columns.FirstOrDefault(x => x.name == originalcolumn.name) as Column;
         if (newColumn != null) newColumns.Add(newColumn);
     }
     return newColumns;
 }
 public void removeColumn(DB.Column column)
 {
     if (this.columns != null)this._columns.Remove((Column)column);
 }
 public override DB.DatabaseItem createAsNewItem(DB.DatabaseItem owner, bool save = true)
 {
     Table newTable = owner as Table;
     Database existingDatabase = owner as Database;
     if (newTable == null)
     {
         //look for corresponding table in existingDatabase
         newTable = (Table)existingDatabase.tables.FirstOrDefault(x => x.name == this.ownerTable.name);
     }
     if (newTable != null)
     {
         var newColumn = new Column(newTable,this.name);
         newColumn.isNotNullable = _isNotNullable;
         newColumn.type = _type;
         newColumn.logicalAttribute = _logicalAttribute;
         newColumn.isOverridden = isOverridden;
         newColumn.isRenamed = isRenamed;
         newColumn.position = _position;
         newColumn.derivedFromItem = this;
         if (save) newColumn.save();
         return newColumn;
     }
     return null;
 }
 public void removeConstraint(DB.Constraint constraint)
 {
     if (this.constraints != null) this._constraints.Remove((Constraint) constraint);
 }
 public override DB.Transformation.DatabaseItemTransformer getCorrespondingTransformer(DB.DatabaseItem item)
 {
     //check if the item is our table
     if (item == this.table) return this;
     //check columntransformers
     DB.Transformation.DatabaseItemTransformer correspondingTransformer = null;
     foreach (var columnTransformer in this.columnTransformers)
     {
         correspondingTransformer = columnTransformer.getCorrespondingTransformer(item);
         if (correspondingTransformer != null) return correspondingTransformer;
     }
     //check foreignKey transformers
     foreach (var foreignKeyTransformer in this.foreignKeyTransformers)
     {
         correspondingTransformer = foreignKeyTransformer.getCorrespondingTransformer(item);
         if (correspondingTransformer != null) return correspondingTransformer;
     }
     //check primary key transformer
     if (this.primaryKeyTransformer != null) return primaryKeyTransformer.getCorrespondingTransformer(item);
     //not found
     return correspondingTransformer;
 }
 protected override void updateDetails(DB.DatabaseItem newDatabaseItem)
 {
     //nothing extra to do there
 }
 public void renameItem(DB.DatabaseItem item, string newName)
 {
     //get corresponding transformer
     var transformer = getCorrespondingTransformer(item);
     if (transformer != null) transformer.rename(newName);
 }
 public abstract DB.Transformation.DatabaseItemTransformer getCorrespondingTransformer(DB.DatabaseItem item);