/*********************************************************************/
        /// <summary>
        /// Konstruktor
        /// </summary>
        /// <param name="vertexToIdentify">Knoten der Identifiziert werden
        /// soll</param>
        public IdentificationWindow(CTreeVertex vertexToIdentify, bool bInteractiveView)
        {
            // Sichergehen das nur ein Identifikationsfenster geöffnet ist
            checkSingleIndentificationWindow();

            InitializeComponent();

            mVertexToIdentify            = vertexToIdentify;
            mTableEntryList              = mBusinessLogic.getFilterdTableData(mVertexToIdentify);
            filteredDataGrid.DataContext = this;

            // die Spalten der Tabelle hinzufügen, abhängig von den Verwendeten Typen
            List <CAttributeType> attrTypeList = mBusinessLogic.getAttributeTypes();

            foreach (CAttributeType type in attrTypeList)
            {
                if (type.Used == true)
                {
                    DataGridTextColumn column = new CTableColumn(type);
                    filteredDataGrid.Columns.Add(column);
                }
            }

            highlightSelectedAttributeColumn();

            // Nur für die Interaktive Ansicht soll der Button eingeblendet werden
            showButtonBar(bInteractiveView);
        }
Esempio n. 2
0
        /*********************************************************************/
        /// <summary>
        /// Konstruktor, Initialisierung der Komponenten
        /// </summary>
        public MainWindow()
        {
            InitializeComponent();
            mBusinessLogic = CBusinessLogic.getInstance();
            mBusinessLogic.init();
            mBusinessLogic.registerWindow(this);

            mTableEntryList = mBusinessLogic.getAllTableData();

            graph.DataContext = this;
            mGraph = mBusinessLogic.getGraph();
            
                
            GraphSharp.Algorithms.Layout.Simple.Tree.SimpleTreeLayoutParameters layoutParameter = new GraphSharp.Algorithms.Layout.Simple.Tree.SimpleTreeLayoutParameters();
            layoutParameter.LayerGap = 50;
            layoutParameter.VertexGap = 50;
            layoutParameter.Direction = LayoutDirection.TopToBottom;
                   
            LayoutAlgorithmType = "LinLog";
            graph.LayoutParameters = layoutParameter;
               
            DataContext = this;

            setTreeViewsEnabled(false);
            setViewVisibility(E_VIEW.E_TABLE_VIEW);
        }
Esempio n. 3
0
        /*********************************************************************/
        /// <summary>
        /// Ließt alle Einträge der Tabelle aus und gibt diese zurück
        /// !!Zurzeit TestDATA!!!
        /// </summary>
        /// <returns>Liste mit allen Tabelleneinträgen</returns>
        public CTableEntryList getAllEntries()
        {
            CTableEntryList entryList = new CTableEntryList();

            #region Engin Test

            /*// Fake Daten um die GUI provisorisch zu testen //
             * // BEGIN //
             * //Attributetypen erstellen
             * //CAttributeType attribute1 = new CAttributeType("erstesAttribute", E_DATATYPE.E_STRING, false);
             * //CAttributeType attribute2 = new CAttributeType("2tes Attribute", E_DATATYPE.E_FLOAT, true);
             *
             * CAttributeType attribute1 = new CAttributeType(CTableConstants.ATTR_X + "1");
             * CAttributeType attribute2 = new CAttributeType(CTableConstants.ATTR_X + "2");
             * attribute1.setUsed("erstesAttribute", E_DATATYPE.E_STRING, false);
             * attribute2.setUsed("2tes Attribute", E_DATATYPE.E_FLOAT, true);
             *
             * //AttributeValues erstellen
             *
             * CAttributeValue value1 = new CAttributeValue(attribute1, "index", "value");
             * CAttributeValue value2 = new CAttributeValue(attribute2, "index2", "1.2");
             *
             * //Entry erstellen
             *
             * CTableEntry entry1 = new CTableEntry("1");
             * entry1.addValue(value1);
             * entry1.addValue(value2);
             *
             * CTableEntry entry2 = new CTableEntry("2");
             * entry2.addValue(value1);
             * entry2.addValue(value2);
             *
             *
             * //EntryList erstellen
             *
             * entryList.Add(entry1);
             * entryList.Add(entry2);
             *
             * return entryList;
             * //**ENDE**/
            #endregion

            string sSQLCommand = "SELECT * FROM " + CTableConstants.TABLE_ATTRIBUTES;

            SQLiteDataReader reader;
            if (mConnection.sqlRequestStatement(sSQLCommand, out reader) == true)
            {
                CTableEntry tableEntry;
                while (getNextTableEntry(reader, out tableEntry) == true)
                {
                    entryList.Add(tableEntry);
                }
                closeReader(reader);
            }

            return(entryList);
        }
Esempio n. 4
0
        public void SizeTest()
        {
            CTableEntryList list = new CTableEntryList();

            for (int i = 1; i <= 10; i++)
            {
                list.addEntry(new CTableEntry(i.ToString()));
                Assert.IsTrue(list.Size == i);
            }
        }
Esempio n. 5
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);
        }
Esempio n. 6
0
        /*********************************************************************/
        /// <summary>
        /// gibt ein Liste mit Datensätzen zurück die von dem übergebenen
        /// Knoten repräsentiert werden.
        /// </summary>
        /// <param name="vertexToIdentify">Knoten der Identifiziert werden
        /// soll</param>
        /// <returns>Liste mit Datensätzen des Knotens</returns>
        public CTableEntryList getFilteredTableData(CTreeVertex vertexToIdentify)
        {
            if (vertexToIdentify == null)
            {
                return(null);
            }

            // sollte der Knoten kein Parent-Knoten haben (Root-Knoten) geben
            // wir alle Einträge zurück
            if (vertexToIdentify.ParentVertex == null)
            {
                return(getAllEntries());
            }


            string sSqlCommand = "SELECT * FROM " + CTableConstants.TABLE_ATTRIBUTES + " WHERE ";

            // Den SQL-Befehl um die Filter erweitert. Dabei wird vom zu übergebenen Knoten
            while (vertexToIdentify.ParentVertex != null)
            {
                CTreeVertex parent     = vertexToIdentify.ParentVertex;
                CTreeEdge   parentEdge = vertexToIdentify.ParentEdge;

                sSqlCommand += parent.AttributeType.InternalName;
                sSqlCommand += "=";
                sSqlCommand += "'" + parentEdge.EdgeValue + "'";


                // den Nächsten Knotne auswählen
                vertexToIdentify = parent;
                if (vertexToIdentify.ParentVertex != null)
                {
                    sSqlCommand += " AND ";
                }
            }

            SQLiteDataReader reader;
            CTableEntryList  entryList = new CTableEntryList();

            if (mConnection.sqlRequestStatement(sSqlCommand, out reader) == true)
            {
                CTableEntry tableEntry;
                while (getNextTableEntry(reader, out tableEntry) == true)
                {
                    entryList.Add(tableEntry);
                }
                closeReader(reader);
            }

            return(entryList);
        }
Esempio n. 7
0
        /*********************************************************************/
        /// <summary>
        /// Wird aufgerufen wenn eine MenuItem geklickt wird.
        /// </summary>
        /// <param name="sender">Welcher Button geklickt wurde</param>
        /// <param name="e">"irgendwelche Parameter" (Arne)</param>
        private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            // Programm Beenden Button
            if (sender == exitApplication)
            {
                Application.Current.Shutdown();
            }
            // Datei Öffnen Button
            else if (sender == openFile)
            {
                OpenFileDialog openDlg = new OpenFileDialog();
                openDlg.Filter = "CSV-Dateiein (*.csv)|*.csv";
                openDlg.Title = "Bitte wählen Sie eine CSV-Datei aus.";
                if (openDlg.ShowDialog() == true)
                {
                    this.Cursor = Cursors.Wait;

                    datagrid1.Columns.Clear();
                    List<CAttributeType> addedColumns = mBusinessLogic.openCSVFile(openDlg.FileName);
                    foreach (CAttributeType columnData in addedColumns)
                    {
                        addDatagridColumn(columnData);
                    }

                    mTableEntryList = mBusinessLogic.getAllTableData();
                    this.datagrid1.ItemsSource = mTableEntryList;
                    // http://social.msdn.microsoft.com/Forums/en/wpf/thread/1b694f75-7621-4c88-8055-6c31c601c87f

                    // wir haben eine neue Tabelle, also ist noch kein Zielattribut gesetzt 
                    // und man soll nicht auf die Baumansichten wechseln
                    setTreeViewsEnabled(false);
                    viewToggleButton_Checked(viewTableBtn, null);

                    this.Cursor = Cursors.Arrow;
                }
            }
            // Datei Speichern Button
            else if (sender == saveFile)
            {
                SaveFileDialog saveDlg = new SaveFileDialog();
                saveDlg.Filter = "CSV-Dateiein (*.csv)|*.csv";
                saveDlg.Title = "Bitte wählen Sie eine CSV-Datei unter der sie die Tabelle speichern möchten.";
                if (saveDlg.ShowDialog() == true)
                {
                    mBusinessLogic.saveCSVFile(saveDlg.FileName);
                }
            }
        }
Esempio n. 8
0
        /*********************************************************************/
        /// <summary>
        /// Schreibt den Inhalt der Datenbank in die übergebene CSV-Datei
        /// </summary>
        /// <param name="csvFile">Stream zum Schreiben in die CSV-Datei</param>
        private void writeDatabaseData(StreamWriter csvFile)
        {
            CTableEntryList entryList = mDBAccess.getAllEntries();

            if (entryList.Count > 0)
            {
                // zuerst die Namen der Spalten einfügen. Dazu vom einem Element
                string sLine = getAttributeNameLine(entryList);
                csvFile.WriteLine(sLine);

                foreach (CTableEntry entry in entryList)
                {
                    csvFile.WriteLine(getCSVLineFromEntry(entry));
                }
            }
        }
Esempio n. 9
0
        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");
        }
Esempio n. 10
0
        private void updateVertexClassCount(CTreeVertex vertex, Logic.CTableLogic tableLogic)
        {
            CTableEntryList entryList       = tableLogic.getFilteredTableData(vertex);
            CAttributeType  targetAttribute = getTargetAttribute(tableLogic);

            int[] counts = new int[2];
            counts[CTreeVertex.YES_INDEX] = 0;
            counts[CTreeVertex.NO_INDEX]  = 0;

            if (targetAttribute != null)
            {
                bool bFirst = true;
                int  targetAttributeIndex = 0;
                foreach (CTableEntry entry in entryList)
                {
                    if (bFirst == true)
                    {
                        for (int i = 0; i < entry.Size; i++)
                        {
                            if (entry[i].AttributeType.InternalName == targetAttribute.InternalName)
                            {
                                targetAttributeIndex = i;
                            }
                        }
                        bFirst = false;
                    }

                    // TODO Bei Zielattr nicht nur Binär Verzweigen
                    if (entry[targetAttributeIndex].TableValue == "j")
                    {
                        counts[CTreeVertex.YES_INDEX]++;
                    }
                    else if (entry[targetAttributeIndex].TableValue == "n")
                    {
                        counts[CTreeVertex.NO_INDEX]++;
                    }
                }
            }

            vertex.CountObjectsPerClass = counts;
        }
Esempio n. 11
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");
        }
Esempio n. 12
0
        public void testReadFile()
        {
            string exePath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
            string csvFile = exePath + TEST_CSV_FILE_PATH;

            IDBDataReader dbAccess  = new CDBDataReader();
            CCSVReader    csvReader = new CCSVReader(dbAccess);

            csvReader.insertFileDataToDatabase(csvFile);

            CTableEntryList entrys = dbAccess.getAllEntries();

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

            Assert.IsTrue(entrys[0][0].TableValue == "1");
            Assert.IsTrue(entrys[0][1].TableValue == "2");
            Assert.IsTrue(entrys[0][3].TableValue == "4");

            Assert.IsTrue(entrys[4][0].TableValue == "5");

            Assert.IsTrue(entrys[7][0].TableValue == "8");
            Assert.IsTrue(entrys[7][3].TableValue == "11");
        }
Esempio n. 13
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);
        }
Esempio n. 14
0
        public void CTableEntryListConstructorTest()
        {
            CTableEntryList target = new CTableEntryList();

            Assert.IsTrue(target.Size == 0);
        }