コード例 #1
0
ファイル: CTreeLogic.cs プロジェクト: Kr4w4r/decisiontree-hwr
        /*********************************************************************/
        /// <summary>
        /// Setzt für einen Vertex das Attribut welches dieser Repräsentiert
        /// </summary>
        /// <param name="vertex">Vertex dessen Attribut geändert werden soll</param>
        /// <param name="attributeType">neues Attribut des Vertex</param>
        internal bool setVertexAttribute(CTreeVertex vertex, CAttributeType attributeType)
        {
            // sollte das Attribut bereits von einem Parent-Knoten verwendet werden
            // darf der Benutzer dieser Attribut nicht verwenden
            if (isAttributeUsedByParent(vertex, attributeType) == true)
            {
                return(false);
            }

            // wenn das Attribut bereits das ist welches der Vertex repräsentiert,
            // müssen wir nichts machen.
            if (vertex.AttributeType != attributeType)
            {
                mTreeHandler.removeChildVertices(vertex);

                // Attribut des Vertex setzen
                vertex.AttributeType = attributeType;

                if (vertex.AttributeType != null)
                {
                    // TODO Kindknoten erzeugen und Verbindungen anlegen:

                    //diskreter Wert (Splitwerte zurzeit nicht verfügbar -> ||true)
                    if (attributeType.DataType.Equals(E_DATATYPE.E_STRING) || true)
                    {
                        //alte Children löschen
                        mTreeHandler.removeChildVertices(vertex);

                        //Werte für die Kindknoten erhalten
                        CValueList childVertices = mTableLogic.getChildVertices(vertex);

                        //Knoten und Verbindungen hinzufügen
                        foreach (CAttributeValue value in childVertices)
                        {
                            CTreeVertex childVertex = addVertex(vertex, null);
                            childVertex.ParentEdge = addEdge(vertex, childVertex, value);
                        }
                    }
                    else //stetiger Wert
                    {
                        //Splitwert abfragen
                        //Datenbankabfrage, GROUP BY?
                        //
                    }
                }
                return(true);
            }
            return(false);
        }