• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 * Copyright 2006 Sony Computer Entertainment Inc.
3 *
4 * Licensed under the MIT Open Source License, for details please see license.txt or the website
5 * http://www.opensource.org/licenses/mit-license.php
6 *
7 */
8 
9 #include <sstream>
10 #include <dae.h>
11 #include <dae/daeStandardURIResolver.h>
12 #include <dae/daeDatabase.h>
13 #include <dae/daeURI.h>
14 #include <dae/daeIOPlugin.h>
15 #include <dae/daeErrorHandler.h>
16 
17 using namespace std;
18 
daeStandardURIResolver(DAE & dae)19 daeStandardURIResolver::daeStandardURIResolver(DAE& dae)
20 	: daeURIResolver(dae) { }
21 
~daeStandardURIResolver()22 daeStandardURIResolver::~daeStandardURIResolver() { }
23 
24 daeString
getName()25 daeStandardURIResolver::getName()
26 {
27 	return "XMLResolver";
28 }
29 
30 namespace {
printErrorMsg(const daeURI & uri)31 	void printErrorMsg(const daeURI& uri) {
32 		ostringstream msg;
33 		msg << "daeStandardURIResolver::resolveElement() - Failed to resolve " << uri.str() << endl;
34 		daeErrorHandler::get()->handleError(msg.str().c_str());
35 	}
36 }
37 
resolveElement(const daeURI & uri)38 daeElement* daeStandardURIResolver::resolveElement(const daeURI& uri) {
39 	daeDocument* doc = uri.getReferencedDocument();
40 	if (!doc) {
41 		dae->open(uri.str());
42 		doc = uri.getReferencedDocument();
43 		if (!doc) {
44 			printErrorMsg(uri);
45 			return NULL;
46 		}
47 	}
48 
49 	daeElement* elt = dae->getDatabase()->idLookup(uri.id(), doc);
50 	if (!elt)
51 		printErrorMsg(uri);
52 
53 	return elt;
54 }
55