Example #1
0
        /*********************************************************************/
        /// <summary>
        /// fügt neuen leeren Datensatz in die Datenbak ein und gibt diesen zurück
        /// </summary>
        /// <returns>leerer Datenbankeintrag</returns>
        public CTableEntry insertEntry()
        {
            // Return wert
            CTableEntry tableEntry = null;

            // Neuen Eintrag in die Datenbank eintragen
            string sSQLCommand = "INSERT INTO " + CTableConstants.TABLE_ATTRIBUTES + " (id) VALUES(NULL)";

            mConnection.sqlExecuteStatement(sSQLCommand);

            // wie holen die zuletzt in die Tabelle eingefügten Eintrag
            sSQLCommand = "SELECT *  FROM DataTable ORDER BY id DESC LIMIT 1";
            SQLiteDataReader reader;

            //sendet den Request ab und  packt die Zeile in den Reader
            mConnection.sqlRequestStatement(sSQLCommand, out reader);
            {
                getNextTableEntry(reader, out tableEntry);
            }

            // den Reader schließen
            closeReader(reader);

            // und den Eintrag zurückgeben
            return(tableEntry);
        }
Example #2
0
        /*********************************************************************/
        /// <summary>
        /// Ließt aus dem Reader den nächsten TableEntry aus.
        /// </summary>
        /// <param name="reader">Reader der den Zugriff auf den Datensatz bietet</param>
        /// <param name="tableEntry">ausgelesener Datensatz</param>
        /// <returns>Erfolg des Auslesens</returns>
        /// <remarks>Am besten mit einer Schleife aufrufen, bis die Methode false zurückliefert.
        /// Außerdem muss sichergestellt sein dass das ID Attribut mit ausgelesen wurde</remarks>
        protected bool getNextTableEntry(SQLiteDataReader reader, out CTableEntry tableEntry)
        {
            tableEntry = null;
            if (reader.Read() == true)
            {
                //für jede Spalte arbeite er jedes element einzeln ab
                for (int field = 0; field < reader.FieldCount; field++)
                {
                    switch (field)
                    {
                    case 0:
                        tableEntry = new CTableEntry(reader[field].ToString());
                        break;

                    default:
                        //if (mAttributeTypeList[field - 1].Used == true)
                    {
                        tableEntry.addValue(new CAttributeValue(mAttributeTypeList[field - 1], tableEntry.Index, reader[field].ToString(), this));
                    }
                        // die Normalen Attribute
                        break;
                    }
                }
                return(true);
            }
            return(false);
        }
Example #3
0
        public void addEntryTest()
        {
            CTableEntryList list = new CTableEntryList();

            for (int i = 0; i < 10; i++)
            {
                CTableEntry entry = new CTableEntry(i.ToString());
                list.addEntry(entry);
            }

            Assert.IsTrue(list.Size == 10);
        }
        public void testWriteFile()
        {
            IDBDataReader dbAccess = new CDBDataReader();

            dbAccess.clearDatabase();
            dbAccess.addColumn("Col1");
            dbAccess.addColumn("Col2");

            CTableEntry entry = dbAccess.insertEntry();

            entry[0].TableValue = "entry1";
            entry[1].TableValue = "0.01";

            entry = dbAccess.insertEntry();
            entry[0].TableValue = "entry2";
            entry[1].TableValue = "0.02";

            entry = dbAccess.insertEntry();
            entry[0].TableValue = "entry3";
            entry[1].TableValue = "0.03";

            CCSVWriter csvWriter = new CCSVWriter(dbAccess);

            string exePath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
            string csvFile = exePath + TEST_CSV_FILE_PATH;

            File.Delete(csvFile);
            csvWriter.saveDatabaseToCSV(csvFile);

            // zum prüfen braucen wir den Reader
            CCSVReader csvReader = new CCSVReader(dbAccess);

            csvReader.insertFileDataToDatabase(csvFile);

            CTableEntryList entrys = dbAccess.getAllEntries();

            Assert.IsTrue(entrys.Count == 3);

            Assert.IsTrue(entrys[0][0].TableValue == "entry1");
            Assert.IsTrue(entrys[0][1].TableValue == "0.01");

            Assert.IsTrue(entrys[1][0].TableValue == "entry2");
            Assert.IsTrue(entrys[1][1].TableValue == "0.02");

            Assert.IsTrue(entrys[2][0].TableValue == "entry3");
            Assert.IsTrue(entrys[2][1].TableValue == "0.03");
        }
Example #5
0
        /*********************************************************************/
        /// <summary>
        /// Füllt die Datenbank mit Werten aus der CSV-Datei
        /// </summary>
        /// <param name="reader">Reader zum Auslesen der Datensätze</param>
        protected void fillDatabase(StreamReader reader)
        {
            string sLine = "";

            while (readNextLine(reader, ref sLine) == true)
            {
                string[]    attrbiuteNames = sLine.Split(CSV_SEPERATOR);
                CTableEntry entry          = mDBAccess.insertEntry();

                // da wir gerade einen Leeren Eintrag erstellt haben und von einer leeren Datenbank
                // ausgegangen sind. Können wir die Werte genau den Attributen zuordnen.
                // Das ist schon ziemlich gehackt, aber es funktioniert.
                for (int attributeIndex = 0; attributeIndex < attrbiuteNames.Length; attributeIndex++)
                {
                    // zur Sicherheit lesen wir nur die Maximalanzahl an Attributen aus
                    if (attributeIndex <= CTableConstants.MAX_ATTRIBUTE_COUNT)
                    {
                        entry[attributeIndex].TableValue = attrbiuteNames[attributeIndex];
                    }
                }
            }
        }
Example #6
0
        public void ItemTestIndex()
        {
            CTableEntryList list     = new CTableEntryList();
            CAttributeType  attrType = new CAttributeType(0);

            attrType.setUsed("asd", E_DATATYPE.E_STRING, false);

            for (int i = 0; i < 10; i++)
            {
                CTableEntry entry = new CTableEntry(i.ToString());
                entry.addValue(new CAttributeValue(attrType, i.ToString(), i.ToString(), null));
                list.addEntry(entry);
            }

            CTableEntry singleEntry;

            singleEntry = list[5];

            Assert.IsTrue(singleEntry.Size == 1);
            Assert.IsTrue(singleEntry[0].EntryIndex == "5");
            Assert.IsTrue(singleEntry[0].StringValue == "5");
        }
Example #7
0
        /*********************************************************************/
        /// <summary>
        /// Baut den CSV-String für einen Tabellen-Eintrag zusammen
        /// </summary>
        /// <param name="entry">Entry für den die Zeile zusammengestellt werden soll</param>
        /// <returns>fertige Zeile</returns>
        protected string getCSVLineFromEntry(CTableEntry entry)
        {
            string sLine          = "";
            bool   bSkipSeperator = true;

            foreach (CAttributeValue value in entry)
            {
                // wir tragen nur Attribute ein die benutzt werden
                if (value.AttributeType.Used == true)
                {
                    // beim ersten mal kein ';' vor den Eintrag schreiben
                    if (bSkipSeperator == false)
                    {
                        sLine += CCSVReader.CSV_SEPERATOR;
                    }
                    bSkipSeperator = false;

                    sLine += value.TableValue;
                }
            }

            return(sLine);
        }
Example #8
0
        /*********************************************************************/
        /// <summary>
        /// Baut die Zeile mit den Attributnamen zusammen, damit diese in die
        /// CSV-Datei eingefügt werden kann.
        /// </summary>
        /// <param name="entryList">Liste mit allen Einträgen</param>
        /// <returns>fertige Zeile zum einfügen in die CSV-Datei</returns>
        private string getAttributeNameLine(CTableEntryList entryList)
        {
            string      sLine      = "";
            CTableEntry firstEntry = entryList[0];

            bool bSkipSeperator = true;

            foreach (CAttributeValue value in firstEntry)
            {
                // wir tragen nur Attribute ein die benutzt werden
                if (value.AttributeType.Used == true)
                {
                    if (bSkipSeperator == false)
                    {
                        sLine += CCSVReader.CSV_SEPERATOR;
                    }
                    bSkipSeperator = false;

                    // den Namen eintragen
                    sLine += value.AttributeType.Name;
                }
            }
            return(sLine);
        }
Example #9
0
        /*********************************************************************/
        /// <summary>
        /// Löscht einen Eintrag aus der Datenbank
        /// </summary>
        /// <param name="entry">Zu Löschender Eintrag</param>
        /// <returns>Erfolg des Löschens</returns>
        public bool removeEntry(CTableEntry entry)
        {
            string sSQLCommand = "DELETE FROM " + CTableConstants.TABLE_ATTRIBUTES + " WHERE id='" + entry.Index + "'";

            return(mConnection.sqlExecuteStatement(sSQLCommand));
        }
Example #10
0
 /*********************************************************************/
 /// <summary>
 /// Löscht einen Datensatz aus der Datenbank
 /// </summary>
 /// <param name="entry">Zu Löschender Datensatz</param>
 /// <returns>Erfolg des Löschens</returns>
 public bool removeDataset(CTableEntry entry)
 {
     return(mDBAccess.removeEntry(entry));
 }
Example #11
0
 /*********************************************************************/
 /// <summary>
 /// Löscht einen Datensatz aus der Datenbank
 /// </summary>
 /// <param name="entry">Zu Löschender Datensatz</param>
 /// <returns>Erfolg des Löschens</returns>
 public bool removeDataset(CTableEntry entry)
 {
     return(mTableLogic.removeDataset(entry));
 }
 public void test()
 {
     CTableEntry entry = new CTableEntry("");
 }
        /*********************************************************************/
        /// <summary>
        /// Wird aufgrufen wenn ein Button von der Tabellenansicht geklickt wurde
        /// </summary>
        private void RibbonButtonTableView_Click(object sender, RoutedEventArgs e)
        {
            // Spalte hinzufügen Button
            if (sender.Equals(btnAddColumn) == true)
            {
                string name = Microsoft.VisualBasic.Interaction.InputBox("Geben Sie den Namen des Attributs ein", "Attributname", "");
                if (!name.Equals(""))
                {
                    CAttributeType columnData = mBusinessLogic.addAttribute(name);
                    addDatagridColumn(columnData);
                }
            }
            // selektierte Spalte löschen Button
            else if (sender.Equals(btnRemoveColumn) == true)
            {
                if (datagrid1.CurrentColumn != null)
                {
                    DataGridColumn column = datagrid1.CurrentColumn;
                    if (mBusinessLogic.removeAttribute((string)column.Header) == true)
                    {
                        datagrid1.Columns.Remove(column);
                    }
                }
            }
            // Neue Zeile hinzufügen
            else if (sender.Equals(btnAddRow) == true)
            {
                mTableEntryList.addEntry(mBusinessLogic.addDataset());
            }
            // Selektierte Zeile Löschen
            else if (sender.Equals(btnRemoveRow) == true)
            {
                if (datagrid1.SelectedItem != null)
                {
                    CTableEntry selectedEntry = (CTableEntry)datagrid1.SelectedItem;
                    if (mBusinessLogic.removeDataset(selectedEntry) == true)
                    {
                        mTableEntryList.Remove(selectedEntry);
                    }
                }
            }
            // Selektierte Zeile als Zielattribut setzen
            else if (sender.Equals(btnSetTargetAttribute) == true)
            {
                CTableColumn selectedColumn = datagrid1.CurrentColumn as CTableColumn;
                if (selectedColumn != null)
                {
                    if (mBusinessLogic.setTargetAttribute(selectedColumn.ColumnDataType) == true)
                    {
                        foreach (CTableColumn column in datagrid1.Columns)
                        {
                            //column.HeaderStyle = FindResource("DefaultColumnHeaderStyle") as Style;
                            column.HeaderStyle = null;
                        }

                        selectedColumn.HeaderStyle = FindResource("TargetValueColumnHeaderStyle") as Style;
                        CTableEntry entry = (CTableEntry)datagrid1.CurrentItem;

                        setTreeViewsEnabled(true);
                    }
                    else
                    {
                        MessageBox.Show("Das Attribut \"" + selectedColumn.ColumnDataType.Name + "\" kann nicht als Zielattribut gesetzt werden, da nur Datensätze mit den Einträgen \"j\" und \"n\" zugelassen sind.", "Ungültiges Zielattribut", MessageBoxButton.OK, MessageBoxImage.Warning);
                    }
                }
            }
        }