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. "); } }
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; }
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; }
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); } }
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); }
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; }
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); }
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); }
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; }
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; }
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; }
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; }
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; }
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); }
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); }
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; }
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"); } }
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); }
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; }
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); }
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); }
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]; }
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."); } }
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; }
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; }
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; }
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); } }
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; }
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); } }
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; }