Files
bmo_projet/Generateur/Read.py
Minh VU 81fbe645ac Add Generator
Python Code
2024-03-22 21:02:33 +01:00

104 lines
3.3 KiB
Python

import os
import re
#
inside_class = False
file_class = None
read = False
#Make folder to run test
path='class'
file_uml = open("DotUML.txt","r")
content= file_uml.readlines()
if not os.path.exists(path):
os.mkdir(path)
def check_file(path_file):
return os.path.exists(path_file)
def modify(filepath, from_, to_):
file = open(filepath,"r+")
text = file.read()
pattern = from_
splitted_text = re.split(pattern,text)
modified_text = to_.join(splitted_text)
with open(filepath,'r+') as file:
file.write(modified_text)
#Couper le fichier ligne par ligne
for line in content:
#skip first line
if "ClassDiagram" in line:
continue
#print(line)
split_line=line.split()
read=False
#Coupe la ligne par des morcreaux
print(split_line)
print(len(split_line))
#Check if it is a blank line
if ( len(split_line)==0):
continue
else:
# check "class X {" line
if split_line[0]=='class' and len(split_line)==3 and split_line[2]=='{':
class_name = split_line[1]
class_java = class_name + '.java'
read = True
# Check if the Java file already exists
if check_file(class_java):
print(f"File {class_java} already exists.")
else:
# Create the Java file
file_class=open(class_java,'x')
file_class.write(f"public class {class_name} {{\n")
inside_class = True
#Check type of variables
while (inside_class==True and read== False):
file_class.write("\n")
if(len(split_line)==3 and split_line[1]==":"):
name_var =split_line[0]
if (split_line[2]=="boolean"):
type_var="Boolean"
elif (split_line[2]=="int"):
type_var="Integer"
file_class.write("\t @Id \n")
elif (split_line[2]=="void"):
type_var="void"
file_class.write("\t @Column \n")
file_class.write(f"\t private {type_var} {name_var} \n")
read = True
if split_line[0]=='}' and len(split_line)==1:
inside_class= False
read = True
file_class.write("} \n")
file_class.close()
#Check extends "X -g-> Y"
while (inside_class==False and read==False):
if(len(split_line)==3 and split_line[1]=='-g->'):
class_name = split_line[0]
class_java = class_name+'.java'
class_heritage= split_line[2]
if check_file(class_java):
"""
file_class=open(class_java,'r+')
contents=file_class.readlines()
#Check if it has line public class X
for content in contents:
if 'public class' in content:
extends= "extends "+ class_heritage +" { \n"
content= content.replace('', 'public class X for Z')
file_class.write(content)
file_class.close()
break
"""
class_declaration= 'public class ' + class_name
modify(class_java,class_declaration,class_declaration+ " extends "+ class_heritage)
break