コード例 #1
0
	void helper::init_jvm(JNIEnv* &jnienv, JavaVM* &javavm)
	{
		JavaVMInitArgs vm_args;

		//set $CLASSPATH
		std::string op_str = "-Djava.class.path=";
		op_str += getenv("CLASSPATH");

		op_str += ":";
		op_str += getenv("SAGA_LOCATION");
		op_str += "/share/sra/classes";

		JavaVMOption options[1];
		options[0].optionString = const_cast<char *>(op_str.c_str());
		vm_args.version = JNI_VERSION_1_6;
		vm_args.options = options;
		vm_args.nOptions = 1;
		vm_args.ignoreUnrecognized = true;

		SAGA_LOG_CRITICAL("Java VM generate\n");

		int result = JNI_CreateJavaVM(&javavm, (void **)&jnienv, &vm_args);
		SAGA_LOG_CRITICAL("helper:: create jvm \n");

		if(result != 0){
			std::string str_buf = "init_jvm:" + result?"true":"false";
			SAGA_LOG_CRITICAL(str_buf.c_str());
			SAGA_LOG_CRITICAL("   jvm is already created. ");
		}
	}
コード例 #2
0
std::vector <std::string> irods_dir::list(const std::string& irods_url, std::string pattern, int flags)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_dir::list");
    SAGA_LOG_CRITICAL("-------------- list entries -----------------\n");
    SAGA_LOG_CRITICAL("-------------- list entries (data) -----------------\n");

    std::string sql_str_data = "\"SELECT DATA_NAME  WHERE COLL_NAME = ";
    sql_str_data += "'" + irods_url + "'";
    sql_str_data += "\"";

    char* c_sql_data = const_cast<char*>(sql_str_data.c_str());
//		std::cout << "c_sql_data:" << c_sql_data << std::endl;

    int argc = 2;
    char *argv[2] = {"iquest", c_sql_data};
    std::vector <std::string> results_data;
//		std::vector <irdEnt_t*> irds_data;
    std::vector <irdEnt_t> irds_data;
    irds_data = icmd.iquest(argc, argv);

    for ( unsigned int i = 0; i < irds_data.size (); i++ )
    {
//			results_data.push_back(irds_data[i]->dataName);
        results_data.push_back(irds_data[i].dataName);
    }


    SAGA_LOG_CRITICAL("-------------- list entries (coll) -----------------\n");

    std::string sql_str_coll = "\"SELECT COLL_NAME  WHERE COLL_NAME like ";
    sql_str_coll += "'" + irods_url + "/%'";
    sql_str_coll += " AND COLL_NAME not like ";
    sql_str_coll += "'" + irods_url + "/%/%'";
    sql_str_coll += "\"";

    char* c_sql_coll = const_cast<char*>(sql_str_coll.c_str());
//		std::cout << "c_sql_coll:" << c_sql_coll << std::endl;

    int argc2 = 2;
    char *argv2[2] = {"iquest", c_sql_coll};
    std::vector <std::string> results_coll;
//		std::vector <irdEnt_t*> irds_coll;
    std::vector <irdEnt_t> irds_coll;
    irds_coll = icmd.iquest(argc2, argv2);

    for ( unsigned int i = 0; i < irds_coll.size (); i++ )
    {
//			boost::filesystem::path i_path(irds_coll[i]->collName);
        boost::filesystem::path i_path(irds_coll[i].collName);
        results_coll.push_back(i_path.leaf());
    }

    std::vector <std::string> results;
    results = results_data;
    results.insert(results.end(), results_coll.begin(), results_coll.end());

    return results;

}
コード例 #3
0
bool irods_dir::exists(const std::string& check_url)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_dir::exists");

    SAGA_LOG_CRITICAL("-------------- check exists -----------------\n");
    SAGA_LOG_CRITICAL("-------------- check exists (data) -----------------\n");

    bool check = false;

    boost::filesystem::path check_url_org(check_url);
    std::string check_name = check_url_org.leaf();
    std::string check_url_bpath = check_url_org.branch_path().string();

    std::string sql_str_data = "\"SELECT DATA_NAME, COLL_NAME WHERE COLL_NAME = ";
    sql_str_data += "'" + check_url_bpath + "'";
    sql_str_data += " AND DATA_NAME = ";
    sql_str_data += "'" + check_name + "'";
    sql_str_data += "\"";

    char* c_sql_data = const_cast<char*>(sql_str_data.c_str());
//		std::cout << "c_sql_data:" << c_sql_data << std::endl;

    int argc = 2;
    char *argv[2] = {"iquest", c_sql_data};
//		std::vector <irdEnt_t*> irds_data;
    std::vector <irdEnt_t> irds_data;
    irds_data = icmd.iquest(argc, argv);

    if (irds_data.size() > 0) {
        check = true;
    }

    SAGA_LOG_CRITICAL("-------------- check exists (coll) -----------------\n");

    std::string sql_str_coll = "\"SELECT COLL_NAME WHERE COLL_NAME = ";
    sql_str_coll += "'" + check_url + "'";
    sql_str_coll += "\"";

    char* c_sql_coll = const_cast<char*>(sql_str_coll.c_str());
//		std::cout << "c_sql_coll:" << c_sql_coll << std::endl;

    int argc2 = 2;
    char *argv2[2] = {"iquest", c_sql_coll};
//		std::vector <irdEnt_t*> irds_coll;
    std::vector <irdEnt_t> irds_coll;
    irds_coll = icmd.iquest(argc2, argv2);

    if (irds_coll.size() > 0) {
        check = true;
    }

    return check;
}
コード例 #4
0
void logical_directory_cpi_impl::sync_exists(bool& exists, saga::url url)
{
//    SAGA_ADAPTOR_THROW ("Not implemented! sync_exists", saga::NotImplemented);
	SAGA_LOG_DEBUG("sync_exists()");
	check_state();

	saga::url irods_url_org;
	this->sync_get_cwd(irods_url_org); // to get rid of the /. at the end...
	std::string irods_path = irods_url_org.get_path();

	std::string check_path;
	boost::filesystem::path i_path(url.get_path());
	if (i_path.has_root_path()){
		check_path = url.get_path();
	}
	else {
		check_path = irods_url_org.get_path() + "/" + url.get_path();
	}

	// to get rid of the / at the end the check_path
	if (check_path.substr(check_path.size()-1,1) == "/"){
		check_path.erase(check_path.size()-1);
//		std::cout << "check_path.erased:" << check_path << std::endl;
	}

	try {
		exists  = irdsdir.exists(check_path);
                std::string str_buf = "check_path:" + check_path;
                SAGA_LOG_CRITICAL(str_buf.c_str());
	}
	catch (boost::system::system_error const& e) {
		SAGA_ADAPTOR_THROW(e.what(), saga::NoSuccess);
	}
}
コード例 #5
0
void irods_dir::meta(const std::string& meta_url,
                     const std::string& meta_cmd, const std::string& meta_opt,
                     const std::string& meta_key, const std::string& meta_val)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_file::meta");

    SAGA_LOG_CRITICAL("-------------- col metadata -----------------\n");

    // remove the '/' at the end of the pathname
    std::string col_path = meta_url;
    if (col_path.rfind('/') == col_path.size()-1) {
        col_path.erase(col_path.rfind('/'));
    }

    char* c_meta_url = const_cast<char*>(col_path.c_str());
    char* c_meta_cmd = const_cast<char*>(meta_cmd.c_str());
    char* c_meta_opt = const_cast<char*>(meta_opt.c_str());
    char* c_meta_key = const_cast<char*>(meta_key.c_str());
    char* c_meta_val = const_cast<char*>(meta_val.c_str());
//		std::cout << "c_meta_url=" << c_meta_url << std::endl;
//		std::cout << "c_meta_cmd=" << c_meta_cmd << std::endl;
//		std::cout << "c_meta_opt=" << c_meta_opt << std::endl;
//		std::cout << "c_meta_key=" << c_meta_key << std::endl;
//		std::cout << "c_meta_val=" << c_meta_val << std::endl;

    int argc = 6;
//		char *argv[6] = {"imeta", "ls", "-d", "hoge.txt", test_attr1, value1};
    char *argv[6] = {"imeta", c_meta_cmd, c_meta_opt, c_meta_url, c_meta_key, c_meta_val};
    icmd.imeta(argc, argv);
}
コード例 #6
0
saga::off_t irods_dir::get_size(const std::string& check_url)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_dir::get_size");

    SAGA_LOG_CRITICAL("-------------- dir, get_size -----------------\n");

    saga::off_t data_size = 0;

    std::string sql_str_coll = "\"SELECT sum(DATA_SIZE) WHERE COLL_NAME = ";
    sql_str_coll += "'" + check_url + "'";
    sql_str_coll += "\"";

    char* c_sql_coll = const_cast<char*>(sql_str_coll.c_str());
    std::cout << "c_sql_data:" << c_sql_coll << std::endl;

    int argc = 2;
    char *argv[2] = {"iquest", c_sql_coll};
//		std::vector <irdEnt_t*> irds_coll;
    std::vector <irdEnt_t> irds_coll;
    irds_coll = icmd.iquest(argc, argv);

    if (irds_coll.size() == 1) {
//			data_size = irds_coll[0]->dataSize;
        data_size = irds_coll[0].dataSize;
    }
    else {
        data_size = 0;
    }

    return data_size;

}
コード例 #7
0
	void irods_file::meta(const std::string& meta_url,
			const std::string& meta_cmd, const std::string& meta_opt,
			const std::string& meta_key, const std::string& meta_val)
	{
		SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_file::meta");

		SAGA_LOG_CRITICAL("-------------- metadata -----------------\n");

		char* c_meta_url = const_cast<char*>(meta_url.c_str());
		char* c_meta_cmd = const_cast<char*>(meta_cmd.c_str());
		char* c_meta_opt = const_cast<char*>(meta_opt.c_str());
		char* c_meta_key = const_cast<char*>(meta_key.c_str());
		char* c_meta_val = const_cast<char*>(meta_val.c_str());
//		std::cout << "c_meta_url=" << c_meta_url << std::endl;
//		std::cout << "c_meta_cmd=" << c_meta_cmd << std::endl;
//		std::cout << "c_meta_opt=" << c_meta_opt << std::endl;
//		std::cout << "c_meta_key=" << c_meta_key << std::endl;
//		std::cout << "c_meta_val=" << c_meta_val << std::endl;

//		SAGA_LOG_CRITICAL("c_meta_url=%s \n", c_meta_url);
//		SAGA_LOG_CRITICAL("c_meta_cmd=%s \n", c_meta_cmd);
//		SAGA_LOG_CRITICAL("c_meta_opt=%s \n", c_meta_opt);
//		SAGA_LOG_CRITICAL("c_meta_key=%s \n", c_meta_key);
//		SAGA_LOG_CRITICAL("c_meta_val=%s \n", c_meta_val);

		int argc = 6;
//		char *argv[6] = {"imeta", "ls", "-d", "hoge.txt", test_attr1, value1};
		char *argv[6] = {"imeta", c_meta_cmd, c_meta_opt, c_meta_url, c_meta_key, c_meta_val};
		icmd.imeta(argc, argv);
	}
コード例 #8
0
void irods_dir::open(const std::string& irods_url, int flags)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_dir::open");

    SAGA_LOG_CRITICAL("-------------- create entry (open) -----------------\n");

    // Create an empty file as dummy
    char emp_f[256] = "/tmp/sia-empty-dummy-file";
//		char emp_f[256] = "irods2.4.tgz_0";
    FILE *fp;
    fp = fopen(emp_f, "w");
    fclose(fp);

//		system("ls /tmp");
//		sleep(1);

    char* c_url = const_cast<char*>(irods_url.c_str());
    std::cout << "c_url:" << c_url << std::endl;
    std::cout << "emp_f:" << emp_f << std::endl;

    int argc = 3;
    char *argv[3] = {"iput", emp_f, c_url};
    icmd.iput(argc, argv);

}
コード例 #9
0
	std::string irods_file::meta_get_val(const std::string& meta_url, const std::string& attrName)
	{
		SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_file::meta");

		SAGA_LOG_CRITICAL("-------------- file metadata get_val -----------------\n");

		boost::filesystem::path meta_url_org(meta_url);
		std::string meta_name = meta_url_org.leaf();
		std::string meta_url_bpath = meta_url_org.branch_path().string();

		std::string sql_str_data = "\"SELECT META_DATA_ATTR_NAME, META_DATA_ATTR_VALUE WHERE COLL_NAME = ";
		sql_str_data += "'" + meta_url_bpath + "'";
		sql_str_data += " AND DATA_NAME = ";
		sql_str_data += "'" + meta_name + "'";
		sql_str_data += " AND META_DATA_ATTR_NAME = ";
		sql_str_data += "'" + attrName + "'";
		sql_str_data += "\"";

		char* c_sql_data = const_cast<char*>(sql_str_data.c_str());
//		std::cout << "c_sql_data:" << c_sql_data << std::endl;

		int argc = 2;
		char *argv[2] = {"iquest", c_sql_data};
		std::vector <std::string> results;
		std::vector <irdEnt_t> irds_meta;
		irds_meta = icmd.iquest(argc, argv);

		std::string val;
		val = irds_meta[0].metaDataVal;
//		std::cout << "val:" << val << std::endl;

		return val;
	}
コード例 #10
0
	bool irods_file::meta_attr_exists(const std::string& meta_url, const std::string& attrName)
	{
		SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_dir::exists");

		SAGA_LOG_CRITICAL("-------------- file metadata attr_exists -----------------\n");

		bool check = false;

		boost::filesystem::path meta_url_org(meta_url);
		std::string meta_name = meta_url_org.leaf();
		std::string meta_url_bpath = meta_url_org.branch_path().string();

		std::string sql_str_data = "\"SELECT META_DATA_ATTR_NAME, META_DATA_ATTR_VALUE WHERE COLL_NAME = ";
		sql_str_data += "'" + meta_url_bpath + "'";
		sql_str_data += " AND DATA_NAME = ";
		sql_str_data += "'" + meta_name + "'";
		sql_str_data += " AND META_DATA_ATTR_NAME = ";
		sql_str_data += "'" + attrName + "'";
		sql_str_data += "\"";

		char* c_sql_data = const_cast<char*>(sql_str_data.c_str());
//		std::cout << "c_sql_data:" << c_sql_data << std::endl;

		int argc = 2;
		char *argv[2] = {"iquest", c_sql_data};
		std::vector <std::string> results;
		std::vector <irdEnt_t> irds_meta;
		irds_meta = icmd.iquest(argc, argv);

		if (irds_meta.size() > 0){
			check = true;
		}

		return check;
	}
コード例 #11
0
bool irods_dir::is_dir(const std::string& check_url)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_dir::is_dir");

    SAGA_LOG_CRITICAL("-------------- check is_dir -----------------\n");

    bool check = false;

    std::string sql_str_coll = "\"SELECT COLL_NAME WHERE COLL_NAME = ";
    sql_str_coll += "'" + check_url + "'";
    sql_str_coll += "\"";

    char* c_sql_coll = const_cast<char*>(sql_str_coll.c_str());
//		std::cout << "c_sql_coll:" << c_sql_coll << std::endl;

    int argc = 2;
    char *argv[2] = {"iquest", c_sql_coll};
//		std::vector <irdEnt_t*> irds_coll;
    std::vector <irdEnt_t> irds_coll;
    irds_coll = icmd.iquest(argc, argv);

    if (irds_coll.size() > 0) {
        check = true;
    }
    else {
        check = false;
    }

    return check;
}
コード例 #12
0
std::vector <std::string>  irods_dir::find_attr(const std::string& meta_url, const std::string& attr_pattern)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_dir::find_attr");

    SAGA_LOG_CRITICAL("-------------- coll metadata find_attr -----------------\n");

    // Replace wildcard chars
    std::string attr_pattern_buf0 = boost::regex_replace(attr_pattern, boost::regex("[%_]"), "\\\\$0");
    std::string attr_pattern_buf1 = boost::regex_replace(attr_pattern_buf0, boost::regex("[*]"), "%");
    std::string attr_pattern_sql = boost::regex_replace(attr_pattern_buf1, boost::regex("[?]"), "_");

    std::string sql_str_data = "\"SELECT META_COLL_ATTR_NAME, META_COLL_ATTR_VALUE WHERE COLL_NAME = ";
    sql_str_data += "'" + meta_url + "'";
    sql_str_data += " AND META_COLL_ATTR_NAME like ";
    sql_str_data += "'" + attr_pattern_sql + "'";
    sql_str_data += "\"";

    char* c_sql_data = const_cast<char*>(sql_str_data.c_str());
//		std::cout << "c_sql_data:" << c_sql_data << std::endl;

    int argc = 2;
    char *argv[2] = {"iquest", c_sql_data};
    std::vector <std::string> results;
    std::vector <irdEnt_t> irds_meta;
    irds_meta = icmd.iquest(argc, argv);

    for ( unsigned int i = 0; i < irds_meta.size (); i++ )
    {
        results.push_back(irds_meta[i].metaCollAttr);
    }

    return results;
}
コード例 #13
0
bool irods_dir::is_link(const std::string& check_url)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_dir::is_link");

    SAGA_LOG_CRITICAL("-------------- check is_link -----------------\n");

    bool check = false;	// current iRODS v2.2 does not support link.

    return check;
}
コード例 #14
0
void irods_dir::remove(const std::string& irods_url, int flags)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_dir::remove");
    SAGA_LOG_CRITICAL("-------------- remove file -----------------\n");

    char* c_url = const_cast<char*>(irods_url.c_str());

    int argc = 3;
    char *argv[3] = {"irm", "-rf", c_url};
    icmd.irm(argc, argv);
}
コード例 #15
0
void irods_dir::change_dir(const std::string& irods_url)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_dir::change_dir");
    SAGA_LOG_CRITICAL("-------------- change directory -----------------\n");

    char* c_url = const_cast<char*>(irods_url.c_str());

    int argc = 2;
    char *argv[2] = {"icd", c_url};
    icmd.icd(argc, argv);
}
コード例 #16
0
	jclass helper::search_class(JNIEnv* &jnienv, std::string class_path, std::string class_name)
	{
		SAGA_LOG_CRITICAL("helper:: searching class \n");
		class_path += class_name;
		jclass cls = jnienv->FindClass(class_path.c_str());
		if(cls == 0){
			printf("failed to find class \n");
			exit(-1);
		}

		return cls;
	}
コード例 #17
0
	void helper::destroy_jvm(JavaVM* &javavm)
	{
		// destroy JVM
		int result = javavm->DestroyJavaVM();
		if(result){
			printf("Failed to destroy jvm \n");
			exit(-1);
		}
		else {
			SAGA_LOG_CRITICAL("Safely destroyed jvm \n");
		}
	}
コード例 #18
0
void irods_dir::open_dir(const std::string& irods_url, int flags)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_dir::open_dir");

    SAGA_LOG_CRITICAL("-------------- create directory (open_dir) -----------------\n");

    char* c_url = const_cast<char*>(irods_url.c_str());

    int argc = 3;
    char *argv[3] = {"imkdir", "-p", c_url};
    icmd.imkdir(argc, argv);

}
コード例 #19
0
	int helper::detach_jvm(JavaVM* &javavm)
	{
		// detach JVM
		int result = javavm->DetachCurrentThread();
		if(result){
			printf("Failed to detach the thread from jvm \n");
		}
		else {
			SAGA_LOG_CRITICAL("Safely detached the thread from jvm \n");
		}

		return result;
	}
コード例 #20
0
void irods_dir::move(const std::string& irods_url_src,
                     const std::string& irods_url_tar, int flags)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_dir::move");
    SAGA_LOG_CRITICAL("-------------- move file -----------------\n");

    char* src_c_url = const_cast<char*>(irods_url_src.c_str());
    char* tar_c_url = const_cast<char*>(irods_url_tar.c_str());

    int argc = 3;
    char *argv[3] = {"imv", src_c_url, tar_c_url};
    icmd.imv(argc, argv);
}
コード例 #21
0
void irods_dir::copy(const std::string& irods_url_src,
                     const std::string& irods_url_tar, int flags)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_dir::copy");
    SAGA_LOG_CRITICAL("-------------- copy file -----------------\n");

    char* src_c_url = const_cast<char*>(irods_url_src.c_str());
    char* tar_c_url = const_cast<char*>(irods_url_tar.c_str());

    int argc = 4;
    char *argv[4] = {"icp", "-r", src_c_url, tar_c_url};
    icmd.icp(argc, argv);
}
コード例 #22
0
std::string irods_dir::get_entry(const std::string& irods_url, std::size_t entry)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_dir::get_num_entries");

    SAGA_LOG_CRITICAL("-------------- get entry -----------------\n");

    std::string pattern;
    int flags; //dummy

    std::vector <std::string> entry_list;
    entry_list = this->list(irods_url, pattern, flags);

    return entry_list[entry];
}
コード例 #23
0
void logical_directory_cpi_impl::sync_close(saga::impl::void_t&, double)
{
//	SAGA_ADAPTOR_THROW ("Not implemented! sync_close", saga::NotImplemented);
	SAGA_LOG_DEBUG("sync_close()");
	check_state();

	if (is_opened) {
	  is_opened = false;
	  SAGA_LOG_CRITICAL("file is closed \n");
	}
	else {
	  SAGA_LOG_DEBUG("this instance was already closed.");
	}
}
コード例 #24
0
  void dir_cpi_impl::sync_open (saga::filesystem::file & ret,
                                saga::url                name,
                                int                      openmode)
  {
//    SAGA_ADAPTOR_THROW ("Not Implemented", saga::NotImplemented);

	SAGA_LOG_DEBUG("dir, sync_open()");
	check_state();

	SAGA_LOG_CRITICAL("call namespace, dir, sync_open()");

	saga::url irods_url_org;
	this->sync_get_cwd(irods_url_org); // to get rid of the /. at the end...

	std::string str_buf = "irods_url_org: " + irods_url_org.get_string();
	SAGA_LOG_CRITICAL(str_buf.c_str());


	std::string irods_path;
	boost::filesystem::path i_path(name.get_path());
	if (i_path.has_root_path()){
		irods_path = name.get_path();
	}
	else {
		irods_path = irods_url_org.get_path() + "/" + name.get_path();
	}

	saga::url open_url;
	this->sync_get_cwd(open_url); // to get rid of the /. at the end...
	open_url.set_path(irods_path);

	str_buf = "open_url: " + open_url.get_string();
	SAGA_LOG_CRITICAL(str_buf.c_str());

	saga::filesystem::file file(open_url, openmode);
	ret = file;
  }
コード例 #25
0
std::vector<std::string> irods_dir::meta_list_attr(const std::string& meta_url)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_file::meta");

    SAGA_LOG_CRITICAL("-------------- col metadata list_attr -----------------\n");

    boost::filesystem::path meta_url_org(meta_url);
    std::string meta_name = meta_url_org.leaf();
    std::string meta_url_bpath = meta_url_org.branch_path().string();

    std::string sql_str_data = "\"SELECT META_COLL_ATTR_NAME WHERE COLL_NAME = ";
    sql_str_data += "'" + meta_url_bpath + "'";
    sql_str_data += "\"";

    char* c_sql_data = const_cast<char*>(sql_str_data.c_str());
//		std::cout << "c_sql_data:" << c_sql_data << std::endl;

    int argc = 2;
    char *argv[2] = {"iquest", c_sql_data};
    std::vector <std::string> keys;
    std::vector <irdEnt_t> irds_meta;
    irds_meta = icmd.iquest(argc, argv);

    for ( unsigned int i = 0; i < irds_meta.size (); i++ )
    {
        std::string result_buf;
        result_buf = irds_meta[i].metaCollAttr;
        keys.push_back(result_buf);
    }


    return keys;

//	    // remove the '/' at the end of the pathname
//		std::string col_path = meta_url;
//		if (col_path.rfind('/') == col_path.size()-1){
//			col_path.erase(col_path.rfind('/'));
//		}
//
//		char* c_meta_url = const_cast<char*>(col_path.c_str());
////		std::cout << "c_meta_url=" << c_meta_url << std::endl;
//
//		std::vector<std::string> keys;
//		keys = icmd.imeta_list_attr(c_meta_url, COL_COLL_NAME);
//
//		return keys;
}
コード例 #26
0
std::string irods_dir::meta_get_val(const std::string& meta_url, const std::string& attrName)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_file::meta");

    SAGA_LOG_CRITICAL("-------------- col metadata get_val -----------------\n");

    boost::filesystem::path meta_url_org(meta_url);
    std::string meta_name = meta_url_org.leaf();
    std::string meta_url_bpath = meta_url_org.branch_path().string();

    std::string sql_str_data = "\"SELECT META_COLL_ATTR_NAME, META_COLL_ATTR_VALUE WHERE COLL_NAME = ";
    sql_str_data += "'" + meta_url_bpath + "'";
    sql_str_data += " AND META_COLL_ATTR_NAME = ";
    sql_str_data += "'" + attrName + "'";
    sql_str_data += "\"";

    char* c_sql_data = const_cast<char*>(sql_str_data.c_str());
    std::cout << "c_sql_data:" << c_sql_data << std::endl;

    int argc = 2;
    char *argv[2] = {"iquest", c_sql_data};
    std::vector <std::string> results;
    std::vector <irdEnt_t> irds_meta;
    irds_meta = icmd.iquest(argc, argv);

    std::string val;
    val = irds_meta[0].metaCollVal;
    std::cout << "val:" << val << std::endl;

    return val;

//	    // remove the '/' at the end of the pathname
//		std::string col_path = meta_url;
//		if (col_path.rfind('/') == col_path.size()-1){
//			col_path.erase(col_path.rfind('/'));
//		}
//
//		char* c_meta_url = const_cast<char*>(col_path.c_str());
//		char* c_attrName = const_cast<char*>(attrName.c_str());
////		std::cout << "c_meta_url=" << c_meta_url << std::endl;
////		std::cout << "c_attrName=" << c_attrName << std::endl;
//
//		std::string val;
//		val = icmd.imeta_get_val(c_meta_url, c_attrName, COL_COLL_NAME);
//
//		return val;
}
コード例 #27
0
void logical_directory_cpi_impl::sync_is_entry(bool& is_entry, saga::url url)
{
//    SAGA_ADAPTOR_THROW ("Not implemented! sync_is_entry", saga::NotImplemented);

	SAGA_LOG_CRITICAL("call namespace, dir, sync_is_entry()");

	SAGA_LOG_DEBUG("sync_is_entry()");
	check_state();

	saga::url irods_url_org;
	this->sync_get_cwd(irods_url_org); // to get rid of the /. at the end...
	std::string irods_path = irods_url_org.get_path();

	std::string check_path;
	boost::filesystem::path i_path(url.get_path());
	if (i_path.has_root_path()){
		check_path = url.get_path();
	}
	else {
		check_path = irods_url_org.get_path() + "/" + url.get_path();
	}

	// to get rid of the / at the end the check_path
	if (check_path.substr(check_path.size()-1,1) == "/"){
		check_path.erase(check_path.size()-1);
	}

	bool exists = false;
	try {
		exists  = irdsdir.exists(check_path);
	}
	catch (boost::system::system_error const& e) {
		SAGA_ADAPTOR_THROW(e.what(), saga::NoSuccess);
	}

	if (!exists){
		SAGA_ADAPTOR_THROW ("The specified entry does not exist. ", saga::DoesNotExist);
	}

	try {
		is_entry  = irdsdir.is_entry(check_path);
	}
	catch (boost::system::system_error const& e) {
		SAGA_ADAPTOR_THROW(e.what(), saga::NoSuccess);
	}
}
コード例 #28
0
	std::size_t irods_file::write(const std::string& write_url, char *buf, std::size_t size, off_t offset, int seek_mode)
	{
		SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_file::write");

		SAGA_LOG_CRITICAL("--------------write file -----------------\n");

		char* c_write_data = const_cast<char*>(write_url.c_str());

//		std::cout << "c_write_data=" << c_write_data << std::endl;
//		std::cout << "size=" << size << std::endl;
//		std::cout << "offset=" << offset << std::endl;
//		std::cout << "seek_mode=" << seek_mode << std::endl;

		icmd.iwrite(c_write_data, buf, size, offset, seek_mode);

		return size;
//		return BUFSIZE;
	}
コード例 #29
0
void irods_dir::make_dir(const std::string& irods_url, int flags)
{
    SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_dir::make_dir");

    SAGA_LOG_CRITICAL("-------------- make directory -----------------\n");

    char* c_url = const_cast<char*>(irods_url.c_str());

    int argc;
    if(flags == saga::name_space::CreateParents) {
        argc = 3;
        char *argv[3] = {"imkdir", "-p", c_url};
        icmd.imkdir(argc, argv);
    }
    else {
        argc = 2;
        char *argv2[2] = {"imkdir", c_url};
        icmd.imkdir(argc, argv2);
    }

}
コード例 #30
0
	saga::off_t irods_file::get_size(const std::string& check_url)
	{
		SAGA_LOG_DEBUG("irods_file_adaptor::api::irods_file::get_size");

		SAGA_LOG_CRITICAL("-------------- get_size -----------------\n");

		saga::off_t data_size = 0;

		boost::filesystem::path check_url_org(check_url);
		std::string check_name = check_url_org.leaf();
		std::string check_url_bpath = check_url_org.branch_path().string();

		std::string sql_str_data = "\"SELECT DATA_NAME, DATA_SIZE WHERE COLL_NAME = ";
		sql_str_data += "'" + check_url_bpath + "'";
		sql_str_data += " AND DATA_NAME = ";
		sql_str_data += "'" + check_name + "'";
		sql_str_data += "\"";

		char* c_sql_data = const_cast<char*>(sql_str_data.c_str());
//		std::cout << "c_sql_data:" << c_sql_data << std::endl;

		int argc = 2;
		char *argv[2] = {"iquest", c_sql_data};
//		std::vector <irdEnt_t*> irds_data;
		std::vector <irdEnt_t> irds_data;
		irds_data = icmd.iquest(argc, argv);

		if (irds_data.size() == 1){
//			data_size = irds_data[0]->dataSize;
			data_size = irds_data[0].dataSize;
		}
		else {
			data_size = 0;
		}

		return data_size;

	}