public CodeRefObjectBaseCore(IHierarchy Ihierarchy, IHierarchicalCode codeRef, IList<ICodelistObject> codelists) : base(codeRef) { Icode = IGetCode(Ihierarchy, codeRef, codelists); if (codeRef.CodeRefs != null) { _codeRefs = new List<IHierarchicalCodeObjectBase>(); /* foreach */ foreach (IHierarchicalCode currentCodeRef in codeRef.CodeRefs) _codeRefs.Add(new CodeRefObjectBaseCore(Ihierarchy, currentCodeRef, codelists)); } }
private ICode IGetCode(IHierarchy Ihierarchy, IHierarchicalCode codeRef, IList<ICodelistObject> codelists) { IStructureReference sRef = null; if (codeRef.CodeReference != null) { sRef = codeRef.CodeReference; } else { IHierarchicalCodelistObject hcl = Ihierarchy .MaintainableParent; ICodelistRef codelistRef = GetCodelistRef(hcl.CodelistRef, codeRef.CodelistAliasRef); sRef = codelistRef.CodelistReference; } ICodelistObject codelist = (ICodelistObject)MaintainableUtil.ResolveReference(codelists, sRef); if (codelist == null) { throw new ArgumentException("Codelist " + sRef.MaintainableUrn + " Not found"); } return GetCode(codelist, sRef.ChildReference.Id); }
/// <summary> /// Insert a <see cref="IHierarchicalCode"/> to mapping store table <c>HCL_CODE</c>. /// </summary> /// <param name="state"> /// The state. /// </param> /// <param name="coderef"> /// The Hierarchical code reference. /// </param> /// <param name="hierarchyID"> /// The hierarchy ID. /// </param> /// <param name="parentID"> /// The parent id. /// </param> /// <param name="codelistReferences"> /// The codelist references. /// </param> /// <param name="levelIds"> /// The level Ids. /// </param> /// <returns> /// The primary key of the ne /// </returns> private long InsertCodeReference(DbTransactionState state, IHierarchicalCode coderef, long hierarchyID, long parentID, StructureCache codelistReferences, IDictionary <string, long> levelIds) { var artefactStoredProcedure = _storedProcedures.InsertHclCode; long artefactImportStatus; using (DbCommand command = artefactStoredProcedure.CreateCommandWithDefaults(state)) { DbParameter parentHcodeIDIdParameter = artefactStoredProcedure.CreateParentHcodeIdParameter(command); parentHcodeIDIdParameter.Value = parentID > 0 ? (object)parentID : null; DbParameter lcdIddParameter = artefactStoredProcedure.CreateLcdIdParameter(command); ItemSchemeFinalStatus itemSchemeFinalStatus = codelistReferences.GetStructure(state, coderef.CodeReference); ItemStatus codeStatus; if (itemSchemeFinalStatus.ItemIdMap.TryGetValue(coderef.CodeReference.ChildReference.Id, out codeStatus)) { lcdIddParameter.Value = codeStatus.SysID; } DbParameter hierarchyIdParameter = artefactStoredProcedure.CreateHIdParameter(command); hierarchyIdParameter.Value = hierarchyID; DbParameter levelIdParameter = artefactStoredProcedure.CreateLevelIdParameter(command); ILevelObject levelObject = coderef.GetLevel(false); long levelPrimaryKey; if (levelObject != null && levelIds.TryGetValue(levelObject.Id, out levelPrimaryKey)) { levelIdParameter.Value = levelPrimaryKey; } if (coderef.Uri != null) { artefactStoredProcedure.CreateUriParameter(command).Value = coderef.Uri.ToString(); } artefactImportStatus = this.RunIdentifiableArterfactCommand(coderef, command, artefactStoredProcedure); } return(artefactImportStatus); }
/// <summary> /// Initializes a new instance of the <see cref="CodeRefMutableCore"/> class. /// </summary> /// <param name="codeRef"> /// The code ref. /// </param> public CodeRefMutableCore(IHierarchicalCode codeRef) : base(codeRef) { this._codeRefs = new List<ICodeRefMutableObject>(); this._codeReference = codeRef.CodeReference.CreateMutableInstance(); this._codelistAliasRef = codeRef.CodelistAliasRef; this._codeId = codeRef.CodeId; // change list to Mutable CodeRefBeans if (codeRef.CodeRefs != null) { foreach (IHierarchicalCode currentCodeRef in codeRef.CodeRefs) { this._codeRefs.Add(new CodeRefMutableCore(currentCodeRef)); } } if (codeRef.GetLevel(false) != null) { this._levelReference = codeRef.GetLevel(false).GetFullIdPath(false); } }