예제 #1
0
	void ChannelPlayerAdapter::createPlayer() {
		Player* childPlayer = NULL;
		CompositeExecutionObject* cpExObj;
		ExecutionObject* childObj;
		vector<ExecutionObject*>* objects;
		map<string, Player*>* objectMap;
		Content* content;
		string mrlPlayer;
		string selectedObject = "";

		cpExObj = (CompositeExecutionObject*)object;
		objectMap = new map<string, Player*>; 
		objects = cpExObj->getExecutionObjects();

		if (objects != NULL && cpExObj->getDescriptor() != NULL) {
			vector<ExecutionObject*>::iterator i;
			i = objects->begin();
			while (i != objects->end()) {
				childObj = *i;
				if (childObj != NULL && childObj->getDataObject() != NULL &&
						childObj->getDataObject()->getDataEntity() != NULL &&
						((NodeEntity*)(childObj->getDataObject()->
							getDataEntity()))->getContent() != NULL) {

					content = ((NodeEntity*)(childObj->getDataObject()->
						    getDataEntity()))->getContent();

					if (content->instanceOf("ReferenceContent")) {
						mrlPlayer = ((ReferenceContent*)content)->
							    getCompleteReferenceUrl();

						childPlayer = new AVPlayer(mrlPlayer, hasVisual);
						(*objectMap)[childObj->
						             getDataObject()->getId()] = childPlayer;
					}
				}
				++i;
			}

			//cout << "ChannelPlayerAdapter::createPlayer objMap->size = ";
			//cout << objectMap->size() << endl;
			selectedObject = cpExObj->getDescriptor()->
				    getParameterValue("selectedObject");
		}

		if (objects != NULL) {
			delete objects;
			objects = NULL;
		}

		player = new ChannelPlayer(objectMap);
		if (selectedObject != "") {
			childPlayer = ((ChannelPlayer*)player)->getPlayer(selectedObject);
			((ChannelPlayer*)player)->select(childPlayer);
		}

		FormatterPlayerAdapter::createPlayer();
	}