private void SetConnectorType(RelationDTO relation, Connector connector) { // Any of the foreign key fields is nullable - make the parent relation zero to one. if (relation.Items.Any(x => !x.ForeignAttributeRequired)) { connector.ToConnectorType = ConnectorType.ZeroOrOne; } else { connector.ToConnectorType = ConnectorType.ExactlyOne; } if (relation.OneToOne) { if (relation.AtLeastOne) { connector.FromConnectorType = ConnectorType.ExactlyOne; } else { connector.FromConnectorType = ConnectorType.ZeroOrOne; } } else { if (relation.AtLeastOne) { connector.FromConnectorType = ConnectorType.OneOrMany; } else { connector.FromConnectorType = ConnectorType.ZeroOrMany; } } }
public void ProcessCreateNewRelation() { var entityID = new ProjectTreeHelper().GetFirstAncestorID <EntityDTO>(); if (entityID == Guid.Empty) { throw new InvalidOperationException("No entity selected."); } var newRelation = new RelationDTO() { RelationName = "<Enter name>", ForeignEntityID = entityID }; var view = new RelationDetailsView(); view.Object = newRelation; var popup = new PopupWindow(); popup.Title = "New Relation"; popup.Validate = () => { return(new Validator().Validate(newRelation)); }; popup.ViewPanel.Children.Add(view); if (popup.ShowDialog() == true) { new ObjectDataSource().SaveObject(newRelation); ServiceLocator serviceLocator = ServiceLocator.GetActive(); serviceLocator.BasicController.ProcessProjectTreeRefresh(); } }
public JsonResult SaveRelations(RelationDTO Rel, string Status) { try { //if (ModelState.IsValid) //{ // employeeMasters objemployeeMasters = new employeeMasters(); bool res = employeeMasters.Save(Rel); // return Json(new { success = res }); //} //else //{ // return Json(new { success = false }); //} List <RelationDTO> all = employeeMasters.BindRelations(); var result = new { Success = res, data = all }; return(new JsonResult { Data = result, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); } catch (Exception ex) { EventLogger.WriteToErrorLog(ex, "RelationShip"); return(Json(new { success = false, errorMessage = ex.Message })); } }
public static Relation ConstructFromDto(RelationDTO dto) { return(new Relation() { Id = dto.id, TitleRomaji = dto.title_romaji, TitleEnglish = dto.title_english, TitleJapanese = dto.title_japanese, Type = dto.type, StartDate = dto.start_date, EndDate = dto.end_date, Season = dto.season, SeriesType = dto.series_type, Synonyms = dto.synonyms, Genres = dto.genres, IsAdult = dto.adult, AverageScore = dto.average_score, Popularity = dto.popularity, UpdatedAt = dto.updated_at, ImageUrlSmall = dto.image_url_sml, ImageUrlMedium = dto.image_url_med, ImageUrlLarge = dto.image_url_lge, ImageUrlBanner = dto.image_url_banner, TotalEpisodes = dto.total_episodes, AiringStatus = dto.airing_status, RelationType = AniListApiHelper.GetRelationType(dto.relation_type) }); }
public JsonResult DeleteRelation(RelationDTO Rel) { var c = employeeMasters.DeleteRecord(Rel.RecordId); return(new JsonResult { Data = c, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); }
public JsonResult CheckRelations(RelationDTO Rel) { try { var c = employeeMasters.CheckRelations(Rel); return(new JsonResult { Data = c, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); } catch (Exception ex) { EventLogger.WriteToErrorLog(ex, "RelationShip"); return(Json(new { success = false, errorMessage = ex.Message })); } }
public void Store() { DataConnector dataConnector = new DataConnector(); dataConnector.OpenConnection("mySql"); WorkflowDAO workflowDAO = new WorkflowDAO(dataConnector.MySqlConnection); ElementDAO elementDAO = new ElementDAO(dataConnector.MySqlConnection); RelationDAO relationDAO = new RelationDAO(dataConnector.MySqlConnection); WorkflowDTO workflowDTO = new WorkflowDTO(); workflowDTO.id = this.id; workflowDTO.name = this.name; if (this.startElement != null) { workflowDTO.startElement = this.startElement.id; } if (this.finishElement != null) { workflowDTO.finishElement = this.finishElement.id; } this.id = (int)workflowDAO.StoreWorkflow(workflowDTO); foreach (FlowElement element in elements) { ElementDTO elementDTO = new ElementDTO(); elementDTO.id = element.id; elementDTO.owner = this.id; elementDTO.name = element.name; elementDTO.enabled = element.enabled; elementDTO.elementType = element.elementType; elementDAO.StoreElement(elementDTO); } foreach (Relation relation in relations) { RelationDTO relationDTO = new RelationDTO(); relationDTO.origin = relation.origin.id; relationDTO.destinarion = relation.destination.id; relationDAO.StoreRelation(relationDTO); } dataConnector.CloseConnection(); }
public JsonResult UpdateRelations(RelationDTO Rel) { try { bool res = employeeMasters.UpdateRelations(Rel); List <RelationDTO> all = employeeMasters.BindRelations(); var result = new { Success = res, data = all }; return(new JsonResult { Data = result, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); } catch (Exception ex) { EventLogger.WriteToErrorLog(ex, "RelationShip"); return(Json(new { success = false, errorMessage = ex.Message })); } }
public Int64 StoreRelation(RelationDTO relation) { String commandText = "INSERT INTO `flowManager`.`relation` VALUES(null, " + relation.owner + ", " + relation.origin + ", " + relation.destinarion + ")"; if (relation.id != 0) { commandText = "UPDATE `flowManager`.`relation` SET owner = " + relation.owner + ", origin = '" + relation.origin + "', destination = " + relation.destinarion + " WHERE id = " + relation.id; } commandText = commandText + ';' + Environment.NewLine + "SELECT LAST_INSERT_ID()"; MySqlCommand command = new MySqlCommand(commandText, this.mySqlConnection); Int64 insertId = (Int64)command.ExecuteScalar(); if (relation.id != 0) { insertId = relation.id; } return(insertId); }
// Recupera os objetos "relation" pertencentes ao workflow especificado public List <RelationDTO> RetrieveRelations(int workflowId) { List <RelationDTO> relationList = new List <RelationDTO>(); String query = "SELECT * FROM `flowManager`.`relation` WHERE owner=" + workflowId; MySqlCommand command = new MySqlCommand(query, this.mySqlConnection); MySqlDataReader dataReader = command.ExecuteReader(); while (dataReader.Read()) { RelationDTO relation = new RelationDTO(); relation.id = (int)dataReader["id"]; relation.owner = (int)dataReader["owner"]; relation.origin = (int)dataReader["origin"]; relation.destinarion = (int)dataReader["destination"]; relationList.Add(relation); } dataReader.Close(); return(relationList); }
private static void CopyRelation(BDOs bdos, RelationDTO rel) { List <DataColumn> pColumns = new List <DataColumn>(); foreach (string col in rel.parentCols) { if (bdos.Tables[rel.parentBusiNo].Columns.Contains(col)) { pColumns.Add(bdos.Tables[rel.parentBusiNo].Columns[col]); } } List <DataColumn> childColumns = new List <DataColumn>(); foreach (string col in rel.childCols) { if (bdos.Tables[rel.name].Columns.Contains(col)) { childColumns.Add(bdos.Tables[rel.name].Columns[col]); } } bdos.Relations.Add(rel.name, pColumns.ToArray(), childColumns.ToArray()); }
public void ProcessConnectEntitiesOnDiagram(DiagramEntityDTO from, DiagramEntityDTO to) { if (from == null) { throw new ArgumentNullException("from"); } if (to == null) { throw new ArgumentNullException("to"); } var newRelation = new RelationDTO() { RelationName = String.Format("{0}_{1}", from.EntityName, to.EntityName), PrimaryEntityID = to.EntityID, ForeignEntityID = from.EntityID }; var view = new RelationDetailsView(); view.Object = newRelation; var popup = new PopupWindow(); popup.Title = "New Relation"; popup.Validate = () => { return(new Validator().Validate(newRelation)); }; popup.ViewPanel.Children.Add(view); if (popup.ShowDialog() == true) { new ObjectDataSource().SaveObject(newRelation); } ServiceLocator serviceLocator = ServiceLocator.GetActive(); serviceLocator.BasicController.ProcessProjectTreeRefresh(); }
internal List <RelationDTO> LoadRelations(DatabaseDTO database, Dictionary <string, Guid> entityIds, Dictionary <string, Guid> attributeIds, ref int lastTable) { const int ExpectedColumnsTotal = 8; const int TablesPerCall = 4; // TODO: move to config var relations = new List <RelationDTO>(); var commandText = SqlQueries.GetRelationsQuery; using (var connection = new SqlConnection(database.ConnectionString)) { var command = connection.CreateCommand(); command.CommandType = CommandType.Text; command.CommandText = commandText; var param1 = new SqlParameter(); param1.ParameterName = "@TABLE_NUMBER"; param1.SqlDbType = SqlDbType.Int; param1.Direction = ParameterDirection.Input; param1.Value = lastTable; command.Parameters.Add(param1); var param2 = new SqlParameter(); param2.ParameterName = "@TABLES_IN_ONE_CALL"; param2.SqlDbType = SqlDbType.Int; param2.Direction = ParameterDirection.Input; param2.Value = TablesPerCall; command.Parameters.Add(param2); connection.Open(); var reader = command.ExecuteReader(); { if (reader.HasRows) { if (reader.FieldCount != ExpectedColumnsTotal) { throw new InvalidOperationException(String.Format("Query returned less or more than {0} columns ({1})", ExpectedColumnsTotal, commandText)); } string lastPrimaryTableName = string.Empty; string lastForeignTableName = string.Empty; string lastRelationName = string.Empty; RelationDTO relation = null; int relationsProcessed = 0; while (reader.Read()) { lastTable = Convert.ToInt32(reader["TABLE_NUMBER"]); string primaryTableName = reader["PrimaryTableName"].ToString(); string foreignTableName = reader["ForeignTableName"].ToString(); string relationName = reader["RelationName"].ToString(); // New relation if (!primaryTableName.Equals(lastPrimaryTableName, StringComparison.InvariantCultureIgnoreCase) || !foreignTableName.Equals(lastForeignTableName, StringComparison.InvariantCultureIgnoreCase) || !relationName.Equals(lastRelationName, StringComparison.InvariantCultureIgnoreCase)) { relation = new RelationDTO() { RelationName = relationName, PrimaryEntityID = entityIds[primaryTableName], ForeignEntityID = entityIds[foreignTableName], OneToOne = Convert.ToInt32(reader["IsUnique"]) == 1 }; relations.Add(relation); relationsProcessed++; } string primaryColumnName = reader["PrimaryColumnName"].ToString(); string foreignColumnName = reader["ForeignColumnName"].ToString(); var relationItem = new RelationItemDTO() { RelationID = relation.ID, PrimaryAttributeID = attributeIds[primaryTableName + "." + primaryColumnName], ForeignAttributeID = attributeIds[foreignTableName + "." + foreignColumnName] }; relation.Items.Add(relationItem); lastPrimaryTableName = primaryTableName; lastForeignTableName = foreignTableName; lastRelationName = relationName; } } } reader.Close(); } return(relations); }
public static List <BDOs> ToBDOsModel(PostData postData) { //取真实表名 for (int i = 0; i < postData.BusiDatas.Length; i++) { bf_Busi busi = bf_Busis.GetItem(postData.BusiDatas[i].BusiNo); if (busi == null) { continue; } postData.BusiDatas[i].TableName = busi.TableName; busi = bf_Busis.GetItem(postData.BusiDatas[i].ParentBusiNo); if (busi == null) { continue; } postData.BusiDatas[i].ParentTableName = busi.TableName; } //按照表关系转换 List <BDOs> lstDs = new List <BDOs>(); List <string> lstTbInBdos = new List <string>(); for (int i = 0; i < postData.relations.Length; i++) { RelationDTO rel = postData.relations[i]; BDOs BDOS = lstDs.Find((b) => b.DataSetName == rel.parentBusiNo); if (BDOS == null) { BDOs bdos = null; BDO bdoParent = null; foreach (BDOs bds in lstDs) { bdoParent = bds[rel.parentBusiNo]; if (bdoParent != null) { bdos = bds; break; } } if (bdoParent == null) { bdos = new BDOs(rel.parentBusiNo); bdoParent = JsonToBDO(bdos, null, rel.parentBusiNo, postData.BusiDatas.AsEnumerable().FirstOrDefault(f => f.BusiNo.Equals(rel.parentBusiNo)).JsonData); CheckNullValue(bdoParent); bdos.DataSetName = rel.parentBusiNo; } BDO bdoChild = JsonToBDO(bdos, null, rel.name, postData.BusiDatas.AsEnumerable().FirstOrDefault(f => f.BusiNo.ToUpper().Equals(rel.name.ToUpper())).JsonData); if (bdoParent.Rows.Count == 0) { foreach (DataRow row in bdoChild.Rows) { if (bdoParent.AsEnumerable().FirstOrDefault(f => f[rel.parentCols[0]].Equals(row[rel.childCols[0]])) != null) { continue; } DataRow nr = bdoParent.NewRow(); nr[rel.parentCols[0]] = row.RowState == DataRowState.Deleted?row[rel.childCols[0], DataRowVersion.Original]: row[rel.childCols[0]]; bdoParent.Rows.Add(nr); } bdoParent.AcceptChanges(); } bdoParent.AddChildren(rel.name, bdoChild, rel.parentCols[0], rel.childCols[0]); //CopyRelation(bdos, rel); if (!lstDs.Contains(bdos)) { lstDs.Add(bdos); lstTbInBdos.Add(rel.parentBusiNo); } lstTbInBdos.Add(rel.name); } else { BDO bdo = JsonToBDO(BDOS, null, rel.name, postData.BusiDatas.AsEnumerable().FirstOrDefault(f => f.BusiNo.Equals(rel.name)).JsonData); CheckNullValue(bdo); if (BDOS.MasterBDO.Rows.Count == 0) { foreach (DataRow row in bdo.Rows) { if (BDOS.MasterBDO.AsEnumerable().FirstOrDefault(f => f[rel.parentCols[0]].Equals(row[rel.childCols[0]])) != null) { continue; } DataRow nr = BDOS.MasterBDO.NewRow(); nr[rel.parentCols[0]] = row[rel.childCols[0]]; BDOS.MasterBDO.Rows.Add(nr); } BDOS.MasterBDO.AcceptChanges(); } BDOS.MasterBDO.AddChildren(rel.name, bdo, rel.parentCols[0], rel.childCols[0]); //CopyRelation(BDOS, rel); lstTbInBdos.Add(rel.name); } } //无表关系的单表 foreach (BusiData bd in postData.BusiDatas) { if (!lstTbInBdos.Exists((name) => name == bd.BusiNo)) { BDOs singleBDOs = new BDOs(bd.BusiNo); BDO bdo = JsonToBDO(singleBDOs, null, bd.BusiNo, postData.BusiDatas.AsEnumerable().FirstOrDefault(f => f.BusiNo.Equals(bd.BusiNo)).JsonData); CheckNullValue(bdo); singleBDOs.DataSetName = bd.BusiNo; lstDs.Add(singleBDOs); } } return(lstDs); }