meibo 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/meibo/academic_session_set.rb +1 -1
- data/lib/meibo/builder.rb +4 -4
- data/lib/meibo/classroom_set.rb +3 -10
- data/lib/meibo/course_set.rb +2 -8
- data/lib/meibo/data_set.rb +5 -2
- data/lib/meibo/demographic_set.rb +1 -6
- data/lib/meibo/enrollment_set.rb +3 -10
- data/lib/meibo/factory_bot/all.rb +1 -1
- data/lib/meibo/factory_bot/{memory_package.rb → roster.rb} +1 -3
- data/lib/meibo/factory_bot/user.rb +8 -0
- data/lib/meibo/japan_profile/academic_session.rb +1 -1
- data/lib/meibo/japan_profile/classroom.rb +4 -2
- data/lib/meibo/japan_profile/course.rb +1 -1
- data/lib/meibo/japan_profile/demographic.rb +1 -1
- data/lib/meibo/japan_profile/enrollment.rb +1 -1
- data/lib/meibo/japan_profile/organization.rb +1 -1
- data/lib/meibo/japan_profile/role.rb +1 -1
- data/lib/meibo/japan_profile/user.rb +1 -1
- data/lib/meibo/japan_profile/user_set.rb +16 -0
- data/lib/meibo/japan_profile.rb +15 -17
- data/lib/meibo/organization_set.rb +1 -1
- data/lib/meibo/{base_profile.rb → profile.rb} +29 -5
- data/lib/meibo/reader.rb +1 -1
- data/lib/meibo/role_set.rb +3 -10
- data/lib/meibo/roster.rb +15 -11
- data/lib/meibo/user.rb +1 -1
- data/lib/meibo/user_profile_set.rb +1 -6
- data/lib/meibo/user_set.rb +2 -7
- data/lib/meibo/version.rb +1 -1
- metadata +5 -5
- data/lib/meibo/japan_profile/user_profile.rb +0 -7
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 21b36f34e47cc0cf3e7ec35cf14f2e0ec6e9b3ba42f12286b18b72f2d7c680fe
         | 
| 4 | 
            +
              data.tar.gz: e576cb1930c7e2df3aac74b0a3810c7cf7013f25238fbe16ab763b87f66d6046
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: de81e72cff7f4fc8817d818fe211e3d7a6e83966b20bfde5de6c579d059d122ced9a98709acf37e7e997b1b3aeea5ac7f62a29b07bc7b3d9300744ce48f3a56d
         | 
| 7 | 
            +
              data.tar.gz: 58c35c5ae0e31e6981816219fe893cc294336b6c58bb99a3c62227d77e063c86bf29c536165ccd7eaa22643db1d280ab85cf17cd511d8a9deb13e45c0f822adb
         | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/lib/meibo/builder.rb
    CHANGED
    
    | @@ -6,12 +6,12 @@ module Meibo | |
| 6 6 | 
             
              class Builder
         | 
| 7 7 | 
             
                extend Forwardable
         | 
| 8 8 |  | 
| 9 | 
            -
                attr_reader : | 
| 9 | 
            +
                attr_reader :roster, :profile
         | 
| 10 10 |  | 
| 11 | 
            -
                def_delegators :@ | 
| 11 | 
            +
                def_delegators :@roster, :academic_sessions, :classes, :courses, :demographics, :enrollments, :organizations, :roles, :users, :user_profiles
         | 
| 12 12 |  | 
| 13 | 
            -
                def initialize( | 
| 14 | 
            -
                  @ | 
| 13 | 
            +
                def initialize(roster:, profile: Profile.new)
         | 
| 14 | 
            +
                  @roster = roster
         | 
| 15 15 | 
             
                  @profile = profile
         | 
| 16 16 | 
             
                end
         | 
| 17 17 |  | 
    
        data/lib/meibo/classroom_set.rb
    CHANGED
    
    | @@ -2,26 +2,19 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            module Meibo
         | 
| 4 4 | 
             
              class ClassroomSet < DataSet
         | 
| 5 | 
            -
                def initialize(data, academic_session_set:, course_set:, organization_set:)
         | 
| 6 | 
            -
                  super(data)
         | 
| 7 | 
            -
                  @academic_session_set = academic_session_set
         | 
| 8 | 
            -
                  @course_set = course_set
         | 
| 9 | 
            -
                  @organization_set = organization_set
         | 
| 10 | 
            -
                end
         | 
| 11 | 
            -
             | 
| 12 5 | 
             
                def check_semantically_consistent
         | 
| 13 6 | 
             
                  super
         | 
| 14 7 |  | 
| 15 8 | 
             
                  each do |classroom|
         | 
| 16 | 
            -
                     | 
| 17 | 
            -
                     | 
| 9 | 
            +
                    roster.organizations.find(classroom.school_sourced_id)
         | 
| 10 | 
            +
                    roster.courses.find(classroom.course_sourced_id)
         | 
| 18 11 |  | 
| 19 12 | 
             
                    if classroom.term_sourced_ids.empty?
         | 
| 20 13 | 
             
                      raise DataNotFoundError, "termSourcedIdは1つ以上指定してください"
         | 
| 21 14 | 
             
                    end
         | 
| 22 15 |  | 
| 23 16 | 
             
                    classroom.term_sourced_ids.each do |term_sourced_id|
         | 
| 24 | 
            -
                       | 
| 17 | 
            +
                      roster.academic_sessions.find(term_sourced_id)
         | 
| 25 18 | 
             
                    end
         | 
| 26 19 | 
             
                  end
         | 
| 27 20 | 
             
                end
         | 
    
        data/lib/meibo/course_set.rb
    CHANGED
    
    | @@ -2,21 +2,15 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            module Meibo
         | 
| 4 4 | 
             
              class CourseSet < DataSet
         | 
| 5 | 
            -
                def initialize(data, academic_session_set:, organization_set:)
         | 
| 6 | 
            -
                  super(data)
         | 
| 7 | 
            -
                  @academic_session_set = academic_session_set
         | 
| 8 | 
            -
                  @organization_set = organization_set
         | 
| 9 | 
            -
                end
         | 
| 10 | 
            -
             | 
| 11 5 | 
             
                def check_semantically_consistent
         | 
| 12 6 | 
             
                  super
         | 
| 13 7 |  | 
| 14 8 | 
             
                  each do |course|
         | 
| 15 9 | 
             
                    if course.school_year_sourced_id
         | 
| 16 | 
            -
                       | 
| 10 | 
            +
                      roster.academic_sessions.find(course.school_year_sourced_id)
         | 
| 17 11 | 
             
                    end
         | 
| 18 12 |  | 
| 19 | 
            -
                     | 
| 13 | 
            +
                    roster.organizations.find(course.org_sourced_id)
         | 
| 20 14 | 
             
                  end
         | 
| 21 15 | 
             
                end
         | 
| 22 16 | 
             
              end
         | 
    
        data/lib/meibo/data_set.rb
    CHANGED
    
    | @@ -1,8 +1,11 @@ | |
| 1 1 | 
             
            module Meibo
         | 
| 2 2 | 
             
              class DataSet
         | 
| 3 | 
            -
                 | 
| 3 | 
            +
                attr_reader :roster
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                def initialize(data, roster:)
         | 
| 4 6 | 
             
                  @data = data
         | 
| 5 7 | 
             
                  @data_hash = data.to_h {|datum| [datum.sourced_id, datum] }
         | 
| 8 | 
            +
                  @roster = roster
         | 
| 6 9 | 
             
                end
         | 
| 7 10 |  | 
| 8 11 | 
             
                def <<(new_data)
         | 
| @@ -31,7 +34,7 @@ module Meibo | |
| 31 34 | 
             
                  @data.empty?
         | 
| 32 35 | 
             
                end
         | 
| 33 36 |  | 
| 34 | 
            -
                def  | 
| 37 | 
            +
                def find(sourced_id)
         | 
| 35 38 | 
             
                  @data_hash.fetch(sourced_id)
         | 
| 36 39 | 
             
                rescue KeyError
         | 
| 37 40 | 
             
                  raise DataNotFoundError, "sourcedId: #{sourced_id} が見つかりません"
         | 
| @@ -2,16 +2,11 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            module Meibo
         | 
| 4 4 | 
             
              class DemographicSet < DataSet
         | 
| 5 | 
            -
                def initialize(data, user_set:)
         | 
| 6 | 
            -
                  super(data)
         | 
| 7 | 
            -
                  @user_set = user_set
         | 
| 8 | 
            -
                end
         | 
| 9 | 
            -
             | 
| 10 5 | 
             
                def check_semantically_consistent
         | 
| 11 6 | 
             
                  super
         | 
| 12 7 |  | 
| 13 8 | 
             
                  each do |demographic|
         | 
| 14 | 
            -
                     | 
| 9 | 
            +
                    roster.users.find(demographic.sourced_id)
         | 
| 15 10 | 
             
                  end
         | 
| 16 11 | 
             
                end
         | 
| 17 12 | 
             
              end
         | 
    
        data/lib/meibo/enrollment_set.rb
    CHANGED
    
    | @@ -2,20 +2,13 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            module Meibo
         | 
| 4 4 | 
             
              class EnrollmentSet < DataSet
         | 
| 5 | 
            -
                def initialize(data, classroom_set:, organization_set:, user_set:)
         | 
| 6 | 
            -
                  super(data)
         | 
| 7 | 
            -
                  @classroom_set = classroom_set
         | 
| 8 | 
            -
                  @organization_set = organization_set
         | 
| 9 | 
            -
                  @user_set = user_set
         | 
| 10 | 
            -
                end
         | 
| 11 | 
            -
             | 
| 12 5 | 
             
                def check_semantically_consistent
         | 
| 13 6 | 
             
                  super
         | 
| 14 7 |  | 
| 15 8 | 
             
                  each do |enrollment|
         | 
| 16 | 
            -
                     | 
| 17 | 
            -
                     | 
| 18 | 
            -
                     | 
| 9 | 
            +
                    roster.classes.find(enrollment.class_sourced_id)
         | 
| 10 | 
            +
                    roster.organizations.find(enrollment.school_sourced_id)
         | 
| 11 | 
            +
                    roster.users.find(enrollment.user_sourced_id)
         | 
| 19 12 | 
             
                  end
         | 
| 20 13 | 
             
                end
         | 
| 21 14 | 
             
              end
         | 
| @@ -6,8 +6,8 @@ require 'meibo/factory_bot/course' | |
| 6 6 | 
             
            require 'meibo/factory_bot/demographic'
         | 
| 7 7 | 
             
            require 'meibo/factory_bot/enrollment'
         | 
| 8 8 | 
             
            require 'meibo/factory_bot/manifest'
         | 
| 9 | 
            -
            require 'meibo/factory_bot/memory_package'
         | 
| 10 9 | 
             
            require 'meibo/factory_bot/organization'
         | 
| 11 10 | 
             
            require 'meibo/factory_bot/role'
         | 
| 11 | 
            +
            require 'meibo/factory_bot/roster'
         | 
| 12 12 | 
             
            require 'meibo/factory_bot/user_profile'
         | 
| 13 13 | 
             
            require 'meibo/factory_bot/user'
         | 
| @@ -19,4 +19,12 @@ FactoryBot.define do | |
| 19 19 | 
             
                agent_sourced_ids { agents&.map(&:sourced_id) }
         | 
| 20 20 | 
             
                primary_org_sourced_id { primary_organization&.sourced_id }
         | 
| 21 21 | 
             
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              factory :meibo_jp_user, class: 'Meibo::JapanProfile::User', parent: :meibo_user do
         | 
| 24 | 
            +
                transient do
         | 
| 25 | 
            +
                  homeroom { nil }
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                home_class { homeroom&.sourced_id }
         | 
| 29 | 
            +
              end
         | 
| 22 30 | 
             
            end
         | 
| @@ -1,11 +1,13 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 3 | 
             
            module Meibo
         | 
| 4 | 
            -
               | 
| 4 | 
            +
              class JapanProfile < ::Meibo::Profile
         | 
| 5 5 | 
             
                class Classroom < ::Meibo::Classroom
         | 
| 6 6 | 
             
                  DataModel.define(
         | 
| 7 7 | 
             
                    self,
         | 
| 8 | 
            -
                    attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map.merge( | 
| 8 | 
            +
                    attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map.merge(
         | 
| 9 | 
            +
                      special_needs: 'metadata.jp.specialNeeds'
         | 
| 10 | 
            +
                    ).freeze,
         | 
| 9 11 | 
             
                    converters: superclass.converters.merge(
         | 
| 10 12 | 
             
                      boolean: [:special_needs].freeze,
         | 
| 11 13 | 
             
                      enum: { class_type: TYPES.values.freeze }.freeze
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Meibo
         | 
| 4 | 
            +
              class JapanProfile < ::Meibo::Profile
         | 
| 5 | 
            +
                class UserSet < ::Meibo::UserSet
         | 
| 6 | 
            +
                  def check_semantically_consistent
         | 
| 7 | 
            +
                    super
         | 
| 8 | 
            +
                    each do |user|
         | 
| 9 | 
            +
                      if user.home_class
         | 
| 10 | 
            +
                        roster.classes.find(user.home_class)
         | 
| 11 | 
            +
                      end
         | 
| 12 | 
            +
                    end
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
    
        data/lib/meibo/japan_profile.rb
    CHANGED
    
    | @@ -1,9 +1,7 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 3 | 
             
            module Meibo
         | 
| 4 | 
            -
               | 
| 5 | 
            -
                include BaseProfile
         | 
| 6 | 
            -
             | 
| 4 | 
            +
              class JapanProfile < ::Meibo::Profile
         | 
| 7 5 | 
             
                BUILDERS = {
         | 
| 8 6 | 
             
                  academic_session: Builder::AcademicSessionBuilder.create(AcademicSession),
         | 
| 9 7 | 
             
                  class: Builder::ClassroomBuilder.create(Classroom),
         | 
| @@ -17,23 +15,23 @@ module Meibo | |
| 17 15 | 
             
                }
         | 
| 18 16 |  | 
| 19 17 | 
             
                DATA_MODELS = {
         | 
| 20 | 
            -
                  file_academic_sessions:  | 
| 21 | 
            -
                  file_classes:  | 
| 22 | 
            -
                  file_courses:  | 
| 23 | 
            -
                  file_demographics:  | 
| 24 | 
            -
                  file_enrollments:  | 
| 25 | 
            -
                  file_orgs:  | 
| 26 | 
            -
                  file_roles:  | 
| 27 | 
            -
                  file_user_profiles:  | 
| 28 | 
            -
                  file_users:  | 
| 18 | 
            +
                  file_academic_sessions: AcademicSession,
         | 
| 19 | 
            +
                  file_classes: Classroom,
         | 
| 20 | 
            +
                  file_courses: Course,
         | 
| 21 | 
            +
                  file_demographics: Demographic,
         | 
| 22 | 
            +
                  file_enrollments: Enrollment,
         | 
| 23 | 
            +
                  file_orgs: Organization,
         | 
| 24 | 
            +
                  file_roles: Role,
         | 
| 25 | 
            +
                  file_user_profiles: UserProfile,
         | 
| 26 | 
            +
                  file_users: User
         | 
| 29 27 | 
             
                }
         | 
| 30 28 |  | 
| 31 | 
            -
                 | 
| 32 | 
            -
                   | 
| 33 | 
            -
                 | 
| 29 | 
            +
                DATA_SET = ::Meibo::Profile::DATA_SET.merge(
         | 
| 30 | 
            +
                  users: UserSet
         | 
| 31 | 
            +
                )
         | 
| 34 32 |  | 
| 35 | 
            -
                def  | 
| 36 | 
            -
                   | 
| 33 | 
            +
                def initialize(builders: BUILDERS, data_models: DATA_MODELS, data_set: DATA_SET)
         | 
| 34 | 
            +
                  super
         | 
| 37 35 | 
             
                end
         | 
| 38 36 | 
             
              end
         | 
| 39 37 | 
             
            end
         | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 3 | 
             
            module Meibo
         | 
| 4 | 
            -
               | 
| 4 | 
            +
              class Profile
         | 
| 5 5 | 
             
                BUILDERS = {
         | 
| 6 6 | 
             
                  academic_session: Builder::AcademicSessionBuilder.create(AcademicSession),
         | 
| 7 7 | 
             
                  class: Builder::ClassroomBuilder.create(Classroom),
         | 
| @@ -26,12 +26,36 @@ module Meibo | |
| 26 26 | 
             
                  file_users: Meibo::User
         | 
| 27 27 | 
             
                }
         | 
| 28 28 |  | 
| 29 | 
            -
                 | 
| 30 | 
            -
                   | 
| 29 | 
            +
                DATA_SET = {
         | 
| 30 | 
            +
                  academic_sessions: Meibo::AcademicSessionSet,
         | 
| 31 | 
            +
                  classes: Meibo::ClassroomSet,
         | 
| 32 | 
            +
                  courses: Meibo::CourseSet,
         | 
| 33 | 
            +
                  demographics: Meibo::DemographicSet,
         | 
| 34 | 
            +
                  enrollments: Meibo::EnrollmentSet,
         | 
| 35 | 
            +
                  orgs: Meibo::OrganizationSet,
         | 
| 36 | 
            +
                  roles: Meibo::RoleSet,
         | 
| 37 | 
            +
                  user_profiles: Meibo::UserProfileSet,
         | 
| 38 | 
            +
                  users: Meibo::UserSet
         | 
| 39 | 
            +
                }
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                attr_reader :builders, :data_models, :data_set
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                def initialize(builders: BUILDERS, data_models: DATA_MODELS, data_set: DATA_SET)
         | 
| 44 | 
            +
                  @builders = builders
         | 
| 45 | 
            +
                  @data_models = data_models
         | 
| 46 | 
            +
                  @data_set = data_set
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                def builder_for(key)
         | 
| 50 | 
            +
                  builders[key]
         | 
| 51 | 
            +
                end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                def data_model_for(file_attribute)
         | 
| 54 | 
            +
                  data_models[file_attribute]
         | 
| 31 55 | 
             
                end
         | 
| 32 56 |  | 
| 33 | 
            -
                def  | 
| 34 | 
            -
                   | 
| 57 | 
            +
                def data_set_for(name)
         | 
| 58 | 
            +
                  data_set[name]
         | 
| 35 59 | 
             
                end
         | 
| 36 60 | 
             
              end
         | 
| 37 61 | 
             
            end
         | 
    
        data/lib/meibo/reader.rb
    CHANGED
    
    
    
        data/lib/meibo/role_set.rb
    CHANGED
    
    | @@ -2,22 +2,15 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            module Meibo
         | 
| 4 4 | 
             
              class RoleSet < DataSet
         | 
| 5 | 
            -
                def initialize(data, organization_set:, user_set:, user_profile_set:)
         | 
| 6 | 
            -
                  super(data)
         | 
| 7 | 
            -
                  @organization_set = organization_set
         | 
| 8 | 
            -
                  @user_set = user_set
         | 
| 9 | 
            -
                  @user_profile_set = user_profile_set
         | 
| 10 | 
            -
                end
         | 
| 11 | 
            -
             | 
| 12 5 | 
             
                def check_semantically_consistent
         | 
| 13 6 | 
             
                  super
         | 
| 14 7 |  | 
| 15 8 | 
             
                  each do |role|
         | 
| 16 | 
            -
                     | 
| 17 | 
            -
                     | 
| 9 | 
            +
                    roster.organizations.find(role.org_sourced_id)
         | 
| 10 | 
            +
                    roster.users.find(role.user_sourced_id)
         | 
| 18 11 |  | 
| 19 12 | 
             
                    if role.user_profile_sourced_id
         | 
| 20 | 
            -
                       | 
| 13 | 
            +
                      roster.user_profiles.find(role.user_profile_sourced_id)
         | 
| 21 14 | 
             
                    end
         | 
| 22 15 | 
             
                  end
         | 
| 23 16 | 
             
                end
         | 
    
        data/lib/meibo/roster.rb
    CHANGED
    
    | @@ -6,7 +6,7 @@ require 'csv' | |
| 6 6 | 
             
            module Meibo
         | 
| 7 7 | 
             
              class Roster
         | 
| 8 8 | 
             
                class << self
         | 
| 9 | 
            -
                  def from_file(file_path, profile:  | 
| 9 | 
            +
                  def from_file(file_path, profile: Profile.new)
         | 
| 10 10 | 
             
                    Reader.open(file_path, profile: profile) do |reader|
         | 
| 11 11 | 
             
                      begin
         | 
| 12 12 | 
             
                        manifest = reader.manifest
         | 
| @@ -66,18 +66,22 @@ module Meibo | |
| 66 66 |  | 
| 67 67 | 
             
                attr_reader :profile, :manifest_properties, :academic_sessions, :classes, :courses, :demographics, :enrollments, :organizations, :roles, :user_profiles, :users
         | 
| 68 68 |  | 
| 69 | 
            -
                def initialize(profile:  | 
| 69 | 
            +
                def initialize(profile: Profile.new, manifest_properties: {}, academic_sessions: [], classes: [], courses: [], demographics: [], enrollments: [], organizations: [], roles: [], user_profiles: [], users: [])
         | 
| 70 70 | 
             
                  @profile = profile
         | 
| 71 71 | 
             
                  @manifest_properties = manifest_properties
         | 
| 72 | 
            -
                  @academic_sessions = AcademicSessionSet.new(academic_sessions)
         | 
| 73 | 
            -
                  @organizations = OrganizationSet.new(organizations)
         | 
| 74 | 
            -
                  @courses = CourseSet.new(courses,  | 
| 75 | 
            -
                  @classes = ClassroomSet.new(classes,  | 
| 76 | 
            -
                  @users = UserSet.new(users,  | 
| 77 | 
            -
                  @demographics = DemographicSet.new(demographics,  | 
| 78 | 
            -
                  @user_profiles = UserProfileSet.new(user_profiles,  | 
| 79 | 
            -
                  @roles = RoleSet.new(roles,  | 
| 80 | 
            -
                  @enrollments = EnrollmentSet.new(enrollments,  | 
| 72 | 
            +
                  @academic_sessions = AcademicSessionSet.new(academic_sessions, roster: self)
         | 
| 73 | 
            +
                  @organizations = OrganizationSet.new(organizations, roster: self)
         | 
| 74 | 
            +
                  @courses = CourseSet.new(courses, roster: self)
         | 
| 75 | 
            +
                  @classes = ClassroomSet.new(classes, roster: self)
         | 
| 76 | 
            +
                  @users = UserSet.new(users, roster: self)
         | 
| 77 | 
            +
                  @demographics = DemographicSet.new(demographics, roster: self)
         | 
| 78 | 
            +
                  @user_profiles = UserProfileSet.new(user_profiles, roster: self)
         | 
| 79 | 
            +
                  @roles = RoleSet.new(roles, roster: self)
         | 
| 80 | 
            +
                  @enrollments = EnrollmentSet.new(enrollments, roster: self)
         | 
| 81 | 
            +
                end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                def builder
         | 
| 84 | 
            +
                  Builder.new(roster: self, profile: profile)
         | 
| 81 85 | 
             
                end
         | 
| 82 86 |  | 
| 83 87 | 
             
                def check_semantically_consistent
         | 
    
        data/lib/meibo/user.rb
    CHANGED
    
    | @@ -41,7 +41,7 @@ module Meibo | |
| 41 41 | 
             
                  }.freeze
         | 
| 42 42 | 
             
                )
         | 
| 43 43 |  | 
| 44 | 
            -
                def initialize(sourced_id:, status: nil, date_last_modified: nil, enabled_user: nil, username:, user_ids: nil, given_name:, family_name:, middle_name: nil, identifier: nil, email: nil, sms: nil, phone: nil, agent_sourced_ids: [], grades: nil, password: nil, user_master_identifier: nil, resource_sourced_ids: nil, preferred_given_name: nil, preferred_middle_name: nil, preferred_family_name: nil, primary_org_sourced_id: nil, pronouns: nil,  | 
| 44 | 
            +
                def initialize(sourced_id:, status: nil, date_last_modified: nil, enabled_user: nil, username:, user_ids: nil, given_name:, family_name:, middle_name: nil, identifier: nil, email: nil, sms: nil, phone: nil, agent_sourced_ids: [], grades: nil, password: nil, user_master_identifier: nil, resource_sourced_ids: nil, preferred_given_name: nil, preferred_middle_name: nil, preferred_family_name: nil, primary_org_sourced_id: nil, pronouns: nil, **extension_fields)
         | 
| 45 45 | 
             
                  @sourced_id = sourced_id
         | 
| 46 46 | 
             
                  @status = status
         | 
| 47 47 | 
             
                  @date_last_modified = date_last_modified
         | 
| @@ -2,16 +2,11 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            module Meibo
         | 
| 4 4 | 
             
              class UserProfileSet < DataSet
         | 
| 5 | 
            -
                def initialize(data, user_set:)
         | 
| 6 | 
            -
                  super(data)
         | 
| 7 | 
            -
                  @user_set = user_set
         | 
| 8 | 
            -
                end
         | 
| 9 | 
            -
             | 
| 10 5 | 
             
                def check_semantically_consistent
         | 
| 11 6 | 
             
                  super
         | 
| 12 7 |  | 
| 13 8 | 
             
                  each do |user_profile|
         | 
| 14 | 
            -
                     | 
| 9 | 
            +
                    roster.users.find(user_profile.user_sourced_id)
         | 
| 15 10 | 
             
                  end
         | 
| 16 11 | 
             
                end
         | 
| 17 12 | 
             
              end
         | 
    
        data/lib/meibo/user_set.rb
    CHANGED
    
    | @@ -2,21 +2,16 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            module Meibo
         | 
| 4 4 | 
             
              class UserSet < DataSet
         | 
| 5 | 
            -
                def initialize(data, organization_set:)
         | 
| 6 | 
            -
                  super(data)
         | 
| 7 | 
            -
                  @organization_set = organization_set
         | 
| 8 | 
            -
                end
         | 
| 9 | 
            -
             | 
| 10 5 | 
             
                def check_semantically_consistent
         | 
| 11 6 | 
             
                  super
         | 
| 12 7 |  | 
| 13 8 | 
             
                  each do |user|
         | 
| 14 9 | 
             
                    if user.primary_org_sourced_id
         | 
| 15 | 
            -
                       | 
| 10 | 
            +
                      roster.organizations.find(user.primary_org_sourced_id)
         | 
| 16 11 | 
             
                    end
         | 
| 17 12 |  | 
| 18 13 | 
             
                    user.agent_sourced_ids.each do |agent_sourced_id|
         | 
| 19 | 
            -
                       | 
| 14 | 
            +
                      find(agent_sourced_id)
         | 
| 20 15 | 
             
                    end
         | 
| 21 16 | 
             
                  end
         | 
| 22 17 | 
             
                end
         | 
    
        data/lib/meibo/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: meibo
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Seiei Miyagi
         | 
| @@ -57,7 +57,6 @@ files: | |
| 57 57 | 
             
            - lib/meibo.rb
         | 
| 58 58 | 
             
            - lib/meibo/academic_session.rb
         | 
| 59 59 | 
             
            - lib/meibo/academic_session_set.rb
         | 
| 60 | 
            -
            - lib/meibo/base_profile.rb
         | 
| 61 60 | 
             
            - lib/meibo/builder.rb
         | 
| 62 61 | 
             
            - lib/meibo/builder/academic_session_builder.rb
         | 
| 63 62 | 
             
            - lib/meibo/builder/base_builder.rb
         | 
| @@ -88,9 +87,9 @@ files: | |
| 88 87 | 
             
            - lib/meibo/factory_bot/demographic.rb
         | 
| 89 88 | 
             
            - lib/meibo/factory_bot/enrollment.rb
         | 
| 90 89 | 
             
            - lib/meibo/factory_bot/manifest.rb
         | 
| 91 | 
            -
            - lib/meibo/factory_bot/memory_package.rb
         | 
| 92 90 | 
             
            - lib/meibo/factory_bot/organization.rb
         | 
| 93 91 | 
             
            - lib/meibo/factory_bot/role.rb
         | 
| 92 | 
            +
            - lib/meibo/factory_bot/roster.rb
         | 
| 94 93 | 
             
            - lib/meibo/factory_bot/user.rb
         | 
| 95 94 | 
             
            - lib/meibo/factory_bot/user_profile.rb
         | 
| 96 95 | 
             
            - lib/meibo/japan_profile.rb
         | 
| @@ -102,11 +101,12 @@ files: | |
| 102 101 | 
             
            - lib/meibo/japan_profile/organization.rb
         | 
| 103 102 | 
             
            - lib/meibo/japan_profile/role.rb
         | 
| 104 103 | 
             
            - lib/meibo/japan_profile/user.rb
         | 
| 105 | 
            -
            - lib/meibo/japan_profile/ | 
| 104 | 
            +
            - lib/meibo/japan_profile/user_set.rb
         | 
| 106 105 | 
             
            - lib/meibo/manifest.rb
         | 
| 107 106 | 
             
            - lib/meibo/manifest/processing_mode.rb
         | 
| 108 107 | 
             
            - lib/meibo/organization.rb
         | 
| 109 108 | 
             
            - lib/meibo/organization_set.rb
         | 
| 109 | 
            +
            - lib/meibo/profile.rb
         | 
| 110 110 | 
             
            - lib/meibo/reader.rb
         | 
| 111 111 | 
             
            - lib/meibo/role.rb
         | 
| 112 112 | 
             
            - lib/meibo/role_set.rb
         | 
| @@ -125,7 +125,7 @@ metadata: | |
| 125 125 | 
             
              allowed_push_host: https://rubygems.org/
         | 
| 126 126 | 
             
              homepage_uri: https://github.com/hanachin/meibo
         | 
| 127 127 | 
             
              source_code_uri: https://github.com/hanachin/meibo
         | 
| 128 | 
            -
              changelog_uri: https://github.com/hanachin/meibo/blob/meibo/v0. | 
| 128 | 
            +
              changelog_uri: https://github.com/hanachin/meibo/blob/meibo/v0.2.0/CHANGELOG.md
         | 
| 129 129 | 
             
            post_install_message:
         | 
| 130 130 | 
             
            rdoc_options: []
         | 
| 131 131 | 
             
            require_paths:
         |