Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Genesys PGR
Genesys Backend
Commits
2019f1ce
Commit
2019f1ce
authored
Nov 19, 2014
by
Matija Obreza
Browse files
Removed Accession#storage
parent
f0cb70c3
Changes
10
Hide whitespace changes
Inline
Side-by-side
src/main/java/org/genesys2/server/model/genesys/Accession.java
View file @
2019f1ce
...
...
@@ -82,9 +82,6 @@ public class Accession extends VersionedAuditedModel {
@Column
(
name
=
"sampStat"
,
length
=
3
)
private
Integer
sampleStatus
;
@Column
(
name
=
"storage"
,
length
=
12
)
private
String
storage
;
@Column
(
name
=
"inSGSV"
)
private
Boolean
inSvalbard
;
...
...
@@ -200,14 +197,6 @@ public class Accession extends VersionedAuditedModel {
this
.
sampleStatus
=
sampleStatus
;
}
public
String
getStorage
()
{
return
this
.
storage
;
}
public
void
setStorage
(
final
String
storage
)
{
this
.
storage
=
storage
;
}
public
Boolean
getInSvalbard
()
{
return
this
.
inSvalbard
;
}
...
...
src/main/java/org/genesys2/server/model/json/AccessionJson.java
View file @
2019f1ce
...
...
@@ -33,7 +33,7 @@ public class AccessionJson {
private
Boolean
mlsStat
;
private
Boolean
inTrust
;
private
Boolean
available
;
private
i
nt
[]
storage
;
private
I
nt
eger
[]
storage
;
private
Integer
sampStat
;
private
String
[]
duplSite
;
private
String
bredCode
;
...
...
@@ -165,11 +165,11 @@ public class AccessionJson {
this
.
available
=
available
;
}
public
i
nt
[]
getStorage
()
{
public
I
nt
eger
[]
getStorage
()
{
return
storage
;
}
public
void
setStorage
(
i
nt
[]
storage
)
{
public
void
setStorage
(
I
nt
eger
[]
storage
)
{
this
.
storage
=
storage
;
}
...
...
src/main/java/org/genesys2/server/model/json/GenesysJsonFactory.java
View file @
2019f1ce
...
...
@@ -18,6 +18,7 @@ package org.genesys2.server.model.json;
import
java.util.List
;
import
org.apache.commons.lang.ArrayUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.genesys2.server.model.genesys.Accession
;
import
org.genesys2.server.model.genesys.AccessionCollect
;
...
...
@@ -56,8 +57,8 @@ public class GenesysJsonFactory {
aj
.
setMlsStat
(
accession
.
getMlsStatus
());
aj
.
setInTrust
(
accession
.
getInTrust
());
aj
.
setAvailable
(
accession
.
getAvailability
());
// private
i
nt[] storage;
aj
.
setStorage
(
toIntArray
(
accession
.
getSto
r
age
()));
// private
I
nt
eger
[] storage;
aj
.
setStorage
(
accession
.
getSto
R
age
()
.
toArray
(
ArrayUtils
.
EMPTY_INTEGER_OBJECT_ARRAY
));
// private Integer sampStat;
aj
.
setSampStat
(
accession
.
getSampleStatus
());
// private String[] duplSite;
...
...
@@ -81,19 +82,6 @@ public class GenesysJsonFactory {
return
arrString
.
split
(
"\\s*;\\s*"
);
}
private
static
int
[]
toIntArray
(
String
arrString
)
{
if
(
StringUtils
.
isBlank
(
arrString
))
{
return
null
;
}
final
String
[]
split
=
arrString
.
trim
().
split
(
"[;,]"
);
final
int
[]
intArr
=
new
int
[
split
.
length
];
for
(
int
i
=
0
;
i
<
split
.
length
;
i
++)
{
// TODO Could throw NFE
intArr
[
i
]
=
Integer
.
parseInt
(
split
[
i
]);
}
return
intArr
;
}
public
static
GeoJson
from
(
AccessionGeo
geo
)
{
if
(
geo
==
null
)
{
return
null
;
...
...
src/main/java/org/genesys2/server/persistence/domain/GenesysLowlevelRepositoryImpl.java
View file @
2019f1ce
...
...
@@ -244,7 +244,7 @@ public class GenesysLowlevelRepositoryImpl implements GenesysLowlevelRepository
@Override
public
PreparedStatement
createPreparedStatement
(
final
Connection
con
)
throws
SQLException
{
final
PreparedStatement
stmt
=
con
.
prepareStatement
(
directQuery
.
getQuery
(
"a.id, a.uuid, a.instCode, a.acceNumb, t.genus, t.species, t.taxonName, a.orgCty, a.acqSrc, a.acqDate, a.mlsStat, a.available,
a.storage
, a.sampStat, a.duplSite, a.createdBy, a.createdDate, a.lastModifiedBy, a.lastModifiedDate"
));
.
getQuery
(
"a.id, a.uuid, a.instCode, a.acceNumb, t.genus, t.species, t.taxonName, a.orgCty, a.acqSrc, a.acqDate, a.mlsStat, a.available,
null
, a.sampStat, a.duplSite, a.createdBy, a.createdDate, a.lastModifiedBy, a.lastModifiedDate"
));
final
ArgumentPreparedStatementSetter
apss
=
new
ArgumentPreparedStatementSetter
(
directQuery
.
getParameters
());
apss
.
setValues
(
stmt
);
...
...
src/main/java/org/genesys2/server/service/impl/BatchRESTServiceImpl.java
View file @
2019f1ce
...
...
@@ -27,7 +27,6 @@ import java.util.UUID;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.Predicate
;
import
org.apache.commons.lang.ArrayUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
...
...
@@ -456,40 +455,34 @@ public class BatchRESTServiceImpl implements BatchRESTService {
// MUST BE ARRAY
if
(
accnJson
.
has
(
"storage"
))
{
final
String
storage
=
arrayToString
(
toMcpdArray
(
accnJson
,
"storage"
));
updateAccessionStorage
(
accession
,
storage
);
updateAccessionStorage
(
accession
,
toMcpdArray
(
accnJson
,
"storage"
));
}
return
updated
;
}
public
static
boolean
updateAccessionStorage
(
Accession
accession
,
String
storage
)
{
public
static
boolean
updateAccessionStorage
(
Accession
accession
,
ArrayNode
arr
)
{
boolean
updated
=
false
;
if
(!
StringUtils
.
equals
(
storage
,
accession
.
getStorage
()))
{
accession
.
setStorage
(
storage
);
updated
=
true
;
}
List
<
Integer
>
as
=
accession
.
getStoRage
();
String
[]
arr
=
StringUtils
.
isBlank
(
storage
)
?
ArrayUtils
.
EMPTY_STRING_ARRAY
:
storage
.
split
(
"\\s*[;,]\\s*"
);
List
<
Integer
>
toRemove
=
new
ArrayList
<
Integer
>(
as
);
// Sometimes double values are registered: 20;20;40 and the loop below
// kicks in
if
(
updated
||
as
.
size
()
!=
arr
.
length
)
{
List
<
Integer
>
toRemove
=
new
ArrayList
<
Integer
>(
as
);
Iterator
<
JsonNode
>
it
=
arr
.
elements
();
for
(
String
storageStr
:
arr
)
{
int
stor
=
Integer
.
parseInt
(
storageStr
);
if
(!
as
.
contains
(
stor
))
{
as
.
add
(
stor
);
}
else
{
// Cast needed to remove the object
toRemove
.
remove
((
Integer
)
stor
);
}
while
(
it
.
hasNext
())
{
JsonNode
storageElem
=
it
.
next
();
int
stor
=
Integer
.
parseInt
(
storageElem
.
asText
());
if
(!
as
.
contains
(
stor
))
{
updated
=
true
;
as
.
add
(
stor
);
}
else
{
// Cast needed to remove the object
toRemove
.
remove
((
Integer
)
stor
);
}
}
if
(
toRemove
.
size
()
>
0
)
{
as
.
removeAll
(
toRemove
);
accession
.
setStorage
(
listToString
(
as
));
updated
=
true
;
}
...
...
src/main/java/org/genesys2/server/service/impl/GenesysServiceImpl.java
View file @
2019f1ce
...
...
@@ -961,7 +961,7 @@ public class GenesysServiceImpl implements GenesysService, DatasetService {
@SuppressWarnings
(
"resource"
)
final
CSVWriter
csv
=
new
CSVWriter
(
new
BufferedWriter
(
new
OutputStreamWriter
(
zos
)),
','
,
'"'
,
'\\'
,
"\n"
);
csv
.
writeNext
(
new
String
[]
{
"genesysId"
,
"uuid"
,
"instCode"
,
"acceNumb"
,
"genus"
,
"species"
,
"fullTaxa"
,
"orgCty"
,
"acqSrc"
,
"acqDate"
,
"mlsStat"
,
"available"
,
"storage"
,
"sampStat"
,
"duplSite"
,
"createdBy"
,
"createdDate"
,
"lastModifiedBy"
,
"lastModifiedDate"
});
"available"
,
"
~
storage"
,
"sampStat"
,
"duplSite"
,
"createdBy"
,
"createdDate"
,
"lastModifiedBy"
,
"lastModifiedDate"
});
final
ResultSetHelper
csvResultsetHelper
=
new
ResultSetHelperService
();
...
...
src/main/java/org/genesys2/server/service/worker/AccessionStorageScanner.java
deleted
100644 → 0
View file @
f0cb70c3
/**
* Copyright 2014 Global Crop Diversity Trust
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
package
org.genesys2.server.service.worker
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.genesys2.server.aspect.AsAdmin
;
import
org.genesys2.server.model.genesys.Accession
;
import
org.genesys2.server.service.GenesysService
;
import
org.genesys2.server.service.impl.BatchRESTServiceImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.stereotype.Component
;
/**
* Scans Accession#storage records and updates Accession#stoRage
*/
@Component
public
class
AccessionStorageScanner
{
public
static
final
Log
LOG
=
LogFactory
.
getLog
(
AccessionStorageScanner
.
class
);
@Autowired
private
GenesysService
genesysService
;
private
static
final
int
BATCH_SIZE
=
50
;
@AsAdmin
public
void
scanStorage
()
throws
InterruptedException
{
int
page
=
0
;
do
{
page
++;
if
(
page
%
100
==
0
)
{
LOG
.
info
(
"Scanning accessions page "
+
page
);
}
else
{
LOG
.
debug
(
"Scanning accessions page "
+
page
);
}
List
<
Long
>
accns
=
genesysService
.
listAccessionsIds
(
new
PageRequest
(
page
,
BATCH_SIZE
));
List
<
Accession
>
toSave
=
new
ArrayList
<
Accession
>(
accns
.
size
());
if
(
accns
.
size
()
==
0
)
break
;
for
(
long
accnId
:
accns
)
{
Accession
accession
=
genesysService
.
getAccession
(
accnId
);
boolean
updated
=
BatchRESTServiceImpl
.
updateAccessionStorage
(
accession
,
accession
.
getStorage
());
if
(
updated
)
{
toSave
.
add
(
accession
);
}
}
try
{
if
(
toSave
.
size
()
>
0
)
{
LOG
.
info
(
"Updating accession#stoRage for size="
+
toSave
.
size
());
genesysService
.
saveAccession
(
toSave
.
toArray
(
new
Accession
[]
{}));
}
}
catch
(
Throwable
e
)
{
LOG
.
warn
(
e
.
getMessage
(),
e
);
}
Thread
.
sleep
(
5
);
}
while
(
true
);
LOG
.
info
(
"Done scanning accession#storage"
);
}
}
src/main/java/org/genesys2/server/servlet/controller/AdminController.java
View file @
2019f1ce
...
...
@@ -35,7 +35,6 @@ import org.genesys2.server.service.GeoService;
import
org.genesys2.server.service.InstituteService
;
import
org.genesys2.server.service.MappingService
;
import
org.genesys2.server.service.impl.ContentSanitizer
;
import
org.genesys2.server.service.worker.AccessionStorageScanner
;
import
org.genesys2.server.service.worker.ElasticUpdater
;
import
org.genesys2.server.service.worker.ITPGRFAStatusUpdater
;
import
org.genesys2.server.service.worker.InstituteUpdater
;
...
...
@@ -97,9 +96,6 @@ public class AdminController {
@Autowired
private
TaskExecutor
taskExecutor
;
@Autowired
protected
AccessionStorageScanner
accessionStorageScanner
;
@RequestMapping
(
"/"
)
public
String
root
(
Model
model
)
{
return
"/admin/index"
;
...
...
@@ -317,33 +313,6 @@ public class AdminController {
return
"redirect:/admin/"
;
}
@RequestMapping
(
method
=
RequestMethod
.
POST
,
value
=
"/scanStorage"
)
public
String
scanStorage
()
{
LOG
.
info
(
"Updating accession.stoRage"
);
taskExecutor
.
execute
(
new
Runnable
()
{
@Override
public
void
run
()
{
Thread
t
=
Thread
.
currentThread
();
int
prevPrio
=
t
.
getPriority
();
String
prevName
=
t
.
getName
();
t
.
setPriority
(
Thread
.
MIN_PRIORITY
);
t
.
setName
(
"background.storageScanner"
);
try
{
accessionStorageScanner
.
scanStorage
();
LOG
.
info
(
"Updating done"
);
}
catch
(
InterruptedException
e
)
{
LOG
.
warn
(
"Storage scanner thread interrupted!"
);
}
finally
{
LOG
.
debug
(
"Resetting thread priority"
);
t
.
setPriority
(
prevPrio
);
t
.
setName
(
prevName
);
}
}
});
LOG
.
info
(
"Job scheduled"
);
return
"redirect:/admin/"
;
}
@RequestMapping
(
method
=
RequestMethod
.
POST
,
value
=
"/clearTilesCache"
)
public
String
clearTilesCache
()
{
final
Cache
tileServerCache
=
cacheManager
.
getCache
(
"tileserver"
);
...
...
src/main/webapp/WEB-INF/jsp/accession/details.jsp
View file @
2019f1ce
...
...
@@ -134,14 +134,9 @@
<div
class=
"row"
>
<div
class=
"col-xs-4"
><spring:message
code=
"accession.storage"
/></div>
<div
class=
"col-xs-8"
>
<c:forEach
items=
"
${
accession
.
storage
.
split
(
'[;,]'
)
}
"
var=
"storage"
>
<div><spring:message
code=
"accession.storage.${storage}"
/></div>
</c:forEach>
<%--
<c:forEach
items=
"
${
accession
.
stoRage
}
"
var=
"storage"
>
<div><spring:message
code=
"accession.storage.${storage}"
/></div>
</c:forEach>
--%>
</div>
</div>
...
...
src/main/webapp/WEB-INF/jsp/admin/index.jsp
View file @
2019f1ce
...
...
@@ -89,11 +89,6 @@
<!-- CSRF protection -->
<input
type=
"hidden"
name=
"${_csrf.parameterName}"
value=
"${_csrf.token}"
/>
</form>
<form
method=
"post"
action=
"
<c:url
value=
"/admin/scanStorage"
/>
"
>
<input
type=
"submit"
class=
"btn btn-default"
class=
"btn btn-default"
value=
"Scan and convert STORAGE"
/>
<!-- CSRF protection -->
<input
type=
"hidden"
name=
"${_csrf.parameterName}"
value=
"${_csrf.token}"
/>
</form>
<h3>
C
&
E
</h3>
<form
method=
"post"
action=
"
<c:url
value=
"/admin/refreshMetadataMethods"
/>
"
>
<input
type=
"submit"
class=
"btn btn-default"
class=
"btn btn-default"
value=
"Recalculate metadata methods"
/>
...
...
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