Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
jio_mebibou
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Alexandra Rogova
jio_mebibou
Commits
cf955906
Commit
cf955906
authored
Jan 10, 2013
by
Sven Franck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
jslint pass indexstorage.js
parent
6e6d67b7
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
220 additions
and
201 deletions
+220
-201
src/jio.storage/indexstorage.js
src/jio.storage/indexstorage.js
+220
-201
No files found.
src/jio.storage/indexstorage.js
View file @
cf955906
jIO
.
addStorageType
(
'
indexed
'
,
function
(
spec
,
my
)
{
spec
=
spec
||
{};
var
that
=
my
.
basicStorage
(
spec
,
my
),
priv
=
{};
var
validatestate_sub_storage
=
spec
.
storage
||
false
;
priv
.
sub_storage_spec
=
spec
.
storage
||
{
type
:
'
base
'
};
priv
.
sub_storage_string
=
JSON
.
stringify
(
priv
.
sub_storage_spec
);
var
storage_object_name
=
'
jio/indexed_storage_object
'
;
var
storage_file_object_name
=
'
jio/indexed_file_object/
'
+
priv
.
sub_storage_string
;
var
super_serialized
=
that
.
serialized
;
that
.
serialized
=
function
()
{
var
o
=
super_serialized
();
o
.
storage
=
priv
.
sub_storage_spec
;
return
o
;
};
that
.
validateState
=
function
()
{
if
(
!
validatestate_sub_storage
)
{
return
'
Need at least one parameter: "storage"
'
+
'
containing storage specifications.
'
;
}
/*jslint indent: 2, maxlen: 80, sloppy: true, nomen: true */
/*global jIO: true, localStorage: true, setTimeout: true */
jIO
.
addStorageType
(
'
indexed
'
,
function
(
spec
,
my
)
{
spec
=
spec
||
{};
var
that
=
my
.
basicStorage
(
spec
,
my
),
priv
=
{},
validatestate_sub_storage
=
spec
.
storage
||
false
,
storage_object_name
=
'
jio/indexed_storage_object
'
,
storage_file_object_name
,
super_serialized
=
that
.
serialized
;
priv
.
sub_storage_spec
=
spec
.
storage
||
{
type
:
'
base
'
};
priv
.
sub_storage_string
=
JSON
.
stringify
(
priv
.
sub_storage_spec
);
storage_file_object_name
=
'
jio/indexed_file_object/
'
+
priv
.
sub_storage_string
;
that
.
serialized
=
function
()
{
var
o
=
super_serialized
();
o
.
storage
=
priv
.
sub_storage_spec
;
return
o
;
};
that
.
validateState
=
function
()
{
if
(
!
validatestate_sub_storage
)
{
return
'
Need at least one parameter: "storage"
'
+
'
containing storage specifications.
'
;
}
return
''
;
};
priv
.
secureDocId
=
function
(
string
)
{
var
split
=
string
.
split
(
'
/
'
),
i
;
if
(
split
[
0
]
===
''
)
{
split
=
split
.
slice
(
1
);
}
for
(
i
=
0
;
i
<
split
.
length
;
i
+=
1
)
{
if
(
split
[
i
]
===
''
)
{
return
''
;
}
}
return
split
.
join
(
'
%2F
'
);
};
priv
.
indexStorage
=
function
()
{
var
obj
=
localStorage
.
getItem
(
storage_object_name
)
||
{};
obj
[
priv
.
sub_storage_spec
]
=
new
Date
().
getTime
();
localStorage
.
setItem
(
storage_object_name
,
obj
);
};
priv
.
formatToFileObject
=
function
(
row
)
{
var
k
,
obj
=
{
_id
:
row
.
id
};
priv
.
secureDocId
=
function
(
string
)
{
var
split
=
string
.
split
(
'
/
'
),
i
;
if
(
split
[
0
]
===
''
)
{
split
=
split
.
slice
(
1
);
}
for
(
i
=
0
;
i
<
split
.
length
;
i
+=
1
)
{
if
(
split
[
i
]
===
''
)
{
return
''
;
}
}
return
split
.
join
(
'
%2F
'
);
};
priv
.
indexStorage
=
function
()
{
var
obj
=
localStorage
.
getItem
(
storage_object_name
)
||
{};
obj
[
priv
.
sub_storage_spec
]
=
new
Date
().
getTime
();
localStorage
.
setItem
(
storage_object_name
,
obj
);
};
priv
.
formatToFileObject
=
function
(
row
)
{
var
k
,
obj
=
{
_id
:
row
.
id
};
for
(
k
in
row
.
value
)
{
obj
[
k
]
=
row
.
value
[
k
];
}
return
obj
;
};
priv
.
allDocs
=
function
(
files_object
)
{
var
k
,
obj
=
{
rows
:[]},
i
=
0
;
for
(
k
in
files_object
)
{
obj
.
rows
[
i
]
=
{};
obj
.
rows
[
i
].
value
=
files_object
[
k
];
obj
.
rows
[
i
].
id
=
obj
.
rows
[
i
].
key
=
obj
.
rows
[
i
].
value
.
_id
;
delete
obj
.
rows
[
i
].
value
.
_id
;
i
++
;
}
obj
.
total_rows
=
obj
.
rows
.
length
;
return
obj
;
};
priv
.
setFileArray
=
function
(
file_array
)
{
var
i
,
obj
=
{};
for
(
i
=
0
;
i
<
file_array
.
length
;
i
+=
1
)
{
obj
[
file_array
[
i
].
id
]
=
priv
.
formatToFileObject
(
file_array
[
i
]);
}
localStorage
.
setItem
(
storage_file_object_name
,
obj
);
};
priv
.
getFileObject
=
function
(
docid
)
{
var
obj
=
localStorage
.
getItem
(
storage_file_object_name
)
||
{};
return
obj
[
docid
];
};
priv
.
addFile
=
function
(
file_obj
)
{
var
obj
=
localStorage
.
getItem
(
storage_file_object_name
)
||
{};
obj
[
file_obj
.
_id
]
=
file_obj
;
localStorage
.
setItem
(
storage_file_object_name
,
obj
);
};
priv
.
removeFile
=
function
(
docid
)
{
var
obj
=
localStorage
.
getItem
(
storage_file_object_name
)
||
{};
delete
obj
[
docid
];
localStorage
.
setItem
(
storage_file_object_name
,
obj
);
for
(
k
in
row
.
value
)
{
if
(
row
.
value
.
hasOwnProperty
(
k
))
{
obj
[
k
]
=
row
.
value
[
k
];
}
}
return
obj
;
};
priv
.
allDocs
=
function
(
files_object
)
{
var
k
,
obj
=
{
rows
:
[]
},
i
=
0
;
for
(
k
in
files_object
)
{
if
(
files_object
.
hasOwnProperty
(
k
))
{
obj
.
rows
[
i
]
=
{};
obj
.
rows
[
i
].
value
=
files_object
[
k
];
obj
.
rows
[
i
].
id
=
obj
.
rows
[
i
].
key
=
obj
.
rows
[
i
].
value
.
_id
;
delete
obj
.
rows
[
i
].
value
.
_id
;
i
+=
1
;
}
}
obj
.
total_rows
=
obj
.
rows
.
length
;
return
obj
;
};
priv
.
setFileArray
=
function
(
file_array
)
{
var
i
,
obj
=
{};
for
(
i
=
0
;
i
<
file_array
.
length
;
i
+=
1
)
{
obj
[
file_array
[
i
].
id
]
=
priv
.
formatToFileObject
(
file_array
[
i
]);
}
localStorage
.
setItem
(
storage_file_object_name
,
obj
);
};
priv
.
getFileObject
=
function
(
docid
)
{
var
obj
=
localStorage
.
getItem
(
storage_file_object_name
)
||
{};
return
obj
[
docid
];
};
priv
.
addFile
=
function
(
file_obj
)
{
var
obj
=
localStorage
.
getItem
(
storage_file_object_name
)
||
{};
obj
[
file_obj
.
_id
]
=
file_obj
;
localStorage
.
setItem
(
storage_file_object_name
,
obj
);
};
priv
.
removeFile
=
function
(
docid
)
{
var
obj
=
localStorage
.
getItem
(
storage_file_object_name
)
||
{};
delete
obj
[
docid
];
localStorage
.
setItem
(
storage_file_object_name
,
obj
);
};
/**
* updates the storage.
* It will retreive all files from a storage. It is an asynchronous task
* so the update can be on going even if IndexedStorage has already
* returned the result.
* @method update
*/
priv
.
update
=
function
()
{
var
success
=
function
(
val
)
{
priv
.
setFileArray
(
val
.
rows
);
};
/**
* updates the storage.
* It will retreive all files from a storage. It is an asynchronous task
* so the update can be on going even if IndexedStorage has already
* returned the result.
* @method update
*/
priv
.
update
=
function
()
{
var
success
=
function
(
val
)
{
priv
.
setFileArray
(
val
.
rows
);
};
that
.
addJob
(
'
allDocs
'
,
priv
.
sub_storage_spec
,
null
,
{
max_retry
:
3
},
success
,
function
(){});
};
that
.
post
=
function
(
command
)
{
that
.
put
(
command
);
};
/**
* Saves a document.
* @method put
*/
that
.
put
=
function
(
command
)
{
var
cloned_doc
=
command
.
cloneDoc
(),
cloned_option
=
command
.
cloneOption
(),
success
=
function
(
val
)
{
priv
.
update
();
that
.
success
(
val
);
},
error
=
function
(
err
)
{
that
.
error
(
err
);
};
priv
.
indexStorage
();
that
.
addJob
(
'
put
'
,
priv
.
sub_storage_spec
,
cloned_doc
,
cloned_option
,
success
,
error
);
};
// end put
/**
* Loads a document.
* @method get
*/
that
.
get
=
function
(
command
)
{
var
file_array
,
success
=
function
(
val
)
{
that
.
success
(
val
);
},
error
=
function
(
err
)
{
that
.
error
(
err
);
},
get
=
function
()
{
var
cloned_option
=
command
.
cloneOption
();
that
.
addJob
(
'
get
'
,
priv
.
sub_storage_spec
,
command
.
cloneDoc
(),
cloned_option
,
success
,
error
);
that
.
end
();
};
priv
.
indexStorage
();
that
.
addJob
(
'
allDocs
'
,
priv
.
sub_storage_spec
,
null
,
{
max_retry
:
3
},
success
,
function
()
{});
};
that
.
post
=
function
(
command
)
{
that
.
put
(
command
);
};
/**
* Saves a document.
* @method put
*/
that
.
put
=
function
(
command
)
{
var
cloned_doc
=
command
.
cloneDoc
(),
cloned_option
=
command
.
cloneOption
(),
success
=
function
(
val
)
{
priv
.
update
();
if
(
command
.
getOption
(
'
metadata_only
'
))
{
setTimeout
(
function
()
{
var
file_obj
=
priv
.
getFileObject
(
command
.
getDocId
());
if
(
file_obj
&&
(
file_obj
.
_last_modified
||
file_obj
.
_creation_date
))
{
that
.
success
(
file_obj
);
}
else
{
get
();
}
});
}
else
{
get
();
}
};
// end get
/**
* Gets a document list.
* @method allDocs
*/
that
.
allDocs
=
function
(
command
)
{
var
obj
=
localStorage
.
getItem
(
storage_file_object_name
);
if
(
obj
)
{
priv
.
update
();
setTimeout
(
function
(){
that
.
success
(
priv
.
allDocs
(
obj
));
});
that
.
success
(
val
);
},
error
=
function
(
err
)
{
that
.
error
(
err
);
};
priv
.
indexStorage
();
that
.
addJob
(
'
put
'
,
priv
.
sub_storage_spec
,
cloned_doc
,
cloned_option
,
success
,
error
);
};
// end put
/**
* Loads a document.
* @method get
*/
that
.
get
=
function
(
command
)
{
// jslint unused var file_array
var
success
=
function
(
val
)
{
that
.
success
(
val
);
},
error
=
function
(
err
)
{
that
.
error
(
err
);
},
get
=
function
()
{
var
cloned_option
=
command
.
cloneOption
();
that
.
addJob
(
'
get
'
,
priv
.
sub_storage_spec
,
command
.
cloneDoc
(),
cloned_option
,
success
,
error
);
that
.
end
();
};
priv
.
indexStorage
();
priv
.
update
();
if
(
command
.
getOption
(
'
metadata_only
'
))
{
setTimeout
(
function
()
{
var
file_obj
=
priv
.
getFileObject
(
command
.
getDocId
());
if
(
file_obj
&&
(
file_obj
.
_last_modified
||
file_obj
.
_creation_date
))
{
that
.
success
(
file_obj
);
}
else
{
var
success
=
function
(
val
)
{
priv
.
setFileArray
(
val
.
rows
);
that
.
success
(
val
);
},
error
=
function
(
err
)
{
that
.
error
(
err
);
};
that
.
addJob
(
'
allDocs
'
,
priv
.
sub_storage_spec
,
null
,
command
.
cloneOption
(),
success
,
error
);
get
();
}
};
// end allDocs
/**
* Removes a document.
* @method remove
*/
that
.
remove
=
function
(
command
)
{
var
success
=
function
(
val
)
{
priv
.
removeFile
(
command
.
getDocId
());
priv
.
update
();
that
.
success
(
val
);
},
error
=
function
(
err
)
{
that
.
error
(
err
);
};
that
.
addJob
(
'
remove
'
,
priv
.
sub_storage_spec
,
command
.
cloneDoc
(),
command
.
cloneOption
(),
success
,
error
);
};
// end remove
return
that
;
};
});
}
else
{
get
();
}
};
// end get
/**
* Gets a document list.
* @method allDocs
*/
that
.
allDocs
=
function
(
command
)
{
var
obj
=
localStorage
.
getItem
(
storage_file_object_name
),
success
,
error
;
if
(
obj
)
{
priv
.
update
();
setTimeout
(
function
()
{
that
.
success
(
priv
.
allDocs
(
obj
));
});
}
else
{
success
=
function
(
val
)
{
priv
.
setFileArray
(
val
.
rows
);
that
.
success
(
val
);
};
error
=
function
(
err
)
{
that
.
error
(
err
);
};
that
.
addJob
(
'
allDocs
'
,
priv
.
sub_storage_spec
,
null
,
command
.
cloneOption
(),
success
,
error
);
}
};
// end allDocs
/**
* Removes a document.
* @method remove
*/
that
.
remove
=
function
(
command
)
{
var
success
=
function
(
val
)
{
priv
.
removeFile
(
command
.
getDocId
());
priv
.
update
();
that
.
success
(
val
);
},
error
=
function
(
err
)
{
that
.
error
(
err
);
};
that
.
addJob
(
'
remove
'
,
priv
.
sub_storage_spec
,
command
.
cloneDoc
(),
command
.
cloneOption
(),
success
,
error
);
};
// end remove
return
that
;
});
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment