Changeset 400


Ignore:
Timestamp:
Jan 25, 2010, 2:56:50 PM (14 years ago)
Author:
KOBAYASHI, Shinji
Message:

refs #71

Location:
ruby/trunk
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • ruby/trunk/lib/open_ehr/am/archetype/constraint_model/primitive.rb

    r399 r400  
    133133          end
    134134
    135           class CDate < CPrimitive
     135          module CDateModule
    136136            attr_accessor :range, :timezone_validity
    137137            attr_reader :month_validity, :day_validity
    138138
     139            def month_validity=(month_validity)
     140              if (month_validity == ValidityKind::OPTIONAL &&
     141                  !(@day_validity == ValidityKind::OPTIONAL ||
     142                    @day_validity == ValidityKind::DISALLOWED)) ||
     143                  (month_validity == ValidityKind::DISALLOWED &&
     144                  !(@day_validity == ValidityKind::DISALLOWED))
     145                raise ArgumentError, 'month validity disallowed'
     146              end
     147              @month_validity = month_validity
     148            end
     149
     150            def day_validity=(day_validity)
     151              @day_validity = day_validity
     152            end
     153
     154            def validity_is_range?
     155              return !@range.nil?
     156            end
     157
     158            private
     159            def consistency_validity(month_validity, day_validity)
     160            end
     161          end
     162
     163          class CDate < CPrimitive
     164            include CDateModule
     165
    139166            def initialize(args = { })
    140167              super(args)
    141168              self.range = args[:range]
    142               consistency_validity(args[:month_validity], args[:day_validity])
    143               @month_validity = args[:month_validity]
    144               @day_validity = args[:day_validity]
    145169              self.timezone_validity = args[:timezone_validity]
    146             end
    147 
    148             def month_validity=(month_validity)
    149               consistency_validity(month_validity, @day_validity)
    150               @month_validity = month_validity
    151             end
    152 
    153             def day_validity=(day_validity)
    154               consistency_validity(@month_validity, day_validity)
    155               @day_validity = day_validity
    156             end
    157 
    158             def validity_is_range?
    159               return !@range.nil?
    160             end
    161 
    162             private
    163             def consistency_validity(month_validity, day_validity)
    164               if (month_validity == ValidityKind::OPTIONAL) &&
    165                   !((day_validity == ValidityKind::OPTIONAL) ||
    166                     (day_validity == ValidityKind::DISALLOWED))
    167                 raise ArgumentError, 'month_validity inconsistent'
    168               end
    169               if (month_validity == ValidityKind::DISALLOWED) &&
    170                   !(day_validity == ValidityKind::DISALLOWED)
    171                 raise ArgumentError, 'month validity disallowed'
    172               end
    173             end
    174           end
    175 
    176           class CTime < CPrimitive
     170              self.day_validity = args[:day_validity]
     171              self.month_validity = args[:month_validity]
     172            end
     173          end
     174
     175          module CTimeModule
    177176            attr_accessor :range
    178177            attr_reader :minute_validity, :second_validity,
    179178                        :millisecond_validity
    180 
    181             def initialize(args = { })
    182               super
    183               self.range = args[:range]
    184               self.millisecond_validity = args[:millisecond_validity]
    185               self.second_validity = args[:second_validity]
    186               self.minute_validity = args[:minute_validity]
    187             end
    188179
    189180            def minute_validity=(minute_validity)
     
    215206            end
    216207          end
     208
     209          class CTime < CPrimitive
     210            include CTimeModule
     211
     212            def initialize(args = { })
     213              super
     214              self.range = args[:range]
     215              self.millisecond_validity = args[:millisecond_validity]
     216              self.second_validity = args[:second_validity]
     217              self.minute_validity = args[:minute_validity]
     218            end
     219          end
     220
     221          class CDateTime < CPrimitive
     222            include CDateModule, CTimeModule
     223            attr_reader :hour_validity
     224
     225            def initialize(args = { })
     226              super
     227              self.timezone_validity = args[:timezone_validity]
     228              self.millisecond_validity = args[:millisecond_validity]
     229              self.second_validity = args[:second_validity]
     230              self.minute_validity = args[:minute_validity]
     231              self.hour_validity = args[:hour_vaildity]
     232              self.day_validity = args[:day_validity]
     233              self.month_validity = args[:day_validity]
     234            end
     235
     236            def hour_validity=(hour_validity)
     237              if (hour_validity == ValidityKind::DISALLOWED &&
     238                  @minute_validity != ValidityKind::DISALLOWED) ||
     239                  (hour_validity == ValidityKind::OPTIONAL &&
     240                   !(@minute_validity == ValidityKind::OPTIONAL ||
     241                     @minute_validity == ValidityKind::DISALLOWED))
     242                raise ArgumentError, 'hour_validity is invalid'
     243              end
     244              @hour_validity = hour_validity
     245            end
     246
     247            def day_validity=(day_validity)
     248              if (day_validity == ValidityKind::DISALLOWED &&
     249                  @hour_validity != ValidityKind::DISALLOWED) ||
     250                  (day_validity == ValidityKind::OPTIONAL &&
     251                   !(@hour_validity == ValidityKind::OPTIONAL ||
     252                     @hour_validity == ValidityKind::DISALLOWED))
     253                raise ArgumentError, 'day_validity is invaild'
     254              end
     255              @day_validity = day_validity
     256            end
     257          end
    217258        end # of Primitive
    218259      end # of CostraintModel
  • ruby/trunk/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_time_spec.rb

    r399 r400  
    33include OpenEHR::AM::Archetype
    44include OpenEHR::AM::Archetype::ConstraintModel::Primitive
    5 
    65
    76describe CTime do
Note: See TracChangeset for help on using the changeset viewer.