Compare commits

...

4 Commits

Author SHA1 Message Date
Jan Wild e34431e810
csv schreiben und lesen 2024-12-14 16:42:54 +01:00
Jan Wild fe4f8e295b
Merge remote-tracking branch 'origin/master'
# Conflicts:
#	.idea/editor.xml
#	.idea/misc.xml
2024-12-14 14:50:22 +01:00
Jan Wild c1195de54b
kein plan clions wills so 2024-12-14 14:49:58 +01:00
Jan Wild e97cd55e28
remove the sql coode 2024-12-13 22:56:16 +01:00
1 changed files with 111 additions and 6 deletions

117
src/db.c
View File

@ -1,4 +1,5 @@
/*
/* Create a database and handel it
* Created by Jan on 13.12.2024.
* INPUT: query for previous state
* linked list of tasks to store
*
@ -9,12 +10,116 @@
*
*/
/************************************************************
*Create a database and handel it
*Created by Jan on 13.12.2024.
*
************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "planner.h"
#include "list.h"
/*
write a complete linkedlist to a Event csv file.
*/
void write_linkedlist_to_csv(llist* head, const char* filename) {
//Open file with write permision
FILE* file = fopen(filename, "w");
//if there is no file or a wrong file path you becom an error
if (file == NULL) {
perror("Could not open file %s\n", filename);
}
else{
//write the file header
fprintf(file, "TaskName, Created, Deadline, Priority, Spare, EventStartTime, EventEndTime, EventSpare\n");
// Iterate through the linked list and write the data to the CSV
llist* current = head;
while (current != NULL) {
// Extract data from the current node
Event* event = (Event*)current->data; // Assumed that current->data holds an Event pointer
// Extract the associated task from the event
Task* task = event->task;
// Write the task and event data to the CSV file
fprintf(file, "%s, %lu, %lu, %d, %lu, %lu, %lu, %lu\n",
task->name,
task->created,
task->deadline,
task->priority,
task->spare,
event->plannedStartTime,
event->plannedEndTime,
event->spare);
current = current->next;
}
fclose(file); // Close the file
}
}
/*
read an event csv file and write the data in a linked list
*/
void write_csv_to_llist(const char* filename) {
//Open file with read permision
FILE* file = fopen(filename, "r");
if (file == NULL) {
perror("Could not open file %s\n", filename);
}
else{
char line[1024]; //Line Buffer
int count = 0; //task counter
llist *list = NULL
fgets(line, sizeof(line), file); //read and ignore file head
while (fgets(line, sizeof(line), file)) {
count++;
//remove newline sign
line[strcspn(line, "\n")] = '\0';
// column slice
char *taskname = strtok(line, ",");
char *tsakcreation_dateSTR = strtok(NULL, ",");
char *tsakdeadline_dateSTR = strtok(NULL, ",");
char *tsakprioritySTR = strtok(NULL, ",");
char *tsakspareSTR = strtok(NULL, ",");
char *eventStartTimeSTR = strtok(NULL, ",");
char *eventEndTimeSTR = strtok(NULL, ",");
char *eventSpareSTR = strtok(NULL, ",");
// convert char in integer and date
unsigned long int taskcreation_date = strtoul(taskcreation_dateSTR,NULL,10);
unsigned long int taskdeadline_date = strtoul(taskdeadline_dateSTR,NULL,10);
unsigned long int taskspare = strtoul(taskspareSTR,NULL,10);
unsigned long int eventStartTime = strtoul(eventStartTimeSTR,NULL,10);
unsigned long int eventEndTime = strtoul(eventEndTimeSTR,NULL,10);
unsigned long int eventSpare = strtoul(eventSpareSTR,NULL,10);
int priority = atoi(prioritySTR);
//create Task
Task *task = newTask(taskname, taskcreation_date, taskdeadline_date, taskpriority, taskspare);
//create Event
Event *event = newEvent(task,eventStartTime, eventEndTime, eventSpare);
// Insert task into the linked list
if (list == NULL) {
// If the list is empty, initialize it with the first task
list = llistNew(event, NULL);
}
else {
// Append the task to the linked list
llistAppend(list, event);
}
}
fclose(file);
}
}