# PLEASE DO NOT EDIT THIS CODE
# This code was generated using the UMPLE @UMPLE_VERSION@ modeling language!
# NOTE: Ruby generator is experimental and is missing some features available in
# in other Umple generated languages like Java or PHP

module Example

class Student


  #------------------------
  # MEMBER VARIABLES
  #------------------------

  #Student Attributes - for documentation purposes
  #attr_reader :id, :name, :type, :roles, :injBool

  #------------------------
  # CONSTRUCTOR
  #------------------------

  def initialize(a_name, a_injBool)
    @initialized = false
    @deleted = false
    print "before constructor";
    @id = nil
    @can_set_id = true
    @name = a_name
    reset_type
    @roles = []
    @injBool = a_injBool
    print "after constructor";
    @initialized = true
  end

  #------------------------
  # INTERFACE
  #------------------------

  def set_id(a_id)
    was_set = false
    print "start setId";
    return false unless @can_set_id
    @can_set_id = false
    @id = a_id
    was_set = true
    print "end setId";
    was_set
  end

  def set_name(a_name)
    was_set = false
    print "start setName";
    print "start setName2";
    @name = a_name
    was_set = true
    print "end setName";
    was_set
  end

  def set_type(a_type)
    was_set = false
    print "start setType";
    @type = a_type
    was_set = true
    print "end setType";
    was_set
  end

  def reset_type
    wasReset = false
    print "start resetType";
    @type = get_default_type
    wasReset = true
    print "end resetType";
    wasReset
  end

  def add_role(a_role)
    was_added = false
    print "start add";
    was_added = roles << a_role
    print "end add";
    was_added
  end

  def remove_role(a_role)
    was_removed = false
    print "start remove";
    was_removed = roles.delete(a_role)
    print "end remove";
    was_removed
  end

  def set_injBool(a_injBool)
    was_set = false
    @injBool = a_injBool
    was_set = true
    was_set
  end

  def get_id
    print "start getId";
    a_id = @id
    print "end getId";
    a_id
  end

  def get_name
    print "start getName";
    a_name = @name
    print "end getName";
    a_name
  end

  def get_type
    print "start getType";
    a_type = @type
    print "end getType";
    a_type
  end

  def get_default_type
    print "start getDefaultType";
    a_type = "None"
    print "end getDefaultType";
    a_type
  end

  def get_role(index)
    print "start getRole";
    a_role = roles[index]
    print "end getRole";
    a_role
  end

  def get_roles
    print "start getRoles";
    String[] new_roles = roles.toArray(new String[roles.size])
    print "end getRoles";
    new_roles
  end

  def number_of_roles
    print "start numberOfRoles";
    number = roles.size
    print "end numberOfRoles";
    number;
  end

  def has_roles
    has = roles.size > 0
    has
  end

  def index_of_role(a_role)
    print "start indexOfRole";
    index = roles.index(a_role)
    index = -1 if index.nil?
    print "end indexOfRole";
    index
  end

  def get_funName
    print "start funName";
    a_funName = name + "sillypans"
    print "end funName";
    a_funName
  end

  def get_otherFunName
    print "This was so much fun";
    name + "Other Fun"
  end

  def get_injBool
    @injBool
  end

  def get_dInjBool
    2/3
  end

  def is_injBool?
    print "before injBool";
    a_injBool = @injBool
    print "after injBool";
    a_injBool
  end

  def is_dInjBool?
    print "before dInjBool";
    a_dInjBool = 2/3
    print "after dInjBool";
    a_dInjBool
  end

  def delete
    @deleted = true
    print "start delete";
    print "after delete";
  end

  def foo (a)
    System.out.println("This is great " + " I will return to this");
    if(a == 3)      
      // line 60 "TestingTest.ump"
      print "Such fun!"
      // END OF UMPLE AFTER INJECTION
      return "4";
    //Testing inline return
    
    // inject before return    
    // line 60 "TestingTest.ump"
    print "Such fun!"
    // END OF UMPLE AFTER INJECTION
    return "";

  end



end
