Beispiel #1
0
void Synchro::FirstSynchro()
{
	GetJSON();
	std::map<int, Folder *> FolderMap = myparse.getFoldermap();
	typedef std::map<int, Folder *>::iterator it_type2;
	for (it_type2 iterator = FolderMap.begin(); iterator != FolderMap.end(); iterator++) {
		Folder *fold = iterator->second;
		std::string str = this->folder + fold->getChosenPath() + "/" + fold->getName();
		char *cstr = new char[str.length() + 1];
		strcpy(cstr, str.c_str());
		if (QDir(cstr).exists() == true)
			return;
		else
			QDir().mkdir(cstr);
		delete[] cstr;
	}

	std::map<int, File *> fileMap = myparse.getFileMap();
	std::string StrignUpload = "uploads/";
	typedef std::map<int, File *>::iterator it_type;
	for (it_type iterator = fileMap.begin(); iterator != fileMap.end(); iterator++) {
		File *test = iterator->second;
		std::string urltodown = this->URL + StrignUpload + test->getPseudoOwner() + "/" + test->getRealPath() + test->getPath();
		while (urltodown.find('\\') != std::string::npos)
			replace(urltodown, "\\", "/");
		char *cstr1 = new char[urltodown.length() + 1];
		strcpy(cstr1, urltodown.c_str());

		std::string str = test->getName() + "." + test->getMimeType();
		char *cstr = new char[str.length() + 1];
		strcpy(cstr, str.c_str());

		str = this->folder + test->getChosenPath() + "/";
		char *pathDisk = new char[str.length() + 1];
		strcpy(pathDisk, str.c_str());

		std::string ty = pathDisk + str;
		QString URI(ty.c_str());
		DownloadFile(cstr1, URI);

		delete[] cstr;
		delete[] cstr1;
	}

	char acsjson[1024];
	strcpy(acsjson, this->folder);
	strcat(acsjson, ".acsilserver");
	QFile txt(acsjson);

	txt.open(QIODevice::ReadWrite | QIODevice::Text);
	txt.write(myparse.getJSON().c_str());
	txt.close();
}
Beispiel #2
0
void Synchro::ComparatifRenameFodler(QDateTime delta)
{
	qDebug() << delta.toString();
	std::map<int, Folder *> FolderMap = myparse.getFoldermap();
	typedef std::map<int, Folder *>::iterator it_type2;

	std::map<int, Folder *> OldFolderMap = oldparse.getFoldermap();
	typedef std::map<int, Folder *>::iterator it_type;

	QStringList ListNew, ListOld;

	for (it_type2 iterator = FolderMap.begin(); iterator != FolderMap.end(); iterator++) {

		Folder *fold = iterator->second;
		ListNew.push_back((this->folder + fold->getChosenPath() + fold->getName()).c_str());
		QString d = QString::fromStdString(fold->getLastModifDate());
		long long r = QDateTime::fromString(d, "yyyy:MM:dd hh:mm:ss").msecsTo(delta);
		if (r < 0)
		{
			std::string tmppath = this->folder + fold->getChosenPath() + fold->getName();
			QString path(tmppath.c_str());

			qDebug() << "Directory updated: " << path;

			for (it_type iterator2 = OldFolderMap.begin(); iterator2 != OldFolderMap.end(); iterator2++) {
				Folder *oldfold = iterator2->second;

				if (oldfold->getId() == fold->getId())
				{
					std::string oldpath = this->folder + oldfold->getChosenPath() + oldfold->getName();
					qDebug() << "Directory Old: " << oldpath.c_str();
					if ((oldfold->getName() != fold->getName()) || (oldpath != path.toStdString()))
					{
						QString original = (this->folder + oldfold->getChosenPath() + oldfold->getName()).c_str();
						QString dest = (this->folder + fold->getChosenPath() + fold->getName()).c_str();
						QDir dir;
						if (!dir.rename(original, dest)){
							qDebug() << "OOOOOOO SECOURSSSSSSSS";

						}
					}
				}
			}
		}
		else
		{

		}
	}
	for (it_type iterator2 = OldFolderMap.begin(); iterator2 != OldFolderMap.end(); iterator2++) {
		Folder *oldfold = iterator2->second;
		ListOld.push_back((this->folder + oldfold->getChosenPath() + oldfold->getName()).c_str());
	}

	QStringList currEntryList = ListNew;

	QStringList newEntryList = ListOld;
	QSet<QString> newDirSet = QSet<QString>::fromList(newEntryList);
	QSet<QString> currentDirSet = QSet<QString>::fromList(currEntryList);
	// Files that have been added
	QSet<QString> newFiles = newDirSet - currentDirSet;
	QStringList newFile = newFiles.toList();
	// Files that have been removed
	QSet<QString> deletedFiles = currentDirSet - newDirSet;
	QStringList deleteFile = deletedFiles.toList();
	if (!deleteFile.isEmpty())
	{
		qDebug() << "Files/Dirs deleted: " << deleteFile;
		foreach(QString file, deleteFile)
		{
			if (QDir(file).exists() == true)
				return;
			else
				QDir().mkdir(file);
		}
	}