123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- /*
- * Copyright 2012 ZXing authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- #import "ZXExpandedProductParsedResult.h"
-
- NSString * const ZX_KILOGRAM = @"KG";
- NSString * const ZX_POUND = @"LB";
-
- @implementation ZXExpandedProductParsedResult
-
- - (id)init {
- return [self initWithRawText:@"" productID:@"" sscc:@"" lotNumber:@"" productionDate:@"" packagingDate:@""
- bestBeforeDate:@"" expirationDate:@"" weight:@"" weightType:@"" weightIncrement:@"" price:@""
- priceIncrement:@"" priceCurrency:@"" uncommonAIs:[NSMutableDictionary dictionary]];
- }
-
- - (id)initWithRawText:(NSString *)rawText productID:(NSString *)productID sscc:(NSString *)sscc
- lotNumber:(NSString *)lotNumber productionDate:(NSString *)productionDate
- packagingDate:(NSString *)packagingDate bestBeforeDate:(NSString *)bestBeforeDate
- expirationDate:(NSString *)expirationDate weight:(NSString *)weight weightType:(NSString *)weightType
- weightIncrement:(NSString *)weightIncrement price:(NSString *)price priceIncrement:(NSString *)priceIncrement
- priceCurrency:(NSString *)priceCurrency uncommonAIs:(NSMutableDictionary *)uncommonAIs {
- if (self = [super initWithType:kParsedResultTypeProduct]) {
- _rawText = rawText;
- _productID = productID;
- _sscc = sscc;
- _lotNumber = lotNumber;
- _productionDate = productionDate;
- _packagingDate = packagingDate;
- _bestBeforeDate = bestBeforeDate;
- _expirationDate = expirationDate;
- _weight = weight;
- _weightType = weightType;
- _weightIncrement = weightIncrement;
- _price = price;
- _priceIncrement = priceIncrement;
- _priceCurrency = priceCurrency;
- _uncommonAIs = uncommonAIs;
- }
-
- return self;
- }
-
- + (id)expandedProductParsedResultWithRawText:(NSString *)rawText productID:(NSString *)productID sscc:(NSString *)sscc
- lotNumber:(NSString *)lotNumber productionDate:(NSString *)productionDate
- packagingDate:(NSString *)packagingDate bestBeforeDate:(NSString *)bestBeforeDate
- expirationDate:(NSString *)expirationDate weight:(NSString *)weight
- weightType:(NSString *)weightType weightIncrement:(NSString *)weightIncrement
- price:(NSString *)price priceIncrement:(NSString *)priceIncrement
- priceCurrency:(NSString *)priceCurrency uncommonAIs:(NSMutableDictionary *)uncommonAIs {
- return [[self alloc] initWithRawText:rawText productID:productID sscc:sscc lotNumber:lotNumber
- productionDate:productionDate packagingDate:packagingDate bestBeforeDate:bestBeforeDate
- expirationDate:expirationDate weight:weight weightType:weightType
- weightIncrement:weightIncrement price:price priceIncrement:priceIncrement
- priceCurrency:priceCurrency uncommonAIs:uncommonAIs];
- }
-
- - (BOOL)isEqual:(id)o {
- if (![o isKindOfClass:[self class]]) {
- return NO;
- }
-
- ZXExpandedProductParsedResult *other = (ZXExpandedProductParsedResult *)o;
-
- return [self equalsOrNil:self.productID o2:other.productID]
- && [self equalsOrNil:self.sscc o2:other.sscc]
- && [self equalsOrNil:self.lotNumber o2:other.lotNumber]
- && [self equalsOrNil:self.productionDate o2:other.productionDate]
- && [self equalsOrNil:self.bestBeforeDate o2:other.bestBeforeDate]
- && [self equalsOrNil:self.expirationDate o2:other.expirationDate]
- && [self equalsOrNil:self.weight o2:other.weight]
- && [self equalsOrNil:self.weightType o2:other.weightType]
- && [self equalsOrNil:self.weightIncrement o2:other.weightIncrement]
- && [self equalsOrNil:self.price o2:other.price]
- && [self equalsOrNil:self.priceIncrement o2:other.priceIncrement]
- && [self equalsOrNil:self.priceCurrency o2:other.priceCurrency]
- && [self equalsOrNil:self.uncommonAIs o2:other.uncommonAIs];
- }
-
- - (BOOL)equalsOrNil:(id)o1 o2:(id)o2 {
- return o1 == nil ? o2 == nil : [o1 isEqual:o2];
- }
-
- - (NSUInteger)hash {
- int hash = 0;
- hash ^= [self.productID hash];
- hash ^= [self.sscc hash];
- hash ^= [self.lotNumber hash];
- hash ^= [self.productionDate hash];
- hash ^= [self.bestBeforeDate hash];
- hash ^= [self.expirationDate hash];
- hash ^= [self.weight hash];
- hash ^= [self.weightType hash];
- hash ^= [self.weightIncrement hash];
- hash ^= [self.price hash];
- hash ^= [self.priceIncrement hash];
- hash ^= [self.priceCurrency hash];
- hash ^= [self.uncommonAIs hash];
- return hash;
- }
-
- - (NSString *)displayResult {
- return self.rawText;
- }
-
- @end
|