/*********************************************************************/ /// <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); }
/*********************************************************************/ /// <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); }
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(); }
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); }