Compare commits
No commits in common. "e34431e810c4d4a6efcc710d9dbe3ffe61294a5b" and "8c695e4eb78c7a2783a1f53f72e924c6abe393bb" have entirely different histories.
e34431e810
...
8c695e4eb7
117
src/db.c
117
src/db.c
@ -1,5 +1,4 @@
|
|||||||
/* Create a database and handel it
|
/*
|
||||||
* Created by Jan on 13.12.2024.
|
|
||||||
* INPUT: query for previous state
|
* INPUT: query for previous state
|
||||||
* linked list of tasks to store
|
* linked list of tasks to store
|
||||||
*
|
*
|
||||||
@ -10,116 +9,12 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/************************************************************
|
||||||
|
*Create a database and handel it
|
||||||
|
*Created by Jan on 13.12.2024.
|
||||||
|
*
|
||||||
|
************************************************************/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include "planner.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);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user