From b713f08786b0abf2c1dcc0c4f040e3e1947b448c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kecsk=C3=A9s=20Kriszti=C3=A1n?= <kk1205@sch.bme.hu>
Date: Tue, 24 Nov 2015 00:17:15 +0100
Subject: [PATCH] mappanevek kivezetve

Modified   program/Source/app/Application.cpp
Modified   program/Source/cloud/CloudAdapter.h
Modified   program/Source/cloud/DropboxAdapter.h
Modified   program/Source/cloud/FTPAdapter.cpp
Modified   program/Source/cloud/FTPAdapter.h
Modified   program/Source/cloud/LocalCloudAdapter.h
Modified   program/Source/dataAccess/CloudFileSystem.cpp
Modified   program/Source/dataAccess/CloudFileSystem.h
Modified   program/Source/dataAccess/Decoder.cpp
Modified   program/Source/dataAccess/Decoder.h
Modified   program/Source/dataAccess/Encoder.cpp
Modified   program/Source/dataAccess/Encoder.h
---
 program/Source/app/Application.cpp            | 12 +++++++++++
 program/Source/cloud/CloudAdapter.h           |  8 ++++++++
 program/Source/cloud/DropboxAdapter.h         |  4 +---
 program/Source/cloud/FTPAdapter.cpp           |  1 -
 program/Source/cloud/FTPAdapter.h             |  1 -
 program/Source/cloud/LocalCloudAdapter.h      |  4 ----
 program/Source/dataAccess/CloudFileSystem.cpp | 20 ++++++++++++++++++-
 program/Source/dataAccess/CloudFileSystem.h   | 12 ++++++++++-
 program/Source/dataAccess/Decoder.cpp         | 14 +++++++++++--
 program/Source/dataAccess/Decoder.h           |  7 +++++--
 program/Source/dataAccess/Encoder.cpp         | 14 +++++++++++--
 program/Source/dataAccess/Encoder.h           |  7 +++++--
 12 files changed, 85 insertions(+), 19 deletions(-)

diff --git a/program/Source/app/Application.cpp b/program/Source/app/Application.cpp
index 3f2e4044..711abfb8 100644
--- a/program/Source/app/Application.cpp
+++ b/program/Source/app/Application.cpp
@@ -40,6 +40,18 @@ int main(int argc, char **argv) {
 	//application.ui = app::UI();
 	application.ui.app = &application;
 
+	string dataFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\data\\";
+	string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\";
+	string cloudFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\cloud\\";
+
+	application.cfs.getEncoder()->setFolders(dataFolder,fragFolder);
+	application.cfs.getDecoder()->setFolders(dataFolder,fragFolder);
+	application.cfs.setFolders(fragFolder);
+
+	for (auto ca : application.cm.getCloudList()){
+		ca->setFolders(cloudFolder, fragFolder);
+	}
+
 	Application::DeleteThisUglyWorkaround_App_Instance = &application;
 
 	if (argc > 1 && (Application::SERVER.compare(argv[1]) == 0))
diff --git a/program/Source/cloud/CloudAdapter.h b/program/Source/cloud/CloudAdapter.h
index 23b5c0f5..c3771500 100644
--- a/program/Source/cloud/CloudAdapter.h
+++ b/program/Source/cloud/CloudAdapter.h
@@ -16,9 +16,17 @@
  * we only need to implement this each time
  */
 class CloudAdapter {
+protected:
+	std::string fragFolder;
+	std::string cloudFolder;
 public:
 	std::string cloudID;
 
+	void setFolders(std::string _cloudFolder, std::string _fragFolder){
+		cloudFolder = _cloudFolder;
+		fragFolder = _fragFolder;
+	}
+
 	/**
 	 * CloudApater constructor
 	 * @param _cloudID the ID of the cloud that is implemented
diff --git a/program/Source/cloud/DropboxAdapter.h b/program/Source/cloud/DropboxAdapter.h
index 498a151c..93b3bbb1 100644
--- a/program/Source/cloud/DropboxAdapter.h
+++ b/program/Source/cloud/DropboxAdapter.h
@@ -12,8 +12,6 @@
 * DropboxAdapter class
 */
 class DropboxAdapter : public CloudAdapter {
-	const std::string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\";
-
 	const std::string contentHost		= "content.dropboxapi.com";
 	const std::string apiHost			= "api.dropboxapi.com";
 
@@ -24,7 +22,7 @@ class DropboxAdapter : public CloudAdapter {
 
 	const std::string tokenApiPath		= "/1/oauth2/token";
 
-	const std::string appKey				= "vmwjix7pf6y3hq6";
+	const std::string appKey			= "vmwjix7pf6y3hq6";
 	const std::string appSecret			= "t0tktamnuj2y6bd";
 	const std::string authCodeType		= "authorization_code";
 
diff --git a/program/Source/cloud/FTPAdapter.cpp b/program/Source/cloud/FTPAdapter.cpp
index c932a6ff..91df9150 100644
--- a/program/Source/cloud/FTPAdapter.cpp
+++ b/program/Source/cloud/FTPAdapter.cpp
@@ -15,7 +15,6 @@ using namespace Poco;
 using namespace boost::filesystem;
 using namespace std;
 
-const string FTPAdapter::fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\";
 const string FTPAdapter::USERNAME = "b18_16883957";
 const string FTPAdapter::PASSWORD = "lolwutdoge";
 const string FTPAdapter::HOST = "ftp.byethost18.com";
diff --git a/program/Source/cloud/FTPAdapter.h b/program/Source/cloud/FTPAdapter.h
index 7b95c429..87529254 100644
--- a/program/Source/cloud/FTPAdapter.h
+++ b/program/Source/cloud/FTPAdapter.h
@@ -10,7 +10,6 @@
 * DropboxAdapter class
 */
 class FTPAdapter : public CloudAdapter {
-	static const std::string fragFolder;
 	static const std::string USERNAME;
 	static const std::string PASSWORD;
 	static const std::string HOST;
diff --git a/program/Source/cloud/LocalCloudAdapter.h b/program/Source/cloud/LocalCloudAdapter.h
index dc87b49c..97d20c21 100644
--- a/program/Source/cloud/LocalCloudAdapter.h
+++ b/program/Source/cloud/LocalCloudAdapter.h
@@ -13,10 +13,6 @@
 * while real clouds are not used
 */
 class LocalCloudAdapter : public CloudAdapter {
-private:
-	std::string sourceFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\data\\";
-	std::string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\";
-	std::string cloudFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\cloud\\";
 public:
 	LocalCloudAdapter(std::string _cloudID = "localAdapter");
 
diff --git a/program/Source/dataAccess/CloudFileSystem.cpp b/program/Source/dataAccess/CloudFileSystem.cpp
index 419e2f0d..59c3b8f9 100644
--- a/program/Source/dataAccess/CloudFileSystem.cpp
+++ b/program/Source/dataAccess/CloudFileSystem.cpp
@@ -24,13 +24,31 @@ CloudFileSystem::CloudFileSystem(Application &application) :
 {
 	cfl.setPersPath("store.dat");
 	cfl.load();
-
+	encoder = new Encoder();
+	decoder = new Decoder();
 }
 
 CloudFileSystem::~CloudFileSystem(){
 	delete this->cache;
+	delete encoder;
+	delete decoder;
+}
+
+Encoder* CloudFileSystem::getEncoder(){
+	return encoder;
 }
 
+
+Decoder* CloudFileSystem::getDecoder(){
+	return decoder;
+}
+
+void CloudFileSystem::setFolders(string _fragFolder){
+	fragFolder = _fragFolder;
+}
+
+string CloudFileSystem::fragFolder = "";
+
 // Not working as we planned, maybe should be rethinked
 void CloudFileSystem::setComputeOnPi(bool computeOnPi){
 	LOG_ENTER_EXIT;
diff --git a/program/Source/dataAccess/CloudFileSystem.h b/program/Source/dataAccess/CloudFileSystem.h
index bb410b0c..be828a81 100644
--- a/program/Source/dataAccess/CloudFileSystem.h
+++ b/program/Source/dataAccess/CloudFileSystem.h
@@ -15,6 +15,8 @@
 #include "../networking/HomeNetworkCommunications.h"
 #include "Cache.h"
 #include "CloudFileList.h"
+#include "../dataAccess/Encoder.h"
+#include "../dataAccess/Decoder.h"
 
 class Application;
 
@@ -25,7 +27,7 @@ class Application;
  * It handles mutexes, cache usage and directories.
  */
 class CloudFileSystem {
-	std::string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\";
+	static std::string fragFolder;
 
 	/** 
 	 * Indicates where is the process running
@@ -55,8 +57,16 @@ class CloudFileSystem {
 	Cache *cache;
 
 	CloudFileList cfl;
+
+	Encoder* encoder;
+	Decoder* decoder;
 public: 
 
+	Encoder* getEncoder();
+	Decoder* getDecoder();
+
+	void setFolders(std::string _fragFolder);
+
 	static CloudFileSystem& getInstance();
 	/*{
 		static CloudFileSystem instance;
diff --git a/program/Source/dataAccess/Decoder.cpp b/program/Source/dataAccess/Decoder.cpp
index 27ecadd5..3dffc8e6 100644
--- a/program/Source/dataAccess/Decoder.cpp
+++ b/program/Source/dataAccess/Decoder.cpp
@@ -14,10 +14,20 @@ using namespace std;
  * Decoder implementation
  */
 
+void Decoder::setFolders(string _dataFolder, string _fragFolder){
+	dataFolder = _dataFolder;
+	fragFolder = _fragFolder;
+}
+
+string Decoder::dataFolder = "";
+string Decoder::fragFolder = "";
+
 string Decoder::decode(FileDescriptor* fileDescriptor)
 {
-	string dataFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\data\\";
-	string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\";
+	if (dataFolder == "" || fragFolder == "") {
+		cout << "Error: folders not set." << endl;
+		return NULL;
+	}
 
 	LOG_ENTER_EXIT;
 	if (fileDescriptor == nullptr)
diff --git a/program/Source/dataAccess/Decoder.h b/program/Source/dataAccess/Decoder.h
index cd4f0388..712a72ac 100644
--- a/program/Source/dataAccess/Decoder.h
+++ b/program/Source/dataAccess/Decoder.h
@@ -9,8 +9,11 @@
  * it uses an external library
  */
 class Decoder {
-public: 
-	
+	static std::string dataFolder;
+	static std::string fragFolder;
+public:
+	void setFolders(std::string _dataFolder, std::string _fragFolder);
+		
 	/**
 	 * decodes the fragments to a file 
 	 * @param fileDescriptor descriptor of the file to decode
diff --git a/program/Source/dataAccess/Encoder.cpp b/program/Source/dataAccess/Encoder.cpp
index c942ba92..2907d1bf 100644
--- a/program/Source/dataAccess/Encoder.cpp
+++ b/program/Source/dataAccess/Encoder.cpp
@@ -17,10 +17,20 @@ using namespace boost;
 using namespace filesystem;
 using namespace std;
 
+void Encoder::setFolders(string _dataFolder, string _fragFolder){
+	dataFolder = _dataFolder;
+	fragFolder = _fragFolder;
+}
+
+string Encoder::dataFolder = "";
+string Encoder::fragFolder = "";
+
 FileDescriptor* Encoder::encode(string localFileID, string destinationFileID) {
 	LOG_ENTER_EXIT;
-	string dataFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\data\\";
-	string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\";
+	if (dataFolder == "" || fragFolder == "") {
+		cout << "Error: folders not set." << endl;
+		return NULL;
+	}
 
 	string encode_filename = dataFolder + localFileID;
 
diff --git a/program/Source/dataAccess/Encoder.h b/program/Source/dataAccess/Encoder.h
index 8c5a4dda..d8625309 100644
--- a/program/Source/dataAccess/Encoder.h
+++ b/program/Source/dataAccess/Encoder.h
@@ -10,8 +10,11 @@
  * it uses an external library
  */
 class Encoder {
-public: 
-	
+	static std::string dataFolder;
+	static std::string fragFolder;
+public: 	
+	void setFolders(std::string _dataFolder, std::string _fragFolder);
+
 	/**
 	 * encodes the file to fragments
 	 * @param localFileID id of the file to encode
-- 
GitLab