104 lines
3.3 KiB
Python
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 |