Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
jio
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
Yaxel Perez
jio
Commits
b163ec2b
Commit
b163ec2b
authored
Jul 17, 2013
by
Tristan Cavelier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gidstorage.js docstring added
parent
bc8ddc7c
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
96 additions
and
1 deletion
+96
-1
src/jio.storage/gidstorage.js
src/jio.storage/gidstorage.js
+96
-1
No files found.
src/jio.storage/gidstorage.js
View file @
b163ec2b
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
* JIO GID Storage. Type = 'gid'.
* JIO GID Storage. Type = 'gid'.
* Identifies document with their global identifier représentation
* Identifies document with their global identifier représentation
*
*
* Sub storages must support complex queries.
* Sub storages must support complex queries
and include_docs options
.
*
*
* Storage Description:
* Storage Description:
*
*
...
@@ -63,14 +63,23 @@
...
@@ -63,14 +63,23 @@
'
Text
'
:
'
Text
'
'
Text
'
:
'
Text
'
};
};
metadata_actions
=
{
metadata_actions
=
{
/**
* Returns the metadata value
*/
json
:
function
(
value
)
{
json
:
function
(
value
)
{
return
value
;
return
value
;
},
},
/**
* Returns the metadata if it is a string
*/
string
:
function
(
value
)
{
string
:
function
(
value
)
{
if
(
typeof
value
===
'
string
'
)
{
if
(
typeof
value
===
'
string
'
)
{
return
value
;
return
value
;
}
}
},
},
/**
* Returns the metadata in a array format
*/
list
:
function
(
value
)
{
list
:
function
(
value
)
{
var
i
,
new_value
=
[];
var
i
,
new_value
=
[];
if
(
Array
.
isArray
(
value
))
{
if
(
Array
.
isArray
(
value
))
{
...
@@ -86,9 +95,15 @@
...
@@ -86,9 +95,15 @@
}
}
return
value
;
return
value
;
},
},
/**
* Returns the metadata if it is a string equal to a DCMIType
*/
DCMIType
:
function
(
value
)
{
DCMIType
:
function
(
value
)
{
return
dcmi_types
[
value
];
return
dcmi_types
[
value
];
},
},
/**
* Returns the metadata content type if exist
*/
contentType
:
function
(
value
)
{
contentType
:
function
(
value
)
{
var
i
;
var
i
;
if
(
!
Array
.
isArray
(
value
))
{
if
(
!
Array
.
isArray
(
value
))
{
...
@@ -214,6 +229,14 @@
...
@@ -214,6 +229,14 @@
}
}
};
};
/**
* Creates a gid from metadata and constraints.
*
* @param {Object} metadata The metadata to use
* @param {Object} constraints The constraints
* @return {String} The gid or undefined if metadata doesn't respect the
* constraints
*/
function
gidFormat
(
metadata
,
constraints
)
{
function
gidFormat
(
metadata
,
constraints
)
{
var
types
,
i
,
meta_key
,
result
=
{},
tmp
;
var
types
,
i
,
meta_key
,
result
=
{},
tmp
;
types
=
[
'
default
'
,
metadata
.
type
];
types
=
[
'
default
'
,
metadata
.
type
];
...
@@ -233,6 +256,13 @@
...
@@ -233,6 +256,13 @@
return
JSON
.
stringify
(
result
);
return
JSON
.
stringify
(
result
);
}
}
/**
* Convert a gid to a complex query.
*
* @param {Object,String} gid The gid
* @param {Object} constraints The constraints
* @return {Object} A complex serialized object
*/
function
gidToComplexQuery
(
gid
,
contraints
)
{
function
gidToComplexQuery
(
gid
,
contraints
)
{
var
k
,
i
,
result
=
[],
meta
,
content
;
var
k
,
i
,
result
=
[],
meta
,
content
;
if
(
typeof
gid
===
'
string
'
)
{
if
(
typeof
gid
===
'
string
'
)
{
...
@@ -265,6 +295,13 @@
...
@@ -265,6 +295,13 @@
};
};
}
}
/**
* Parse the gid and returns a metadata object containing gid keys and values.
*
* @param {String} gid The gid to convert
* @param {Object} constraints The constraints
* @return {Object} The gid metadata
*/
function
gidParse
(
gid
,
constraints
)
{
function
gidParse
(
gid
,
constraints
)
{
var
object
;
var
object
;
try
{
try
{
...
@@ -278,8 +315,19 @@
...
@@ -278,8 +315,19 @@
return
object
;
return
object
;
}
}
/**
* The gid storage used by JIO.
*
* This storage change the id of a document with its global id. A global id
* is representation of a document metadata used to define it as uniq. The way
* to generate global ids can be define in the storage description. It allows
* us use duplicating storage with different sub storage kind.
*
* @class gidStorage
*/
function
gidStorage
(
spec
,
my
)
{
function
gidStorage
(
spec
,
my
)
{
var
that
=
my
.
basicStorage
(
spec
,
my
),
priv
=
{};
var
that
=
my
.
basicStorage
(
spec
,
my
),
priv
=
{};
priv
.
sub_storage
=
spec
.
sub_storage
;
priv
.
sub_storage
=
spec
.
sub_storage
;
priv
.
constraints
=
spec
.
constraints
||
{
priv
.
constraints
=
spec
.
constraints
||
{
"
default
"
:
{
"
default
"
:
{
...
@@ -288,6 +336,8 @@
...
@@ -288,6 +336,8 @@
}
}
};
};
// Overrides
that
.
specToStore
=
function
()
{
that
.
specToStore
=
function
()
{
return
{
return
{
"
sub_storage
"
:
priv
.
sub_storage
,
"
sub_storage
"
:
priv
.
sub_storage
,
...
@@ -295,6 +345,21 @@
...
@@ -295,6 +345,21 @@
};
};
};
};
// JIO Commands
/**
* Generic command for post or put one.
*
* This command will check if the document already exist with an allDocs
* and a complex query. If exist, then post will fail. Put will update the
* retrieved document thanks to its real id. If no documents are found, post
* and put will create a new document with the sub storage id generator.
*
* @method putOrPost
* @private
* @param {Command} command The JIO command
* @param {String} method The command method
*/
priv
.
putOrPost
=
function
(
command
,
method
)
{
priv
.
putOrPost
=
function
(
command
,
method
)
{
setTimeout
(
function
()
{
setTimeout
(
function
()
{
var
gid
,
complex_query
,
doc
=
command
.
cloneDoc
();
var
gid
,
complex_query
,
doc
=
command
.
cloneDoc
();
...
@@ -346,14 +411,32 @@
...
@@ -346,14 +411,32 @@
});
});
};
};
/**
* See {{#crossLink "gidStorage/putOrPost:method"}}{{/#crossLink}}.
*
* @method post
* @param {Command} command The JIO command
*/
that
.
post
=
function
(
command
)
{
that
.
post
=
function
(
command
)
{
priv
.
putOrPost
(
command
,
'
post
'
);
priv
.
putOrPost
(
command
,
'
post
'
);
};
};
/**
* See {{#crossLink "gidStorage/putOrPost:method"}}{{/#crossLink}}.
*
* @method put
* @param {Command} command The JIO command
*/
that
.
put
=
function
(
command
)
{
that
.
put
=
function
(
command
)
{
priv
.
putOrPost
(
command
,
'
put
'
);
priv
.
putOrPost
(
command
,
'
put
'
);
};
};
/**
* Gets a document thank to its gid, a sub allDocs and a complex query.
*
* @method get
* @param {Command} command The JIO command
*/
that
.
get
=
function
(
command
)
{
that
.
get
=
function
(
command
)
{
setTimeout
(
function
()
{
setTimeout
(
function
()
{
var
gid_object
,
complex_query
;
var
gid_object
,
complex_query
;
...
@@ -390,6 +473,12 @@
...
@@ -390,6 +473,12 @@
});
});
};
};
/**
* Remove a document thank to its gid, sub allDocs and a complex query.
*
* @method remove
* @param {Command} command The JIO command.
*/
that
.
remove
=
function
(
command
)
{
that
.
remove
=
function
(
command
)
{
setTimeout
(
function
()
{
setTimeout
(
function
()
{
var
gid_object
,
complex_query
,
doc
=
command
.
cloneDoc
();
var
gid_object
,
complex_query
,
doc
=
command
.
cloneDoc
();
...
@@ -434,6 +523,12 @@
...
@@ -434,6 +523,12 @@
});
});
};
};
/**
* Retrieve a list of document which respect gid constraints.
*
* @method allDocs
* @param {Command} command The JIO command
*/
that
.
allDocs
=
function
(
command
)
{
that
.
allDocs
=
function
(
command
)
{
setTimeout
(
function
()
{
setTimeout
(
function
()
{
var
options
=
command
.
cloneOption
(),
include_docs
;
var
options
=
command
.
cloneOption
(),
include_docs
;
...
...
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