Add Generator
Python Code
This commit is contained in:
104
Generateur/Read.py
Normal file
104
Generateur/Read.py
Normal file
@@ -0,0 +1,104 @@
|
||||
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
|
||||
Reference in New Issue
Block a user