| /* |
| * 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 |