/// <summary> /// Generate constraint description for a composite primary key /// </summary> /// <param name="compositePK"></param> /// <returns></returns> public static string SchemaConstraintsPK(CompositePK compositePK) { string line = ""; foreach (SinglePK pk in compositePK.PKList) { line += SchemaConstraintsPK(pk) + "<br/>- "; } return line.Substring(0, line.Length - 7); }
/// <summary> /// Only handle (2-2) composite PK /// Given the mapping file's id Element /// return POJO class/table primary key /// </summary> /// <param name="idEle"></param> /// <param name="classFullName"></param> /// <param name="tableName"></param> /// <param name="pkgName"></param> /// <returns>CompositePK</returns> private CompositePK _GetMappingFilePrimaryKey_CompositePK(XElement idEle, string classFullName, string tableName, string pkgName) { string classPK_C = ""; string classPKType = ""; XAttribute classPK_NameAttr = idEle.Attributes("name").SingleOrDefault(); XAttribute classPK_ClassAttr = idEle.Attributes("class").SingleOrDefault(); if (classPK_NameAttr != null && classPK_ClassAttr != null) { classPK_C = classFullName + "." + classPK_NameAttr.Value; classPKType = classPK_ClassAttr.Value; if (pkgName != "") { classPKType = pkgName + "." + classPKType; } } List<string> tablePK_C = new List<string>(); List<SinglePK> pkList = new List<SinglePK>(); foreach (XElement subEle in idEle.Elements()) { if (subEle.Name.ToString().Contains("key-")) { string classPkL = subEle.Attributes("name").SingleOrDefault().Value; string tablePkL = classPkL; string constraintInfoL = ""; XAttribute colAttr = subEle.Attributes("column").SingleOrDefault(); if (colAttr != null) { tablePkL = colAttr.Value; constraintInfoL = DBConstraintExtractorXML.GetConstraintInfo(subEle); } else { //tablePk = subEle.Descendants("column").SingleOrDefault().Attributes("name").SingleOrDefault().Value; XElement colEleL = subEle.Descendants("column").SingleOrDefault(); if (colEleL != null) { XAttribute tablePkAttr = colEleL.Attributes("name").SingleOrDefault(); if (tablePkAttr != null) { tablePkL = tablePkAttr.Value; } constraintInfoL = DBConstraintExtractorXML.GetConstraintInfo(colEleL); } } string pkTypeL = ""; XAttribute typeAttr = subEle.Attributes("type").SingleOrDefault(); if (typeAttr != null) { pkTypeL = typeAttr.Value; } if (classPKType != "" && classPkL != "") { classPkL = classPKType + "." + classPkL; } if (classPKType == "" && classPkL != "") { classPkL = classFullName + "." + classPkL; } pkList.Add(new SinglePK(classPkL, tableName + "." + tablePkL, pkTypeL, constraintInfoL, "")); tablePK_C.Add(tableName + "." + tablePkL); } } CompositePK pk = new CompositePK(classPK_C, tablePK_C, classPKType, pkList); return pk; }