summaryrefslogtreecommitdiff
path: root/extensions/source/macosx/spotlight/OOoMetaDataParser.m
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/source/macosx/spotlight/OOoMetaDataParser.m')
-rw-r--r--extensions/source/macosx/spotlight/OOoMetaDataParser.m200
1 files changed, 0 insertions, 200 deletions
diff --git a/extensions/source/macosx/spotlight/OOoMetaDataParser.m b/extensions/source/macosx/spotlight/OOoMetaDataParser.m
deleted file mode 100644
index cddbbd130..000000000
--- a/extensions/source/macosx/spotlight/OOoMetaDataParser.m
+++ /dev/null
@@ -1,200 +0,0 @@
-/*************************************************************************
-*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
-*************************************************************************/
-
-#import "OOoMetaDataParser.h"
-
-static NSSet *singleValueXMLElements;
-static NSSet *multiValueXMLElements;
-static NSDictionary *metaXML2MDIKeys;
-
-@implementation OOoMetaDataParser
-
-+ (void)initialize
-{
- static BOOL isInitialized = NO;
-
- if (isInitialized == NO) {
- //set up the meta elements with only one value
- NSMutableSet *temp = [NSMutableSet new];
- [temp addObject:@"dc:title"];
- [temp addObject:@"dc:description"];
- [temp addObject:@"meta:user-defined"];
- singleValueXMLElements = [[NSSet setWithSet:temp] retain];
-
- //set up the meta elements that can have more than one value
- [temp removeAllObjects];
- [temp addObject:@"dc:subject"];
- [temp addObject:@"meta:keyword"];
- [temp addObject:@"meta:initial-creator"];
- [temp addObject:@"dc:creator"];
- multiValueXMLElements = [[NSSet setWithSet:temp] retain];
- [temp release];
-
- //set up the map to store the values with the correct MDI keys
- NSMutableDictionary *tempDict = [NSMutableDictionary new];
- [tempDict setObject:(NSString*)kMDItemTitle forKey:@"dc:title"];
- [tempDict setObject:(NSString*)kMDItemDescription forKey:@"dc:description"];
- [tempDict setObject:(NSString*)kMDItemKeywords forKey:@"dc:subject"];
- [tempDict setObject:(NSString*)kMDItemAuthors forKey:@"meta:initial-creator"];
- [tempDict setObject:(NSString*)kMDItemAuthors forKey:@"dc:creator"];
- [tempDict setObject:(NSString*)kMDItemKeywords forKey:@"meta:keyword"];
- [tempDict setObject:@"org_openoffice_opendocument_custominfo1" forKey:@"Info 1"];
- [tempDict setObject:@"org_openoffice_opendocument_custominfo2" forKey:@"Info 2"];
- [tempDict setObject:@"org_openoffice_opendocument_custominfo3" forKey:@"Info 3"];
- [tempDict setObject:@"org_openoffice_opendocument_custominfo4" forKey:@"Info 4"];
- metaXML2MDIKeys = [[NSDictionary dictionaryWithDictionary:tempDict] retain];
- [tempDict release];
-
- isInitialized = YES;
- }
-}
-
-- (id)init
-{
- if ((self = [super init]) != nil) {
- shouldReadCharacters = NO;
-// currentElement = nil;
- textCurrentElement = nil;
-
- return self;
- }
-
- return nil;
-}
-
-- (void)parseXML:(NSData*)data intoDictionary:(NSMutableDictionary*)dict
-{
- metaValues = dict;
-
- //NSLog(@"data: %@ %d", data, [data length]);
-
- //init parser settings
- shouldReadCharacters = NO;
-
- NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
-
- [parser setDelegate:self];
- [parser setShouldResolveExternalEntities:NO];
- [parser parse];
-
- [parser release];
-
- //NSLog(@"finished parsing meta");
-}
-
-- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
-{
-// NSLog(@"<%@>", elementName);
- if ([singleValueXMLElements containsObject:elementName] == YES) {
- shouldReadCharacters = YES;
- } else if ([multiValueXMLElements containsObject:elementName] == YES) {
- shouldReadCharacters = YES;
- } else {
- //we are not interested in this element
- shouldReadCharacters = NO;
- return;
- }
-
- if (shouldReadCharacters == YES) {
- textCurrentElement = [NSMutableString new];
- isCustom = [elementName isEqualToString:@"meta:user-defined"];
- if (isCustom == YES) {
- customAttribute = [[attributeDict objectForKey:@"meta:name"] retain];
- //NSLog(customAttribute);
- }
- }
-
- //NSLog(@"start element %@", elementName);
-}
-
-- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
-{
-// NSLog(@"</%@>", elementName);
- if (shouldReadCharacters == YES) {
- NSString *mdiName = nil;
- if (isCustom == YES) {
- mdiName = (NSString*)[metaXML2MDIKeys objectForKey:customAttribute];
- } else {
- mdiName = (NSString*)[metaXML2MDIKeys objectForKey:elementName];
- }
- //NSLog(@"mdiName: %@", mdiName);
-
- if (mdiName == nil) {
- return;
- }
-
- if ([singleValueXMLElements containsObject:elementName] == YES) {
- [metaValues setObject:textCurrentElement forKey:mdiName];
- } else {
- // must be multi-value
- NSMutableArray *arr = [metaValues objectForKey:mdiName];
- if (arr == nil) {
- // we have no array yet, create it
- arr = [[NSMutableArray new] autorelease];
- // and store it
- [metaValues setObject:arr forKey:mdiName];
- }
- // only store an element once, no need for duplicates
- if ([arr containsObject:textCurrentElement] == NO) {
- [arr addObject:textCurrentElement];
- }
- }
- // cleanup part 1
- [textCurrentElement release];
- if (customAttribute != nil) {
- [customAttribute release];
- }
- }
-
- //cleanup part 2
- shouldReadCharacters = NO;
- isCustom = NO;
-}
-
-- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
-{
-// NSLog(@"%@", string);
- if (shouldReadCharacters == NO) {
- return;
- }
-
- // this delegate method might be called several times for a single element,
- // so we have to collect the received data
- [textCurrentElement appendString:string];
-
- //NSLog(@"chars read: %@", string);
-}
-
-- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
-{
- //NSLog(@"parsing finished with error");
- NSLog([NSString stringWithFormat:@"Error %i, Description: %@, Line: %i, Column: %i", [parseError code],
- [[parser parserError] localizedDescription], [parser lineNumber],
- [parser columnNumber]]);
-}
-
-@end