import cog
import property_handlers
import jsonpickle

def generate_element(schema_path):
    file_path = schema_path
    schema = ''
    
    with open(file_path, 'r') as file:
        file_content = file.read()
        schema = jsonpickle.decode(file_content)

    cog.outl("# GENERATED SECTION, DO NOT HAND EDIT")

    property_handlers.generate_class(schema)

    property_handlers.generate_init(schema, property_handlers.extract_superclass(schema))
    
    cog.outl("")
    
    cog.outl("# [ Data Getter / Setter ]")

    for property in schema['properties']:
        property_handlers.generate_getters_setters(property, schema['properties'][property])

    cog.outl("")
    cog.outl("# [ Public Properties ]")

    for property in schema['properties']:
        property_handlers.generate_properties(property, schema['properties'][property])

    cog.outl("")
    cog.outl("# [ Backing Properties ]")

    for property in schema['properties']:
        property_handlers.generate_private_members(property, schema['properties'][property])

    cog.outl("# END GENERATED SECTION")