#!/usr/bin/python3
import json #Βιβλιοθήκη για διαχείριση JSON δεσομένων

class Vehicle:
	#Ο καρασκευαστής της κλάσης (αρχικοποιεί τα αντικείμενα)
	def __init__(self,name,engine,price):
		self.name=name
		self.engine=engine
		self.price=price

	#Μέθοδος που μετατρέπει το αντικείμενο σε μορφή JSON string
	def to_json(self):
		#Το __dict__ περιέχει όλες τις ιδιότητες του αντικειμένου σε λεξικό
		return json.dumps(self.__dict__)

def create_dummy_file():
	"""Φτιάχνει το αρχείο veh.dat με δεδομένα για να εχουμε να διαβάσουμε."""
	data=[
		'{"name": "Toyota Rav4","engine": "2.5L", "price": 32000}'
		'{"name": "Toyota Auris","engine": "1.4L","price": 12000}'
		'{"name": "Opel Vectra", "engine": "1.6L","price": 19000}'
	]

	#Ανοίγουμε το αρχείο για ΕΓΓΡΑΦΗ ('w' = write)
	with open("veh.dat","w") as f:
		for line in data:
			f.write(line + "\n") #Γράφουμε κάθε γραμμή και αλλάζουμε σειρά 
	print("Το αρχείο veh.dat δημιουργήθηκε αυτόματα.")

def main():
	# 1. Δημιουργούμε το αρχείο δεδομένων
	create_dummy_file()

	# 2. Παράδειγμα δημιουργίας ενός αντικειμένου και εκτύπωσης του
	my_car = Vehicle("Fiat Punto", "1.2L", 5000)
	print(f"\nΈνα όχημα σε JSON μορφή: {my_car.to_json()}")

	print("\n--- Ανάγνωση από το αρχείο veh.dat ---")
	vehicles_list=[] # Λίστα για να αποθηκεύσουμε τα όχηματα

	try:
		#Ανοίγουμε το αρχείο για ΑΝΑΓΝΩΣΗ ('r'=read)
		with open("veh.dat","r") as f:
			for line in f:
				#Μετατροπή της γραμμής από JSON string σε λεξικό Python
				data_dict=json.loads(line)

				#Δημιουργία νέου αντικειμένου Vehicle με τα δεδομένα του λεξικού
				#d['name'] σημαίνει πάρε την τιμή από κλειδί 'name'
				obj=Vehicle(data_dict['name'],data_dict['engine'],data_dict['price'])

				#Προσθήκη στη λίστα
				vehicle_list.append(obj)

			#Εμφάνιση των αποτελεσμάτων
			for v in vehicles_list:
				print(f"Όνομα: {v.name} | Τιμή: {v.price} Ευρώ")

	except FileNotFoundError:
		print("Το αρχείο δεν βρέθηκε.")

if __name__=="__main__":
	main()
