Skip to content
This repository was archived by the owner on Oct 6, 2023. It is now read-only.

Commit f0e6758

Browse files
author
sowerstl
committed
Add Project Keywords to API and search; (DOECODE-645)
1 parent 91390c8 commit f0e6758

File tree

4 files changed

+51
-0
lines changed

4 files changed

+51
-0
lines changed

schema.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,7 @@
469469
<field name="doi" type="string"/>
470470
<field name="doiStatus" type="string" indexed="true" stored="true"/>
471471
<field name="keywords" type="text_general" indexed="true"/>
472+
<field name="projectKeywords" type="text_general" multiValued="true" indexed="true" stored="true"/>
472473
<field name="licenses" type="string" multiValued="true" indexed="true" stored="true"/>
473474
<field name="openSource" type="boolean" default="false" indexed="true" stored="true"/>
474475
<field name="otherSpecialRequirements" type="strings"/>

src/main/java/gov/osti/entity/DOECodeMetadata.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,11 @@ public String label() {
202202
private String documentationUrl = null;
203203
private String countryOfOrigin = null;
204204
private String keywords = null;
205+
206+
@JacksonXmlElementWrapper (localName = "projectKeywords")
207+
@JacksonXmlProperty (localName = "projectKeyword")
208+
private List<String> projectKeywords;
209+
205210
private String disclaimers = null;
206211

207212
@JacksonXmlElementWrapper (localName = "licenses")
@@ -458,6 +463,20 @@ public String getKeywords() {
458463
public void setKeywords(String keywords) {
459464
this.keywords = keywords;
460465
}
466+
467+
@ElementCollection
468+
@CollectionTable(
469+
name = "PROJECT_KEYWORDS",
470+
joinColumns=@JoinColumn(name="CODE_ID")
471+
)
472+
@Column (name = "PROJECT_KEYWORD")
473+
public List<String> getProjectKeywords() {
474+
return projectKeywords;
475+
}
476+
public void setProjectKeywords(List<String> projectKeywords) {
477+
this.projectKeywords = projectKeywords;
478+
}
479+
461480
@Size (max = 3000, message = "Disclaimers are limited to 3000 characters.")
462481
@Column (length = 3000)
463482
public String getDisclaimers() {

src/main/java/gov/osti/search/SearchData.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public class SearchData implements Serializable {
4444
private String[] accessibility = null;
4545
private String[] programmingLanguages;
4646
private String keywords;
47+
private String[] projectKeywords;
4748
private String[] licenses;
4849
private String[] researchOrganization = null;
4950
private String[] sponsoringOrganization = null;
@@ -235,6 +236,17 @@ public String toQ() {
235236
if (q.length()>0) q.append(" ");
236237
q.append("keywords:(").append(escape(getKeywords())).append(")");
237238
}
239+
if (null!=getProjectKeywords()) {
240+
StringBuilder values = new StringBuilder();
241+
for ( String projectKeyword : getProjectKeywords() ) {
242+
if (values.length()>0) values.append(" OR ");
243+
values.append("projectKeywords:\"").append(escapeToken(projectKeyword)).append("\"");
244+
}
245+
if (values.length()>0) {
246+
if (q.length()>0) q.append(" ");
247+
q.append("(").append(values.toString()).append(")");
248+
}
249+
}
238250
if (null!=getLicenses()) {
239251
StringBuilder values = new StringBuilder();
240252
for ( String license : getLicenses() ) {
@@ -384,6 +396,20 @@ public String getKeywords() {
384396
return this.keywords;
385397
}
386398

399+
/**
400+
* @return the project keywords
401+
*/
402+
public String[] getProjectKeywords() {
403+
return projectKeywords;
404+
}
405+
406+
/**
407+
* @param projectKeywords the project keywords to set
408+
*/
409+
public void setProjectKeywords(String[] projectKeywords) {
410+
this.projectKeywords = projectKeywords;
411+
}
412+
387413
/**
388414
* @return the softwareType
389415
*/

src/main/java/gov/osti/services/Metadata.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -744,6 +744,11 @@ private void store(EntityManager em, DOECodeMetadata md, User user) throws NotFo
744744
ValidatorFactory validators = javax.validation.Validation.buildDefaultValidatorFactory();
745745
Validator validator = validators.getValidator();
746746

747+
// must be OSTI user in order to add/update PROJECT KEYWORDS
748+
List<String> projectKeywords = md.getProjectKeywords();
749+
if (projectKeywords != null && !projectKeywords.isEmpty() && !user.hasRole("OSTI"))
750+
throw new ValidationException("Project Keywords can only be set by authorized users.");
751+
747752
// if there's a CODE ID, attempt to look up the record first and
748753
// copy attributes into it
749754
if ( null==md.getCodeId() || 0==md.getCodeId()) {

0 commit comments

Comments
 (0)