public static Boolean ContainsAll(this contentTokenFlag flags, params contentTokenFlag[] tests)
 {
     foreach (contentTokenFlag f in tests)
     {
         if (flags.HasFlag(f))
         {
             return(false);
         }
     }
     return(true);
 }
Esempio n. 2
0
        /// <summary>
        /// Explores the token.
        /// </summary>
        /// <param name="query">The query.</param>
        /// <returns></returns>
        public override tokenQueryResponse exploreToken(tokenQuery query)
        {
            getReady();

            tokenQueryResponse response   = new tokenQueryResponse(query, tokenQuerySourceEnum.ext_dict);
            List <DataRow>     matches    = new List <DataRow>();
            String             expression = "";

            foreach (DataTable dt in namedEntityDataSet.Tables)
            {
                expression = "";
                if (query.focus == contentTokenFlag.none)
                {
                    expression = dt.ExtendedProperties.getProperString(tokenResultEnum.query).Replace("".t(tokenResultEnum.needle), query.token);
                }
                else
                {
                    contentTokenFlag table_focus = (contentTokenFlag)dt.ExtendedProperties[tokenResultEnum.tokenFlag]; //.getProperEnum<contentTokenFlag>(contentTokenFlag.namedEntityKnown, );
                    if (table_focus.HasFlag(query.focus))
                    {
                        expression = dt.ExtendedProperties.getProperString(tokenResultEnum.query).Replace("".t(tokenResultEnum.needle), query.token);
                    }
                }

                if (expression != "")
                {
                    matches.AddRange(dt.Select(expression));
                }
            }

            foreach (DataRow dr in matches)
            {
                var fl = (contentTokenFlag)dr.Table.ExtendedProperties[tokenResultEnum.tokenFlag];
                response.flags.AddInstanceRange(fl.getEnumListFromFlags <contentTokenFlag>());
                response.dataRows.Add(dr);
                foreach (DataColumn dc in dr.Table.Columns)
                {
                    response.dataTokens.AddRangeUnique(dr[dc].toStringSafe().getTokens());
                }
            }

            if (response.flags.Count > 0)
            {
                response.setResponse("Known entity", "Flags earned: " + response.flags.toCsvInLine(";"));
            }
            else
            {
                response.setResponse(tokenQueryResultEnum.unknown_token);
            }

            return(response);
        }