Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
openbis
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
sispub
openbis
Commits
a4e3a7b8
Commit
a4e3a7b8
authored
2 years ago
by
vkovtun
Browse files
Options
Downloads
Patches
Plain Diff
SSDM-13253 In progress of writing JavaScript facade.
parent
d466dee2
No related branches found
Branches containing commit
No related tags found
Tags containing commit
1 merge request
!40
SSDM-13578 : 2PT : Database and V3 Implementation - include the new AFS "free"...
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/openbis.js
+188
-44
188 additions, 44 deletions
.../systemsx/cisd/openbis/public/resources/api/v3/openbis.js
with
188 additions
and
44 deletions
openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/openbis.js
+
188
−
44
View file @
a4e3a7b8
define
([
'
jquery
'
,
'
util/Json
'
,
'
as/dto/datastore/search/DataStoreSearchCriteria
'
,
'
as/dto/datastore/fetchoptions/DataStoreFetchOptions
'
,
'
as/dto/common/search/SearchResult
'
],
function
(
jquery
,
define
([
'
jquery
'
,
'
util/Json
'
,
'
as/dto/datastore/search/DataStoreSearchCriteria
'
,
'
as/dto/datastore/fetchoptions/DataStoreFetchOptions
'
,
'
as/dto/common/search/SearchResult
'
],
function
(
jquery
,
stjsUtil
,
DataStoreSearchCriteria
,
DataStoreFetchOptions
,
SearchResult
)
{
stjsUtil
,
DataStoreSearchCriteria
,
DataStoreFetchOptions
,
SearchResult
)
{
jquery
.
noConflict
();
jquery
.
noConflict
();
...
@@ -128,11 +129,11 @@ define([ 'jquery', 'util/Json', 'as/dto/datastore/search/DataStoreSearchCriteria
...
@@ -128,11 +129,11 @@ define([ 'jquery', 'util/Json', 'as/dto/datastore/search/DataStoreSearchCriteria
}
}
}
}
this
.
_
createUrlWithParameters
=
function
(
dataStore
,
servlet
,
parameters
)
{
function
createUrlWithParameters
(
dataStore
,
servlet
,
parameters
)
{
return
dataStore
.
downloadUrl
+
"
/datastore_server/
"
+
servlet
+
parameters
;
return
dataStore
.
downloadUrl
+
"
/datastore_server/
"
+
servlet
+
parameters
;
}
}
this
.
_createUrl
=
function
(
dataStore
)
{
function
createUrl
(
dataStore
)
{
return
dataStore
.
downloadUrl
+
"
/datastore_server/rmi-data-store-server-v3.json
"
;
return
dataStore
.
downloadUrl
+
"
/datastore_server/rmi-data-store-server-v3.json
"
;
}
}
...
@@ -141,7 +142,7 @@ define([ 'jquery', 'util/Json', 'as/dto/datastore/search/DataStoreSearchCriteria
...
@@ -141,7 +142,7 @@ define([ 'jquery', 'util/Json', 'as/dto/datastore/search/DataStoreSearchCriteria
return
this
.
_getDataStores
().
then
(
function
(
dataStores
)
{
return
this
.
_getDataStores
().
then
(
function
(
dataStores
)
{
var
promises
=
dataStores
.
map
(
function
(
dataStore
)
{
var
promises
=
dataStores
.
map
(
function
(
dataStore
)
{
return
facade
.
_private
.
ajaxRequest
({
return
facade
.
_private
.
ajaxRequest
({
url
:
thisFacade
.
_
createUrl
(
dataStore
),
url
:
createUrl
(
dataStore
),
data
:
{
data
:
{
"
method
"
:
"
searchFiles
"
,
"
method
"
:
"
searchFiles
"
,
"
params
"
:
[
facade
.
_private
.
sessionToken
,
criteria
,
fetchOptions
]
"
params
"
:
[
facade
.
_private
.
sessionToken
,
criteria
,
fetchOptions
]
...
@@ -192,7 +193,7 @@ define([ 'jquery', 'util/Json', 'as/dto/datastore/search/DataStoreSearchCriteria
...
@@ -192,7 +193,7 @@ define([ 'jquery', 'util/Json', 'as/dto/datastore/search/DataStoreSearchCriteria
var
dsCode
=
dataStore
.
getCode
();
var
dsCode
=
dataStore
.
getCode
();
if
(
dsCode
in
creationsByStore
)
{
if
(
dsCode
in
creationsByStore
)
{
promises
.
push
(
facade
.
_private
.
ajaxRequest
({
promises
.
push
(
facade
.
_private
.
ajaxRequest
({
url
:
thisFacade
.
_
createUrl
(
dataStore
),
url
:
createUrl
(
dataStore
),
data
:
{
data
:
{
"
method
"
:
"
createDataSets
"
,
"
method
"
:
"
createDataSets
"
,
"
params
"
:
[
facade
.
_private
.
sessionToken
,
creationsByStore
[
dsCode
]
]
"
params
"
:
[
facade
.
_private
.
sessionToken
,
creationsByStore
[
dsCode
]
]
...
@@ -269,16 +270,15 @@ define([ 'jquery', 'util/Json', 'as/dto/datastore/search/DataStoreSearchCriteria
...
@@ -269,16 +270,15 @@ define([ 'jquery', 'util/Json', 'as/dto/datastore/search/DataStoreSearchCriteria
}
}
this
.
createUploadedDataSet
=
function
(
creation
)
{
this
.
createUploadedDataSet
=
function
(
creation
)
{
var
thisFacade
=
this
;
var
dfd
=
jquery
.
Deferred
()
;
return
this
.
_getDataStores
().
then
(
function
(
dataStores
)
{
this
.
_getDataStores
().
then
(
function
(
dataStores
)
{
if
(
dataStores
.
length
>
1
)
{
if
(
dataStores
.
length
>
1
)
{
var
dfd
=
jquery
.
Deferred
();
dfd
.
reject
(
"
Please specify exactly one data store
"
);
dfd
.
reject
(
"
Please specify exactly one data store
"
);
return
dfd
.
promise
()
;
return
;
}
}
return
facade
.
_private
.
ajaxRequest
({
facade
.
_private
.
ajaxRequest
({
url
:
thisFacade
.
_
createUrl
(
dataStores
[
0
]),
url
:
createUrl
(
dataStores
[
0
]),
data
:
{
data
:
{
"
method
"
:
"
createUploadedDataSet
"
,
"
method
"
:
"
createUploadedDataSet
"
,
"
params
"
:
[
facade
.
_private
.
sessionToken
,
creation
]
"
params
"
:
[
facade
.
_private
.
sessionToken
,
creation
]
...
@@ -286,43 +286,187 @@ define([ 'jquery', 'util/Json', 'as/dto/datastore/search/DataStoreSearchCriteria
...
@@ -286,43 +286,187 @@ define([ 'jquery', 'util/Json', 'as/dto/datastore/search/DataStoreSearchCriteria
returnType
:
{
returnType
:
{
name
:
"
DataSetPermId
"
name
:
"
DataSetPermId
"
}
}
}).
then
(
function
(
response
)
{
dfd
.
resolve
(
response
);
}).
catch
(
function
(
error
)
{
dfd
.
reject
(
error
);
});
});
return
dfd
.
promise
();
}
function
getUUID
()
{
return
([
1
e7
]
+-
1
e3
+-
4
e3
+-
8
e3
+-
1
e11
).
replace
(
/
[
018
]
/g
,
c
=>
(
c
^
crypto
.
getRandomValues
(
new
Uint8Array
(
1
))[
0
]
&
15
>>
c
/
4
).
toString
(
16
)
);
}
this
.
uploadFileWorkspaceDSS
=
function
(
files
)
{
var
thisFacade
=
this
;
var
uploadId
=
getUUID
();
var
dfd
=
jquery
.
Deferred
();
this
.
_uploadFileWorkspaceDSSEmptyDir
(
uploadId
).
then
(
function
()
{
thisFacade
.
_uploadFileWorkspaceDSS
(
files
,
0
,
uploadId
,
new
Set
()).
then
(
function
()
{
dfd
.
resolve
();
}).
catch
(
function
(
error
)
{
dfd
.
reject
(
error
);
});
}).
catch
(
function
(
error
)
{
dfd
.
reject
(
error
);
});
return
dfd
.
promise
();
}
this
.
_uploadFileWorkspaceDSS
=
function
(
files
,
index
,
parentId
,
createdDirectories
)
{
var
thisFacade
=
this
;
var
dfd
=
jquery
.
Deferred
();
if
(
index
<
files
.
length
)
{
var
file
=
files
[
index
];
var
relativePath
=
file
.
webkitRelativePath
;
var
directoryRelativePath
=
relativePath
.
substring
(
0
,
relativePath
.
lastIndexOf
(
"
/
"
)
+
1
);
if
(
directoryRelativePath
&&
!
createdDirectories
.
has
(
directoryRelativePath
))
{
this
.
_uploadFileWorkspaceDSSEmptyDir
(
parentId
+
"
/
"
+
directoryRelativePath
)
.
then
(
function
()
{
createdDirectories
.
add
(
directoryRelativePath
);
thisFacade
.
_uploadFileWorkspaceDSSFile
(
file
,
parentId
)
.
then
(
function
()
{
thisFacade
.
_uploadFileWorkspaceDSS
(
files
,
index
+
1
,
createdDirectories
);
dfd
.
resolve
();
})
.
catch
(
function
(
error
)
{
dfd
.
reject
(
error
);
});
})
.
catch
(
function
(
error
)
{
dfd
.
reject
(
error
);
});
}
else
{
this
.
_uploadFileWorkspaceDSSFile
(
file
,
parentId
)
.
then
(
function
()
{
thisFacade
.
_uploadFileWorkspaceDSS
(
files
,
index
+
1
,
createdDirectories
);
dfd
.
resolve
();
})
.
catch
(
function
(
error
)
{
dfd
.
reject
(
error
);
});
}
}
else
{
dfd
.
resolve
();
}
return
dfd
.
promise
();
}
this
.
_uploadFileWorkspaceDSSEmptyDir
=
function
(
pathToDir
)
{
var
sessionID
=
facade
.
_private
.
sessionToken
;
var
filename
=
encodeURIComponent
(
pathToDir
);
var
dfd
=
jquery
.
Deferred
();
this
.
_getDataStores
().
then
(
function
(
dataStores
)
{
if
(
dataStores
.
length
!==
1
)
{
dfd
.
reject
(
"
Please specify exactly one data store
"
);
return
;
}
var
parameters
=
"
?sessionID=
"
+
sessionID
+
"
&filename=
"
+
filename
+
"
&id=1&startByte=0&endByte=0&size=0&emptyFolder=true
"
;
fetch
(
createUrlWithParameters
(
dataStores
[
0
],
"
session_workspace_file_upload
"
,
parameters
),
{
method
:
"
POST
"
,
headers
:
{
"
Content-Type
"
:
"
multipart/form-data
"
}
}).
then
(
function
(
response
)
{
dfd
.
resolve
(
response
);
}).
catch
(
function
(
error
)
{
dfd
.
reject
(
error
);
});
});
}).
catch
(
function
(
error
)
{
dfd
.
reject
(
error
);
});
return
dfd
.
promise
();
}
this
.
_uploadFileWorkspaceDSSFile
=
function
(
file
,
parentId
)
{
var
dfd
=
jquery
.
Deferred
();
this
.
_getDataStores
().
then
(
function
(
dataStores
)
{
var
filename
=
encodeURIComponent
(
parentId
+
"
/
"
+
file
.
webkitRelativePath
);
var
sessionID
=
facade
.
_private
.
sessionToken
;
var
fileSize
=
file
.
size
;
var
chunkSize
=
1048576
;
// 1 MiB
var
startByte
=
0
;
var
iterator
=
streamFile
(
file
,
chunkSize
);
uploadBlob
(
dataStores
[
0
],
iterator
,
sessionID
,
filename
,
startByte
,
chunkSize
,
fileSize
)
.
then
(
function
()
{
dfd
.
resolve
();
}).
catch
(
function
(
error
)
{
dfd
.
reject
(
error
);
});
}).
catch
(
function
(
error
)
{
dfd
.
reject
(
error
);
});
});
return
dfd
.
promise
();
}
}
this
.
uploadFileWorkspaceDSS
=
function
(
file
)
{
function
uploadBlob
(
dataStore
,
iterator
,
sessionID
,
filename
,
startByte
,
chunkSize
,
fileSize
)
{
var
thisFacade
=
this
;
var
dfd
=
jquery
.
Deferred
();
var
blob
=
iterator
.
next
();
var
getUUID
=
function
()
{
if
(
blob
)
{
return
([
1
e7
]
+-
1
e3
+-
4
e3
+-
8
e3
+-
1
e11
).
replace
(
/
[
018
]
/g
,
c
=>
var
parameters
=
"
?sessionID=
"
+
sessionID
+
"
&filename=
"
+
filename
+
(
c
^
crypto
.
getRandomValues
(
new
Uint8Array
(
1
))[
0
]
&
15
>>
c
/
4
).
toString
(
16
)
"
&id=1&startByte=
"
+
startByte
+
"
&endByte=
"
+
(
startByte
+
chunkSize
)
+
);
"
&size=
"
+
fileSize
+
"
&emptyFolder=false
"
;
};
try
{
var
responsePromise
=
fetch
(
createUrlWithParameters
(
dataStore
,
"
session_workspace_file_upload
"
,
parameters
),
{
//File
method
:
"
POST
"
,
var
sessionID
=
facade
.
_private
.
sessionToken
headers
:
{
var
id
=
0
;
"
Content-Type
"
:
"
multipart/form-data
"
var
filename
=
file
.
name
;
},
var
startByte
=
0
;
body
:
blob
var
endByte
=
file
.
size
;
});
return
this
.
_getDataStores
().
then
(
function
(
dataStores
)
{
return
responsePromise
.
then
(
function
()
{
if
(
dataStores
.
length
>
1
)
{
uploadBlob
(
dataStore
,
iterator
,
sessionID
,
filename
,
startByte
+
chunkSize
,
chunkSize
,
var
dfd
=
jquery
.
Deferred
();
fileSize
);
dfd
.
reject
(
"
Please specify exactly one data store
"
);
dfd
.
resolve
();
return
dfd
.
promise
();
}).
catch
(
function
(
error
)
{
}
console
.
error
(
"
Error:
"
,
error
);
dfd
.
reject
(
error
);
var
parameters
=
"
?sessionID=
"
+
sessionID
+
"
&filename=
"
+
encodeURIComponent
(
filename
)
+
"
&id=
"
+
id
+
"
&startByte=
"
+
startByte
+
"
&endByte=
"
+
endByte
;
});
return
facade
.
_private
.
ajaxRequest
({
}
catch
(
error
)
{
url
:
thisFacade
.
_createUrlWithParameters
(
dataStores
[
0
],
"
session_workspace_file_upload
"
,
parameters
),
console
.
error
(
"
Error:
"
,
error
);
contentType
:
"
multipart/form-data
"
,
dfd
.
reject
(
error
);
data
:
file
}
});
}
else
{
});
dfd
.
resolve
();
}
}
return
dfd
.
promise
();
}
}
function
streamFile
(
file
,
chunkSize
)
{
var
start
=
0
;
var
value
;
return
{
next
()
{
value
=
makeChunk
(
file
,
start
,
Math
.
min
(
start
+
chunkSize
,
file
.
size
));
if
(
value
&&
value
.
size
>
0
)
{
start
+=
chunkSize
;
return
value
;
}
else
{
return
null
;
}
}
}
}
function
makeChunk
(
file
,
startByte
,
endByte
)
{
var
blob
=
undefined
;
if
(
file
.
slice
)
{
blob
=
file
.
slice
(
startByte
,
endByte
);
}
else
if
(
file
.
webkitSlice
)
{
blob
=
file
.
webkitSlice
(
startByte
,
endByte
);
}
else
if
(
file
.
mozSlice
)
{
blob
=
file
.
mozSlice
(
startByte
,
endByte
);
}
return
blob
;
}
}
var
facade
=
function
(
openbisUrl
)
{
var
facade
=
function
(
openbisUrl
)
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment