/// <summary>
 /// Converts collection to comparable collection with equals/hashCode/toString implementations.
 /// </summary>
 /// <typeparam name="T">Type of collection</typeparam>
 /// <param name="source">this</param>
 /// <returns>Comparable collection</returns>
 public static IEnumerable <T> ToComparable <T>(this IEnumerable <T> source)
 {
     Preconditions.IsNotNull(source, () => new ArgumentNullException("source"));
     if (source is IList <T> )
     {
         return(ComparableList <T> .Of((IList <T>) source));
     }
     if (source is ISet <T> )
     {
         return(ComparableSet <T> .Of((ISet <T>) source));
     }
     if (source is ICollection <T> )
     {
         return(ComparableCollection <T> .Of((ICollection <T>) source));
     }
     return(ComparableEnumerable <T> .Of(source));
 }
예제 #2
0
        public void GetRemainingCandidates(Relation relation, string v, string[] dimensions, string[] dim, List <string> diff)
        {
            int      nbAttr  = dimensions.Length;
            Lattice  lattice = new HybridLattice(relation);
            Iterator it      = lattice.conceptIterator(Traversal.TOP_ATTRSIZE);

            XmlDocument    doc = new XmlDocument();
            XmlDeclaration xmldecl;

            xmldecl          = doc.CreateXmlDeclaration("1.0", null, null);
            xmldecl.Encoding = "UTF-8";
            XmlElement root = (XmlElement)doc.AppendChild(doc.CreateElement("Elementary_Events"));

            while (it.hasNext())
            {
                Concept         c = it.next() as Concept;
                ElementaryEvent elementaryEvent = new ElementaryEvent();
                if (c.getAttributes().size() > nbAttr && c.getObjects().isEmpty() == false)
                {
                    ComparableSet cs         = c.getObjects();
                    Iterator      objects    = cs.iterator();
                    ComparableSet cs1        = c.getAttributes();
                    Iterator      attributes = cs1.iterator();
                    string[]      compare    = new string[dim.Length];
                    int           j          = 0;
                    while (attributes.hasNext())
                    {
                        string temp = attributes.next().ToString();
                        compare[j] = temp.Split('_')[0];
                        j++;
                    }

                    bool areEqual = true;
                    foreach (var item in dimensions)
                    {
                        areEqual &= compare.Contains(item);
                    }

                    List <string> photos = new List <string>();
                    string        photo  = "";
                    if (areEqual)
                    {
                        XmlElement ee     = doc.CreateElement("EE");
                        var        attrId = Guid.NewGuid().ToString();
                        ee.SetAttribute("Id", attrId);
                        elementaryEvent.Id = attrId;
                        List <string> imagesId = new List <string>();

                        while (objects.hasNext())
                        {
                            photo = objects.next().ToString();
                            if (diff.Contains(photo))
                            {
                                photos.Add(photo);
                            }
                        }
                        if (photos.Count > 0)
                        {
                            foreach (var item in photos)
                            {
                                XmlElement obj      = doc.CreateElement("Photos");
                                XmlText    objValue = doc.CreateTextNode(item);
                                imagesId.Add(item);
                                obj.AppendChild(objValue);
                                ee.AppendChild(obj);
                            }
                            attributes             = cs1.iterator();
                            elementaryEvent.Images = imagesId;
                            List <MetadataAttributes> attributesList = new List <MetadataAttributes>();

                            while (attributes.hasNext())
                            {
                                XmlElement         obj         = doc.CreateElement("Attributes");
                                string             attrValue   = attributes.next().ToString();
                                XmlText            objValue    = doc.CreateTextNode(attrValue);
                                MetadataAttributes currentAttr = ConvertStringMetadataAttribute(attrValue);
                                attributesList.Add(currentAttr);
                                obj.AppendChild(objValue);
                                ee.AppendChild(obj);
                            }
                            root.AppendChild(ee);
                            elementaryEvent.MetadataAttributes = attributesList;
                            ElementaryEvents.Add(elementaryEvent);
                        }
                    }
                }
            }
            doc.AppendChild(root);
            doc.InsertBefore(xmldecl, root);

            doc.Save(BaseUri + @"Results\Elementary Event Candidates\EEC2.xml");
            //Console.WriteLine(doc.OuterXml);
            StringBuilder sb = new StringBuilder();
            TextWriter    tr = new StringWriter(sb);
            XmlTextWriter wr = new XmlTextWriter(tr);

            wr.Formatting = Formatting.Indented;
            doc.Save(wr);
            wr.Close();
        }
예제 #3
0
        public void GetElementaryEventCandidates(Relation relation, string[] dimensions)
        {
            int      nbAttr  = dimensions.Length;
            Lattice  lattice = new HybridLattice(relation);
            Iterator it      = lattice.conceptIterator(Traversal.TOP_ATTRSIZE);

            XmlDocument    doc = new XmlDocument();
            XmlDeclaration xmldecl;

            xmldecl          = doc.CreateXmlDeclaration("1.0", null, null);
            xmldecl.Encoding = "UTF-8";
            XmlElement root = (XmlElement)doc.AppendChild(doc.CreateElement("Elementary_Events"));

            while (it.hasNext())
            {
                Concept         concept         = it.next() as Concept;
                ElementaryEvent elementaryEvent = new ElementaryEvent();
                if (concept.getAttributes().size() == nbAttr)
                {
                    ComparableSet cs         = concept.getObjects();
                    Iterator      objects    = cs.iterator();
                    ComparableSet cs1        = concept.getAttributes();
                    Iterator      attributes = cs1.iterator();
                    String[]      compare    = new String[nbAttr];
                    int           j          = 0;
                    while (attributes.hasNext())
                    {
                        string temp = attributes.next().ToString();
                        compare[j] = temp.Split('_')[0];
                        //int prefix = temp.indexOf("|");
                        //compare[j] = temp.substring(0, prefix);
                        j++;
                    }
                    Array.Sort(compare);
                    bool areEqual = compare.SequenceEqual(dimensions);
                    //bool areEqual = this.bruteforce2(compare, dimensions);
                    if (areEqual)
                    {
                        XmlElement ee     = doc.CreateElement("EE");
                        string     attrId = Guid.NewGuid().ToString();
                        elementaryEvent.Id = attrId;
                        ee.SetAttribute("Id", attrId);
                        List <string> imagesId = new List <string>();

                        while (objects.hasNext())
                        {
                            //Element obj = new Element("Photos");
                            XmlElement obj      = doc.CreateElement("Photos");
                            string     objectId = objects.next().ToString();
                            XmlText    objValue = doc.CreateTextNode(objectId);
                            imagesId.Add(objectId);
                            obj.AppendChild(objValue);
                            ee.AppendChild(obj);
                        }
                        elementaryEvent.Images = imagesId;
                        List <MetadataAttributes> attributesList = new List <MetadataAttributes>();

                        attributes = cs1.iterator();
                        while (attributes.hasNext())
                        {
                            XmlElement         obj         = doc.CreateElement("Attributes");
                            string             attrValue   = attributes.next().ToString();
                            XmlText            objValue    = doc.CreateTextNode(attrValue);
                            MetadataAttributes currentAttr = ConvertStringMetadataAttribute(attrValue);
                            attributesList.Add(currentAttr);
                            obj.AppendChild(objValue);
                            ee.AppendChild(obj);
                        }
                        root.AppendChild(ee);
                        elementaryEvent.MetadataAttributes = attributesList;
                        ElementaryEvents.Add(elementaryEvent);
                    }
                }
            }
            doc.AppendChild(root);
            doc.InsertBefore(xmldecl, root);

            doc.Save(BaseUri + @"Results\Elementary Event Candidates\EEC1.xml");
            //Console.WriteLine(doc.OuterXml);
            StringBuilder sb = new StringBuilder();
            TextWriter    tr = new StringWriter(sb);
            XmlTextWriter wr = new XmlTextWriter(tr);

            wr.Formatting = Formatting.Indented;
            doc.Save(wr);
            wr.Close();
        }
 /// <summary>
 /// Converts collection to comparable collection with equals/hashCode/toString implementations.
 /// </summary>
 /// <typeparam name="T">Type of collection</typeparam>
 /// <param name="source">this</param>
 /// <returns>Comparable collection</returns>
 public static ISet <T> ToComparable <T>(this ISet <T> source)
 {
     Preconditions.IsNotNull(source, () => new ArgumentNullException("source"));
     return(ComparableSet <T> .Of(source));
 }