Exemple #1
0
void lmcMessaging::receiveProgress(QString* lpszUserId, QString* lpszData)
{
    XmlMessage xmlMessage(*lpszData);
    int fileMode = indexOf( FileModeNames, FM_Max, xmlMessage.data(XN_MODE) );
    int fileOp   = indexOf( FileOpNames, FO_Max, xmlMessage.data(XN_FILEOP) );
    int fileType = indexOf( FileTypeNames, FT_Max, xmlMessage.data(XN_FILETYPE) );
    QString fileId = xmlMessage.data(XN_FILEID);

    //	determine type of message to be sent to app layer based on file type
    MessageType type;
    switch(fileType)
    {
    case FT_Normal:
        type = MT_File;
        break;
    case FT_Avatar:
        type = MT_Avatar;
        break;
    default:
        type = MT_Blank;
        break;
    }

    XmlMessage reply;

    switch(fileOp) {
    case FO_Error:
        reply.addData(XN_MODE, FileModeNames[fileMode]);
        reply.addData(XN_FILETYPE, FileTypeNames[fileType]);
        reply.addData(XN_FILEOP, FileOpNames[FO_Abort]);
        reply.addData(XN_FILEID, fileId);
        sendMessage(type, lpszUserId, &reply);

        emit messageReceived(type, lpszUserId, &xmlMessage);
        break;
    case FO_Progress:
    case FO_Complete:
        emit messageReceived(type, lpszUserId, &xmlMessage);
        break;
    }
}
void main() {
	string thePath = "C:\\Users\\Martin\\Desktop\\TestingFolder";

	string timestamp = __TIMESTAMP__;
	cout << endl << "TimeStamp before concatenation: " << timestamp;
	for (string::iterator i = timestamp.begin(); i < timestamp.end(); ++i) {
		if (*i == ':' || *i == ' ' || *i == '  ')
			timestamp.erase(i);
	}
	cout << endl << "TimeStamp after concatenation: " << timestamp;
	string folderwithDate = thePath + timestamp;
	cout << endl << "Folder along with TimeStamp" << folderwithDate;
	std::wstring stemp = std::wstring(folderwithDate.begin(), folderwithDate.end());
	LPCWSTR sw = stemp.c_str();
	::SHCreateDirectoryEx(NULL, sw, NULL);
	vector<string> folders = FileSystem::Directory::getDirectories("C:\\Users\\Martin\\Desktop\\TestingFolder");
	for (auto folder : folders)
		cout << endl << folder;

	sPtr rootElement = makeTaggedElement("Dependency");
	for (auto folder : folders) {
		if (folder != "."&&folder != "..") {
			sPtr folderElement = makeTaggedElement("Package");
			folderElement->addAttrib("Name", folder);
			rootElement->addChild(folderElement);
			cout << endl << folder;
		}
	}

	XmlDocument xmlFolderDocument(makeDocElement(rootElement));
	std::ofstream file;
	file.open("PackagesDependency.xml", ios::ate);
	file << xmlFolderDocument.toString();
	file.close();


	string xmlString = xmlFolderDocument.toString();
	XmlDocument xml(xmlString);
	XmlDocument xmlInputFile("PackagesDependency.xml", XmlDocument::file);
	vector<sPtr> packages = xml.element("Package").select();
	cout << "No. of Packages found: " << packages.size();

	vector<string> foldersList;
	for (auto package : packages) {
		if (package->getAttrib("Name") != "."&&package->getAttrib("Name") != ".."&&package->getAttrib("Name") != "") {
			cout << "Hello\n";
			foldersList.push_back(package->getAttrib("Name"));
		}
	}
	vector<string> filesList;
	for (auto folder : foldersList) {
		std::vector<std::string> files = FileSystem::Directory::getFiles(thePath + "\\" + folder);
		filesList.insert(filesList.end(), files.begin(), files.end());
	}

	for (auto file : filesList)
		cout << endl << file;






	sPtr XMLroot = makeTaggedElement("Packages");

	sPtr packageElement = makeTaggedElement("Package");
	packageElement->addAttrib("Name", "Package 1");
	XMLroot->addChild(packageElement);


	sPtr versionElement = makeTaggedElement("Version");
	versionElement->addAttrib("Name", "1");
	versionElement->addAttrib("Directory", "Package1_1");
	versionElement->addAttrib("Status", "Closed");
	packageElement->addChild(versionElement);

	versionElement = makeTaggedElement("Version");
	versionElement->addAttrib("Name", "2");
	versionElement->addAttrib("Directory", "Package1_2");
	versionElement->addAttrib("Status", "Open");
	packageElement->addChild(versionElement);

	packageElement = makeTaggedElement("Package");
	packageElement->addAttrib("Name", "Package 2");
	XMLroot->addChild(packageElement);


	versionElement = makeTaggedElement("Version");
	versionElement->addAttrib("Name", "1");
	versionElement->addAttrib("Directory", "Package2_1");
	versionElement->addAttrib("Status", "Open");
	packageElement->addChild(versionElement);



	XmlDocument xmlMessage(makeDocElement(XMLroot));
	//cout << xmlMessage.toString();

	cout << endl;
	/*string fileSpec = "Package XML Structure.xml";
	XmlDocument file(fileSpec, XmlDocument::file);
	XmlDocument* filePointer = &file;*/

	/*Repository repo;
	repo.addPackageInfoXML(&xmlMessage);


	vector<PackageDetails> packages = repo.getPackageVersions("Package 1");
	cout << endl << "Printing all Packages with name: Package 1";
	for (auto packg : packages) {
	packg.print();
	}*/

	cout << endl;

	string xmlInputFileName = "PackagesStructure.xml";
	XmlDocument xmlMessagefromDisk(xmlInputFileName, XmlDocument::file);
	cout << endl << "Printing XML read from disk: " << xmlMessagefromDisk.toString();

	Repository repo2("C:\\Users\\Martin\\Desktop\\OODFolder");
	repo2.addPackageInfoXML(&xmlMessagefromDisk);
	repo2.closePackageVersion("Package 1", "2");
	cout << endl << "Printing XML read from disk after closing module status: " << xmlMessagefromDisk.toString();
	string xmlOutputFileName = "PackagesStructure.xml";

	cout << "Writing file to output: " << xmlOutputFileName;

	ofstream xmlFileWrite;
	xmlFileWrite.open(xmlOutputFileName, ios::ate);
	xmlFileWrite << xmlMessagefromDisk.toString();
	cout << endl;

	/*try
	{
	XmlDocument xmlMessagefromDisk(xmlInputFileName, XmlDocument::file);
	cout << "Printing XML read from disk: " << xmlMessagefromDisk.toString();
	}
	catch (std::exception& ex)
	{
	std::cout << "\n\n  " << ex.what();
	}*/

	cout << endl;

	/*PackageDetails package = repo.getLatestPackageVersion("Package 1");
	cout << endl << "Printing latest package version with name: Package 1";
	package.print();

	cout << endl;

	packages = repo.getPackageVersions("Package 2");
	cout << endl << "Printing all Packages with name: Package 2";
	for (auto packg : packages) {
	packg.print();
	}*/
	cout << endl;
}