private async Task<Errorable<Ref>> getRefByName(RefName refName)
        {
            FileInfo fiTracker = system.getRefPathByRefName(refName);
            if (!fiTracker.Exists) return new RefNameDoesNotExistError(refName);

            byte[] buf;
            int nr = 0;
            using (var fs = new FileStream(fiTracker.FullName, FileMode.Open, FileAccess.Read, FileShare.Read, 16384, true))
            {
                // TODO: implement an async buffered Stream:
                buf = new byte[16384];
                nr = await fs.ReadAsync(buf, 0, 16384).ConfigureAwait(continueOnCapturedContext: false);
                if (nr >= 16384)
                {
                    // My, what a large tag you have!
                    throw new NotSupportedException();
                }
            }

            // Parse the CommitID:
            using (var ms = new MemoryStream(buf, 0, nr, false))
            using (var sr = new StreamReader(ms, Encoding.UTF8))
            {
                string line = sr.ReadLine();
                if (line == null) return new RefNameDoesNotExistError(refName);

                var ecid = CommitID.TryParse(line);
                if (ecid.HasErrors) return ecid.Errors;

                return (Ref)new Ref.Builder(refName, ecid.Value);
            }
        }
Exemplo n.º 2
0
        public override int GetHashCode()
        {
            int hashName = Name.GetHashCode(StringComparison.Ordinal);
            int hashRef  = RefName.GetHashCode(StringComparison.Ordinal);
            int hashRes  = (Resolution != null) ? Resolution.GetHashCode() : 0;
            int hashUnit = (Unit != null) ? Unit.GetHashCode(StringComparison.Ordinal) : 0;

            return(hashName ^ hashRef ^ hashRes ^ hashUnit);
        }
        public async Task <Errorable <Ref> > DeleteRefByName(RefName name)
        {
            // Grab the ref before we destroy it, just in case:
            var rf = await db.ExecuteSingleQueryAsync(new QueryRef(name));

            // Destroy it:
            await db.ExecuteNonQueryAsync(new DestroyRefByName(name));

            // Return the old ref data that was destroyed:
            return(rf);
        }
 private void deleteRef(RefName name)
 {
     lock (FileSystem.SystemLock)
     {
         FileInfo fi = system.getRefPathByRefName(name);
         if (fi.Exists)
         {
             fi.Delete();
         }
     }
 }
        public async Task <Errorable <Ref> > DeleteRefByName(RefName name)
        {
            var erf = await getRefByName(name).ConfigureAwait(continueOnCapturedContext: false);

            if (erf.HasErrors)
            {
                return(erf.Errors);
            }

            deleteRef(name);

            return(erf.Value);
        }
        public async Task<Errorable<Tuple<Ref, CommitTree>>> GetCommitTreeByRefName(RefName refName, int depth = 10)
        {
            // TODO: implement a single query to handle this
            var erf = await rfrepo.GetRefByName(refName);
            if (erf.HasErrors) return erf.Errors;

            Ref rf = erf.Value;

            var ecmtr = await db.ExecuteListQueryAsync(new QueryCommitsRecursively(rf.CommitID, depth));
            if (ecmtr.HasErrors) return ecmtr.Errors;

            CommitTree cmtr = ecmtr.Value;
            return new Tuple<Ref, CommitTree>(rf, cmtr);
        }
Exemplo n.º 7
0
        internal FileInfo getRefPathByRefName(RefName refName)
        {
            if (refName == null)
            {
                throw new ArgumentNullException("refName");
            }

            DirectoryInfo refDir = getRefsDirectory();

            string[] parts = new string[1] {
                refDir.FullName
            }.Concat(refName.Parts).ToArray(refName.Parts.Count + 1);
            string path = System.IO.Path.Combine(parts);

            return(new FileInfo(path));
        }
        private async Task <Errorable <Ref> > getRefByName(RefName refName)
        {
            FileInfo fiTracker = system.getRefPathByRefName(refName);

            if (!fiTracker.Exists)
            {
                return(new RefNameDoesNotExistError(refName));
            }

            byte[] buf;
            int    nr = 0;

            using (var fs = new FileStream(fiTracker.FullName, FileMode.Open, FileAccess.Read, FileShare.Read, 16384, true))
            {
                // TODO: implement an async buffered Stream:
                buf = new byte[16384];
                nr  = await fs.ReadAsync(buf, 0, 16384).ConfigureAwait(continueOnCapturedContext: false);

                if (nr >= 16384)
                {
                    // My, what a large tag you have!
                    throw new NotSupportedException();
                }
            }

            // Parse the CommitID:
            using (var ms = new MemoryStream(buf, 0, nr, false))
                using (var sr = new StreamReader(ms, Encoding.UTF8))
                {
                    string line = sr.ReadLine();
                    if (line == null)
                    {
                        return(new RefNameDoesNotExistError(refName));
                    }

                    var ecid = CommitID.TryParse(line);
                    if (ecid.HasErrors)
                    {
                        return(ecid.Errors);
                    }

                    return((Ref) new Ref.Builder(refName, ecid.Value));
                }
        }
Exemplo n.º 9
0
        public override int GetHashCode()
        {
            int hashCode = 17; // we *know* we are using this in a dictionary, so pre-compute this

            hashCode = hashCode * 23 + Id.GetHashCode();
            hashCode = hashCode * 23 + (Fid == null ? 0 : Fid.GetHashCode());
            hashCode = hashCode * 23 + (EnableDate == null ? 0 : EnableDate.GetHashCode());
            hashCode = hashCode * 23 + (DisableDate == null ? 0 : DisableDate.GetHashCode());
            hashCode = hashCode * 23 + Dr.GetHashCode();
            hashCode = hashCode * 23 + Ts.GetHashCode();
            hashCode = hashCode * 23 + (CreateBy == null ? 0 : CreateBy.GetHashCode());
            hashCode = hashCode * 23 + (CreateDate == null ? 0 : CreateDate.GetHashCode());
            hashCode = hashCode * 23 + (CreateName == null ? 0 : CreateName.GetHashCode());
            hashCode = hashCode * 23 + (UpdateBy == null ? 0 : UpdateBy.GetHashCode());
            hashCode = hashCode * 23 + (UpdateDate == null ? 0 : UpdateDate.GetHashCode());
            hashCode = hashCode * 23 + (UpdateName == null ? 0 : UpdateName.GetHashCode());
            hashCode = hashCode * 23 + (TableName == null ? 0 : TableName.GetHashCode());
            hashCode = hashCode * 23 + (ColName == null ? 0 : ColName.GetHashCode());
            hashCode = hashCode * 23 + (ColComment == null ? 0 : ColComment.GetHashCode());
            hashCode = hashCode * 23 + (ColDefault == null ? 0 : ColDefault.GetHashCode());
            hashCode = hashCode * 23 + (ColType == null ? 0 : ColType.GetHashCode());
            hashCode = hashCode * 23 + ColProperty.GetHashCode();
            hashCode = hashCode * 23 + ColLength.GetHashCode();
            hashCode = hashCode * 23 + DisplayWidth.GetHashCode();
            hashCode = hashCode * 23 + ColOrder.GetHashCode();
            hashCode = hashCode * 23 + ColPrecision.GetHashCode();
            hashCode = hashCode * 23 + NullAble.GetHashCode();
            hashCode = hashCode * 23 + ShowAble.GetHashCode();
            hashCode = hashCode * 23 + IsDefaultCol.GetHashCode();
            hashCode = hashCode * 23 + (CtrlType == null ? 0 : CtrlType.GetHashCode());
            hashCode = hashCode * 23 + (RefTable == null ? 0 : RefTable.GetHashCode());
            hashCode = hashCode * 23 + (RefID == null ? 0 : RefID.GetHashCode());
            hashCode = hashCode * 23 + (RefCode == null ? 0 : RefCode.GetHashCode());
            hashCode = hashCode * 23 + (RefName == null ? 0 : RefName.GetHashCode());
            hashCode = hashCode * 23 + (RefCondition == null ? 0 : RefCondition.GetHashCode());
            hashCode = hashCode * 23 + (RefCols == null ? 0 : RefCols.GetHashCode());
            hashCode = hashCode * 23 + (RefType == null ? 0 : RefType.GetHashCode());
            hashCode = hashCode * 23 + (MainTable == null ? 0 : RefType.GetHashCode());
            hashCode = hashCode * 23 + (MainTableCol == null ? 0 : MainTableCol.GetHashCode());
            hashCode = hashCode * 23 + (CalculationExpr == null ? 0 : CalculationExpr.GetHashCode());
            return(hashCode);
        }
        public async Task <Errorable <Tuple <Ref, Commit> > > GetCommitByRefName(RefName refName)
        {
            var erf = await rfrepo.GetRefByName(refName).ConfigureAwait(continueOnCapturedContext: false);

            if (erf.HasErrors)
            {
                return(erf.Errors);
            }

            Ref rf = erf.Value;

            var ecm = await getCommit(rf.CommitID).ConfigureAwait(continueOnCapturedContext: false);

            if (ecm.HasErrors)
            {
                return(ecm.Errors);
            }

            Commit cm = ecm.Value;

            return(new Tuple <Ref, Commit>(rf, cm));
        }
Exemplo n.º 11
0
        protected override void Init()
        {
            base.Init();

            _isTypeOfs = new List <bool>();

            if (RefName != null)
            {
                var typeNames = RefName.Split(_delimiter);
                foreach (var typeName in typeNames)
                {
                    if (EntityTypeMapping.UsesIsTypeOf(typeName))
                    {
                        _isTypeOfs.Add(true);
                    }
                    else
                    {
                        _isTypeOfs.Add(false);
                    }
                }
            }
        }
Exemplo n.º 12
0
        protected override List <NormalizedName> GetRefNameAsNormalizedNames()
        {
            var normalizedNamesList = new List <NormalizedName>();

            if (RefName != null)
            {
                var newRefNames = RefName.Split(_delimiter);
                foreach (var newRefName in newRefNames)
                {
                    if (_nameNormalizer == null)
                    {
                        var symbol = new Symbol(newRefName);
                        normalizedNamesList.Add(new NormalizedName(symbol, null, null, newRefName));
                    }
                    else
                    {
                        normalizedNamesList.Add(_nameNormalizer(Parent as EFElement, newRefName));
                    }
                }
            }

            return(normalizedNamesList);
        }
Exemplo n.º 13
0
 public QueryRef(RefName name)
 {
     this._name = name;
 }
Exemplo n.º 14
0
 public QueryCommitByRefName(RefName refName)
 {
     this._refName = refName;
 }
 private void deleteRef(RefName name)
 {
     lock (FileSystem.SystemLock)
     {
         FileInfo fi = system.getRefPathByRefName(name);
         if (fi.Exists) fi.Delete();
     }
 }
        public async Task <Errorable <Tuple <Ref, CommitTree> > > GetCommitTreeByRefName(RefName refName, int depth = 10)
        {
            // TODO: implement a single query to handle this
            var erf = await rfrepo.GetRefByName(refName);

            if (erf.HasErrors)
            {
                return(erf.Errors);
            }

            Ref rf = erf.Value;

            var ecmtr = await db.ExecuteListQueryAsync(new QueryCommitsRecursively(rf.CommitID, depth));

            if (ecmtr.HasErrors)
            {
                return(ecmtr.Errors);
            }

            CommitTree cmtr = ecmtr.Value;

            return(new Tuple <Ref, CommitTree>(rf, cmtr));
        }
 public Task<Errorable<Tuple<Ref, Commit>>> GetCommitByRefName(RefName refName)
 {
     return db.ExecuteSingleQueryAsync(new QueryCommitByRefName(refName));
 }
 public RefNameDoesNotExistError(RefName refName) : base("A ref with ref name '{0}' does not exist", refName) { }
Exemplo n.º 19
0
 public RefNameDoesNotExistError(RefName refName) : base("A ref with ref name '{0}' does not exist", refName)
 {
 }
 public Builder(
     RefName pName
    ,CommitID pCommitID
 )
 {
     this.Name = pName;
     this.CommitID = pCommitID;
 }
        public async Task <Errorable <Tuple <Ref, CommitTree> > > GetCommitTreeByRefName(RefName refName, int depth = 10)
        {
            var erf = await rfrepo.GetRefByName(refName).ConfigureAwait(continueOnCapturedContext: false);

            if (erf.HasErrors)
            {
                return(erf.Errors);
            }

            Ref rf   = erf.Value;
            var eall = await getCommitsRecursively(rf.CommitID, 1, depth).ConfigureAwait(continueOnCapturedContext: false);

            if (eall.HasErrors)
            {
                return(eall.Errors);
            }

            var all = eall.Value;

            // Return them (all[0] is the root):
            return(new Tuple <Ref, CommitTree>(
                       rf,
                       new CommitTree(all[0].ID, new ImmutableContainer <CommitID, ICommit>(cm => cm.ID, all))
                       ));
        }
Exemplo n.º 22
0
        private void UpdateRefNameUsingReplacement(string toBeReplaced, string replacement, RefNameReplacementPart partToBeReplaced)
        {
            Debug.Assert(
                !string.IsNullOrEmpty(toBeReplaced),
                GetType().FullName + ".UpdateRefNameUsingReplacement(): toBeReplaced must not null or empty");
            Debug.Assert(
                !string.IsNullOrEmpty(replacement),
                GetType().FullName + ".UpdateRefNameUsingReplacement(): replacement must not null or empty");
            if (string.IsNullOrEmpty(toBeReplaced) ||
                string.IsNullOrEmpty(replacement))
            {
                return;
            }

            var refNameAsNormalizedNames = GetRefNameAsNormalizedNames();

            if (1 != refNameAsNormalizedNames.Count)
            {
                Debug.Fail(
                    GetType().FullName
                    + ".UpdateRefNameUsingReplacement(): expecting only 1 symbol from GetRefNameAsNormalizedNames(). Received "
                    + refNameAsNormalizedNames.Count);
                return;
            }

            // replace toBeReplaced with replacement if present in the correct part
            var    refNameAsNameRef = refNameAsNormalizedNames[0];
            var    madeReplacement  = false;
            string replacementRefName;

            if (RefNameReplacementPart.NamespacePart == partToBeReplaced)
            {
                if (refNameAsNameRef.ConstructBindingStringWithReplacedNamespace(
                        toBeReplaced, replacement, out replacementRefName))
                {
                    madeReplacement = true;
                }
            }
            else if (RefNameReplacementPart.AliasPart == partToBeReplaced)
            {
                if (refNameAsNameRef.ConstructBindingStringWithReplacedAlias(
                        toBeReplaced, replacement, out replacementRefName))
                {
                    madeReplacement = true;
                }
            }
            else
            {
                if (refNameAsNameRef.ConstructBindingStringWithReplacedNamePart(
                        toBeReplaced, replacement, out replacementRefName))
                {
                    madeReplacement = true;
                }
            }

            // if any replacement was made above then unbind the Binding and
            // replace the underlying attribute value
            if (madeReplacement)
            {
                Debug.Assert(
                    replacementRefName != RefName,
                    "UpdateRefNameNamespaceOrAlias() is about to replace the following RefName with an identical value " + RefName);
                Unbind();

                // For most scenarios, RefName should be equal to refNameAsNameRef.ToBindingString()
                // But in FunctionImport's Return, the values are as follow:
                // RefName : "Collection([Old Fully-qualifed EntityType/ComplexType])"
                // refNameasNameRef.ToBindingString(): [Old Fully-qualifed EntityType/ComplexType]
                // replacementRefName: [New Fully-qualifed EntityType/ComplexType]
                if (String.Compare(RefName, refNameAsNameRef.ToBindingString(), StringComparison.CurrentCulture) != 0)
                {
                    replacementRefName = RefName.Replace(refNameAsNameRef.ToBindingString(), replacementRefName);
                }
                SetXAttributeValue(replacementRefName);
            }
            else
            {
                Debug.Assert(
                    replacementRefName == RefName,
                    "UpdateRefNameNamespaceOrAlias() for RefName, " + RefName
                    + ", is about to ignore the following replacement string which is different " + replacementRefName);
            }
        }
        public async Task<Errorable<Tuple<Ref, CommitTree>>> GetCommitTreeByRefName(RefName refName, int depth = 10)
        {
            var erf = await rfrepo.GetRefByName(refName).ConfigureAwait(continueOnCapturedContext: false);
            if (erf.HasErrors) return erf.Errors;

            Ref rf = erf.Value;
            var eall = await getCommitsRecursively(rf.CommitID, 1, depth).ConfigureAwait(continueOnCapturedContext: false);
            if (eall.HasErrors) return eall.Errors;

            var all = eall.Value;

            // Return them (all[0] is the root):
            return new Tuple<Ref, CommitTree>(
                rf,
                new CommitTree(all[0].ID, new ImmutableContainer<CommitID, ICommit>(cm => cm.ID, all))
            );
        }
        public async Task<Errorable<Tuple<Ref, Commit>>> GetCommitByRefName(RefName refName)
        {
            var erf = await rfrepo.GetRefByName(refName).ConfigureAwait(continueOnCapturedContext: false);
            if (erf.HasErrors) return erf.Errors;

            Ref rf = erf.Value;

            var ecm = await getCommit(rf.CommitID).ConfigureAwait(continueOnCapturedContext: false);
            if (ecm.HasErrors) return ecm.Errors;

            Commit cm = ecm.Value;
            return new Tuple<Ref, Commit>(rf, cm);
        }
 public Task <Errorable <Ref> > GetRefByName(RefName name)
 {
     return(db.ExecuteSingleQueryAsync(new QueryRef(name)));
 }
 public Task<Errorable<Ref>> GetRefByName(RefName name)
 {
     return getRefByName(name);
 }
 public Task <Errorable <Ref> > GetRefByName(RefName name)
 {
     return(getRefByName(name));
 }
        public async Task<Errorable<Ref>> DeleteRefByName(RefName name)
        {
            var erf = await getRefByName(name).ConfigureAwait(continueOnCapturedContext: false);
            if (erf.HasErrors) return erf.Errors;

            deleteRef(name);

            return erf.Value;
        }
 public Task <Errorable <Tuple <Ref, Commit> > > GetCommitByRefName(RefName refName)
 {
     return(db.ExecuteSingleQueryAsync(new QueryCommitByRefName(refName)));
 }
 public DestroyRefByName(RefName refName)
 {
     this._refName = refName;
 }
Exemplo n.º 31
0
 /// <summary>
 /// 哈希表
 /// </summary>
 /// <returns></returns>
 public override int GetHashCode()
 {
     return(RefName.GetHashCode() * 13 + RovName.GetHashCode() * 5);
 }
        internal FileInfo getRefPathByRefName(RefName refName)
        {
            if (refName == null) throw new ArgumentNullException("refName");

            DirectoryInfo refDir = getRefsDirectory();

            string[] parts = new string[1] { refDir.FullName }.Concat(refName.Parts).ToArray(refName.Parts.Count + 1);
            string path = System.IO.Path.Combine(parts);
            return new FileInfo(path);
        }