/// <summary> /// Get a single child by name /// </summary> /// @param [in] name -- name of child. If name is "..", it gets parent. If name is ".", return itself </param> private SqlFsNode __getChild(string name) { SqlFsNode fsNode = null; if (name.Equals(SqlFsConst.CURDIR)) { fsNode = this; // current dir } else if (name.Equals(SqlFsConst.PARENTDIR)) { // parent or itself if already root fsNode = (this.ID.Equals(SqlFsConst.ROOTDIRID) ? this : this.Parent); } else { Cursor c = getEntryByName(name, SqlFsConst.FSTYPE.ANY); if (c != null) { c.moveToFirst(); fsNode = SqlFsNode.getFsNode(db, fsLocker, c); c.close(); } else { SqlFsErrCode.CurrentError = SqlFsErrCode.FsErr.NoEntryByName; } } return(fsNode); }
//////////////////////////FS operations /////////////////////////////////// /// @param [in] id -- get entry using ID directly </param> internal static SqlFsNode getFsNodeByID(SQLiteDatabase db, SqlFsLocker fsLocker, FsID id) { SqlFsNode fsNode = null; string @where = SqlStr.genWhere(new SqlStr.SqlSimpCond(SqlFs.FSBLOCK.fsID.ToString(), "=", id)); Cursor c = null; try { c = db.query(SqlFs.DBNAMES.FsBlock.ToString(), new string[] { SqlFs.FSBLOCK.fsID.ToString(), SqlFs.FSBLOCK.fsType.ToString() }, @where, null, null, null, null); if (c.moveToFirst()) { fsNode = SqlFsNode.getFsNode(db, fsLocker, c); } } catch (Exception e) { SqlFsLog.debug(e); SqlFsErrCode.CurrentError = FsErr.GetFieldError; } finally { SqlFsFunc.close(c); } return(fsNode); }
/// <summary> /// Get a list of children (dirs and files) /// </summary> private List <SqlFsNode> __getChildList() { List <SqlFsNode> childList = null; Cursor c = getEntryByName(null, SqlFsConst.FSTYPE.ANY); if (c != null) { c.moveToFirst(); childList = new List <SqlFsNode>(c.Count); do { SqlFsNode fsNode = SqlFsNode.getFsNode(db, fsLocker, c); if (fsNode != null) { childList.Add(fsNode); } } while (c.moveToNext()); c.close(); } return(childList); }