Пример #1
0
        /*********************************************************************/
        /// <summary>
        /// gibt ein Liste mit Childknoten zurück, die vom übergebenen
        /// Vertex ausgehen
        /// </summary>
        /// <param name="vertexToIdentify">Knoten der Identifiziert werden
        /// soll</param>
        /// <returns>Liste mit Childknoten</returns>
        public CValueList getDataforChildVertices(CTreeVertex vertexToIdentify)
        {
            if (vertexToIdentify == null)
            {
                return(null);
            }

            string sSqlCommand = "SELECT DISTINCT " + vertexToIdentify.AttributeType.InternalName + " FROM " + CTableConstants.TABLE_ATTRIBUTES;


            SQLiteDataReader reader;
            CValueList       entryList = new CValueList();

            if (mConnection.sqlRequestStatement(sSqlCommand, out reader) == true)
            {
                CTableEntry tableEntry;
                while (getNextTableEntry(reader, out tableEntry) == true)
                {
                    entryList.addValue(new CAttributeValue(vertexToIdentify.AttributeType, "2", tableEntry.Index));
                }
                closeReader(reader);
            }

            return(entryList);
        }
Пример #2
0
        /*********************************************************************/
        /// <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);
        }
Пример #3
0
        public void testValuesList()
        {
            CValueList valueList = new CValueList();

            CAttributeType typeNumber = new CAttributeType(0);

            typeNumber.setUsed("Number", E_DATATYPE.E_INT, false);
            CAttributeType typeString = new CAttributeType(0);

            typeString.setUsed("String", E_DATATYPE.E_STRING, false);
            CAttributeType typeFloat = new CAttributeType(0);

            typeFloat.setUsed("Float", E_DATATYPE.E_FLOAT, false);

            // Attributwerte mit unterschiedlichen Typen erstellen und in die Liste einfügen
            for (int i = 0; i < 10; i++)
            {
                switch (i % 2)
                {
                case 0:
                    valueList.addValue(new CAttributeValue(typeString, i.ToString(), i.ToString(), null));
                    break;

                case 1:
                    valueList.addValue(new CAttributeValue(typeNumber, i.ToString(), i.ToString(), null));
                    break;

                case 2:
                    valueList.addValue(new CAttributeValue(typeFloat, i.ToString(), i.ToString(), null));
                    break;
                }
            }

            Assert.IsTrue(valueList.Size == 10);

            // Zugriff per foreach auf Elemente der Liste
            foreach (CAttributeValue value in valueList)
            {
                value.ToString();
            }

            // Zugriff per Index auf ein Element
            valueList[0].ToString();
        }
Пример #4
0
        private bool isValidTargetAttribut(CAttributeType type)
        {
            bool   bRet        = true;
            string sSqlCommand = "SELECT DISTINCT " + type.InternalName + " FROM " + CTableConstants.TABLE_ATTRIBUTES;

            SQLiteDataReader reader;
            CValueList       entryList = new CValueList();

            if (mConnection.sqlRequestStatement(sSqlCommand, out reader) == true)
            {
                while (reader.Read() == true)
                {
                    string sValue = reader[0] as string;
                    if ((sValue != "j") && (sValue != "n"))
                    {
                        bRet = false;
                    }
                }

                closeReader(reader);
            }

            return(bRet);
        }