Exemple #1
0
        public Tag(ITaggable target, TagPrototype prototype)
        {
            if (prototype.TargetType != target.GetType())
                throw new ArgumentException("The given prototype is not compatible with the given target's type.",
                                            "prototype");

            Target = target;
            Prototype = prototype;
        }
Exemple #2
0
 static void Tags(ITaggable t)
 {
     if (t.Tags.Count > 0)
     {
         Console.Write("Tags: ");
         Console.WriteLine(t.Tags.Aggregate((a, b) => $"{a}, {b}"));
     }
     //for (int i = 0; i < tags.Count - 1; i++)
     //    Console.Write($" {tags[i]},");
     //Console.WriteLine(" " + tags[tags.Count - 1]);
 }
Exemple #3
0
        public static void EnsureTags(IDbContext dbContext, ITaggable taggable, params Tag[] tags)
        {
            if (tags == null)
              {
            return;
              }

              foreach (Tag tag in tags)
              {
            EnsureTag(dbContext, taggable, tag);
              }
        }
Exemple #4
0
        protected static void SetTags(ParsedMessage parsedMessage, ITaggable taggable)
        {
            if (parsedMessage["TAGS"] == null)
            {
                return;
            }

            taggable.Tags.Clear();

            foreach (var tag in parsedMessage["TAGS"].Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries))
            {
                taggable.Tags.Add(tag);
            }
        }
Exemple #5
0
        public IList<Tag> GetByItem(ITaggable item)
        {
            var id = item.Id;
            var typeName = item.GetType().AssemblyQualifiedName;

            DetachedCriteria query =
                    DetachedCriteria.For(typeof(Tag), "t").
                    CreateCriteria("Prototype", "p", JoinType.InnerJoin);

            ICriteria criteriaQuery = query.GetExecutableCriteria(_session);

            criteriaQuery.Add(Restrictions.Eq("p.TargetTypeName", typeName));
            criteriaQuery.Add(Restrictions.Eq("t.TargetId", id));

            return criteriaQuery.List<Tag>();
        }
Exemple #6
0
        public static void EnsureTag(Tag[] allTags, ITaggable taggable, Tag tag)
        {
            // we change taggable (e.g. Link) but do not call dbContext.Update as this is done
              // by caller. this way we can prevent Modified-property on taggable being updated,
              // just because TagString changed (e.g. when tag hierarchy has changed). if we add
              // a tag to a taggable, dbContext.Update should be called by caller, as he is actually
              // changing the taggable.

              string currentTagString = taggable.TagString ?? string.Empty;
              bool hasTags = !string.IsNullOrEmpty(currentTagString);

              string tagPath = GetTagPath(allTags, tag);

              if (hasTags && currentTagString.Contains(tagPath))
              {
            return;
              }

              taggable.TagString = hasTags
                             ? string.Concat(currentTagString, Separator, tagPath)
                             : tagPath;
        }
Exemple #7
0
 private static int CountInheritedTags(ITaggable[] taggables, int tagId)
 {
     string tagIdSegment = JoinTagPathElements(tagId);
       return taggables.Count(t => IsInheritedTag(t, tagIdSegment));
 }
Exemple #8
0
        public static bool HasTag(this ITaggable taggable, string tag)
        {
            Ensure.That(taggable, nameof(taggable)).IsNotNull();

            return(taggable.Tags.Contains(tag));
        }
Exemple #9
0
 public void DeleteTagFromTaggable(Tag tag, ITaggable taggable)
 {
     if (taggable is Answer)
     {
         DeleteTagFromAnswer(taggable as Answer, tag);
     }
     else if (taggable is Question)
     {
         DeleteTagFromQuestion(taggable as Question, tag);
     }
     else if (taggable is Assessment)
     {
         DeleteTagFromAssessment(taggable as Assessment, tag);
     }
     else
     {
         throw new Exception("Cannot delete unsupported ITaggable object.");
     }
 }
Exemple #10
0
 public static Expect <Tag <T> > IsSet <T>(this Expect <Tag <T> > expect, ITaggable target, Text issue = null)
 {
     return(expect.IsTrue(t => Check.True(t).IsSet(target), issue, "tag set", t => $"tag set: {t}"));
 }
Exemple #11
0
        static void Main(string[] args)
        {
            // Pergunta 2
            PowerUp armorPack = new PowerUp();

            armorPack.Tag = "CRL";
            Console.WriteLine(armorPack);
            armorPack.Tag = "Armor+75";
            Console.WriteLine(armorPack);

            // Instrução 1
            // Esta instrução é válida, pois o construtor da classe PowerUp não
            // requer qualquer argumento e não possui modificadores de herança;
            PowerUp pu = new PowerUp();

            // Instrução 2
            // Esta instrução é inválida, pois a classe GameObject com o
            // modificador de herança abstract, impedindo-a de ser instanciada;
            GameObject go = new GameObject();

            // Instrução 3
            // Esta instrução é válida, pois, tal como a instrução 1, o
            // construtor da classe Trap não requer qualquer argumento e não
            // possui modificadores de herança;
            Trap t = new Trap();

            // Instrução 4
            // Esta instrução é inválida, pois não é possível instanciar uma
            // interface;
            ITaggable it = new ITaggable();

            // Instrução 5
            // Instrução 5: Esta instrução é inválida, pois a classe
            // GameObject não possui o método `DisableTrap()`, apenas a  classe
            // Trap;
            go.DisableTrap(); // go é uma variável do tipo GameObject

            // Instrução 6
            // Esta instrução é inválida, pois, tal como a instrução 2, a
            // declaração da classe `GameObject` tem o modificador de herança
            // `abstract`, impedindo-a de ser instanciada;
            PowerUp armorPacko = new GameObject();

            // Instrução 7
            // Esta instrução é inválida, pois tenta converter o método
            // DisableTrap() da classe Trap para tipo inteiro, o que é
            // impossível;
            Trap gobj = new Trap();
            int  p    = gobj.DisableTrap; // gobj é do tipo Trap

            //Instrução 8
            // Esta instrução é inválida, pois a interface ITaggable não é
            // implementada na classe Trap, logo uma instância desta classe não
            // pode ter uma tag como variável;
            Trap trap = new Trap();

            Console.WriteLine($"{trap.Tag}"); // trap é uma instância de Trap

            // Instrução 9
            // Esta instrução é válida, pois a classe Trap é uma subclasse da
            // classe GameObject, que é a superclasse, logo podemos ter uma
            // instância da classe Trap do tipo GameObject, mas não o contrário
            // como podemos observar nas instruções 2 e 6;
            GameObject go2 = new Trap();

            // Instrução 10
            // Esta instrução é válida, pois, tal como na instrução 9, a classe
            // PowerUp é uma subclasse da classe GameObject, que é a
            // superclasse, logo podemos ter uma instância da classe PowerUp do
            // tipo GameObject, mas não o contrário como podemos observar nas
            // instruções 2 e 6;
            GameObject go3 = new PowerUp();

            // Instrução 11
            // Esta instrução é válida, pois a classe PowerUp tem o método
            // Priority, herdado da superclasse GameObject e sobreposto
            // para retornar o valor do comprimento da Tag, podendo usar a Tag
            // pois implementa a interface ITaggable;
            PowerUp pup = new PowerUp();

            Console.WriteLine($"{pup.Priority()}");// pup: instância de PowerUp
        }
Exemple #12
0
 public static void EnsureTag(IDbContext dbContext, ITaggable taggable, Tag tag)
 {
     EnsureTag(dbContext.Tags.ToArray(), taggable, tag);
 }
Exemple #13
0
 private static bool IsInheritedTag(ITaggable taggable, string tagStringSegment)
 {
     return GetPathSegments(taggable.TagString).Any(ts => ts != tagStringSegment
                                                    && !ts.EndsWith(tagStringSegment)
                                                    && ts.Contains(tagStringSegment));
 }
Exemple #14
0
 private static bool IsDirectTag(ITaggable taggable, string tagStringSegment)
 {
     return GetPathSegments(taggable.TagString).Any(ts => IsDirectTag(tagStringSegment, ts));
 }
Exemple #15
0
 public static Check <Tag <T> > IsSet <T>(this Check <Tag <T> > check, ITaggable target)
 {
     return(check.IsTrue(t => t.IsSet(target)));
 }
Exemple #16
0
        public static void RemoveTag(ITaggable taggable, int tagId)
        {
            if (taggable == null || string.IsNullOrEmpty(taggable.TagString))
              {
            return;
              }

              var tagStringElement = JoinTagPathElements(tagId);
              taggable.TagString = string.Join(Separator.ToString(),
                                       GetPathSegments(taggable.TagString).Where(s => !s.Contains(tagStringElement)));
        }
Exemple #17
0
 public void Clear(ITaggable target)
 {
     target.Tags.Clear(this);
 }
Exemple #18
0
 public void Set(ITaggable target, object value)
 {
     target.Tags.Set(this, value);
 }
Exemple #19
0
 public object Get(ITaggable target, bool throwIfUnset = false)
 {
     return(target.Tags.Get(this, throwIfUnset));
 }
Exemple #20
0
 public bool IsSet(ITaggable target)
 {
     return(target.Tags.IsSet(this));
 }