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);
		}
Esempio n. 3
0
        /// <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);
            }
        }