diff --git a/src/main/java/org/genesys2/server/model/elastic/AccessionDetails.java b/src/main/java/org/genesys2/server/model/elastic/AccessionDetails.java index 16c92c4450e6f72caa01beaeb03c4b70f7ebaf77..ec57c85ee780b1241111fa051380927e6815af8a 100644 --- a/src/main/java/org/genesys2/server/model/elastic/AccessionDetails.java +++ b/src/main/java/org/genesys2/server/model/elastic/AccessionDetails.java @@ -60,6 +60,8 @@ public class AccessionDetails { private Boolean art15; private Integer sampStat; private List storage; + @Field(type = FieldType.String) + private String doi; @Field(type = FieldType.Object) private Institute institute; @@ -132,6 +134,7 @@ public class AccessionDetails { ad.cropName=accession.getCropName(); ad.inSgsv = accession.getInSvalbard() != null && accession.getInSvalbard() == true ? true : false; ad.cropName = accession.getCropName(); + ad.doi = accession.getDoi(); if (accession.getAccessionId().getPdci() != null) { ad.pdciScore = accession.getAccessionId().getPdci().getScore(); @@ -538,4 +541,12 @@ public class AccessionDetails { public void setAcceName(String acceName) { this.acceName = acceName; } + + public String getDoi() { + return doi; + } + + public void setDoi(String doi) { + this.doi = doi; + } } diff --git a/src/main/java/org/genesys2/server/model/genesys/Accession.java b/src/main/java/org/genesys2/server/model/genesys/Accession.java index b11937d0769826ae2144a943a81e2699f8f355aa..07258de822d85a26ca84f9865338bed56be8175b 100644 --- a/src/main/java/org/genesys2/server/model/genesys/Accession.java +++ b/src/main/java/org/genesys2/server/model/genesys/Accession.java @@ -40,7 +40,7 @@ import javax.persistence.UniqueConstraint; @Entity @Table(name = "accession", // Unique constraints - uniqueConstraints = { @UniqueConstraint(name = "UQ_accession_genus_inst", columnNames = { "instituteId", "taxGenus", "acceNumb" }) }, + uniqueConstraints = { @UniqueConstraint(name = "UQ_accession_genus_inst", columnNames = { "instituteId", "taxGenus", "acceNumb" }), @UniqueConstraint(name = "UQ_accession_doi", columnNames = {"doi"})}, // Indexes indexes = { @Index(name = "IX_seqNo", columnList = "seqNo"), @Index(name = "IX_accession_lastModifiedDate", columnList = "lastModifiedDate") }) public class Accession extends AccessionData { diff --git a/src/main/java/org/genesys2/server/model/genesys/AccessionData.java b/src/main/java/org/genesys2/server/model/genesys/AccessionData.java index 1174890a08cea34bf328554f24280d8df0c69a3a..2df8b4ac3c9b88ab104c8733ef9aa8621f19a271 100644 --- a/src/main/java/org/genesys2/server/model/genesys/AccessionData.java +++ b/src/main/java/org/genesys2/server/model/genesys/AccessionData.java @@ -81,6 +81,9 @@ public abstract class AccessionData implements IdUUID, Serializable { @JoinColumn(name = "id") private AccessionId accessionId; + @Column(name = "doi") + private String doi; + @Column(name = "instCode", length = 10, nullable = false) private String instituteCode; @@ -414,4 +417,12 @@ public abstract class AccessionData implements IdUUID, Serializable { public void setCrop(Crop crop) { this.crop = crop; } + + public String getDoi() { + return doi; + } + + public void setDoi(String doi) { + this.doi = doi; + } } diff --git a/src/main/java/org/genesys2/server/model/json/AccessionJson.java b/src/main/java/org/genesys2/server/model/json/AccessionJson.java index b05e7a6e43cef43d0ee9e80a44f825d34691ca6b..a59dc4b76c0f63055dcdaaf15cebd774ab732740 100644 --- a/src/main/java/org/genesys2/server/model/json/AccessionJson.java +++ b/src/main/java/org/genesys2/server/model/json/AccessionJson.java @@ -78,6 +78,8 @@ public class AccessionJson { private boolean historic; @JsonProperty(value = Accession.ACCEURL) private String acceUrl; + @JsonProperty(value = Accession.DOI) + private String doi; public long getVersion() { return version; @@ -302,4 +304,12 @@ public class AccessionJson { public void setAcceUrl(String acceUrl) { this.acceUrl = acceUrl; } + + public String getDoi() { + return doi; + } + + public void setDoi(String doi) { + this.doi = doi; + } } diff --git a/src/main/java/org/genesys2/server/model/json/Api1Constants.java b/src/main/java/org/genesys2/server/model/json/Api1Constants.java index a3523017d8b263f502715817acded42ea294e6a9..107d47bb32bdf6a4d09bacb238700b0712e2991a 100644 --- a/src/main/java/org/genesys2/server/model/json/Api1Constants.java +++ b/src/main/java/org/genesys2/server/model/json/Api1Constants.java @@ -191,6 +191,11 @@ public interface Api1Constants { */ public static final String CROPNAME = "cropName"; + /** + * Accession DOI (Digital Object Identifier) + */ + public static final String DOI = "doi"; + } public static interface Institute { diff --git a/src/main/java/org/genesys2/server/service/FilterConstants.java b/src/main/java/org/genesys2/server/service/FilterConstants.java index 0a39eec2e864ad7450a5bcfec5e8f28e13a43bd1..7bb796fb1b4b32613f10517bd9d033d581589fb5 100644 --- a/src/main/java/org/genesys2/server/service/FilterConstants.java +++ b/src/main/java/org/genesys2/server/service/FilterConstants.java @@ -91,4 +91,6 @@ public interface FilterConstants { public static final String LAST_MODIFIED_DATE = "lastModifiedDate"; + public static final String DOI = "doi"; + } diff --git a/src/main/java/org/genesys2/server/service/impl/DirectMysqlQuery.java b/src/main/java/org/genesys2/server/service/impl/DirectMysqlQuery.java index 01b699bbd88e459205aa2bb190f72bd8b31549e7..3950b4bf0a73b543c48ffd77baf03dcb06a758b1 100644 --- a/src/main/java/org/genesys2/server/service/impl/DirectMysqlQuery.java +++ b/src/main/java/org/genesys2/server/service/impl/DirectMysqlQuery.java @@ -208,6 +208,7 @@ public class DirectMysqlQuery { createQuery(whereBuffer, "col.collMissId", filters.get(FilterConstants.COLLMISSID), params); createQuery(whereBuffer, "storage.storage", filters.get(FilterConstants.STORAGE), params); createQuery(whereBuffer, "pdci.score", filters.get(FilterConstants.PDCI), params); + createQuery(whereBuffer, "doi", filters.get(FilterConstants.DOI), params); for (final AppliedFilter methodFilter : filters.methodFilters()) { // Handle Genesys Method! diff --git a/src/main/java/org/genesys2/server/service/impl/FilterHandler.java b/src/main/java/org/genesys2/server/service/impl/FilterHandler.java index ab953536a7fc4114510036f9d29ac664b176e547..db51d992d29378bba765a0aa84ee3759e5fd4524 100644 --- a/src/main/java/org/genesys2/server/service/impl/FilterHandler.java +++ b/src/main/java/org/genesys2/server/service/impl/FilterHandler.java @@ -83,6 +83,7 @@ public class FilterHandler { this.availableFilters.add(new BasicFilter(FilterConstants.CROPS, DataType.STRING)); this.availableFilters.add(new BasicFilter(FilterConstants.CROPNAME, DataType.STRING)); this.availableFilters.add(new BasicFilter(FilterConstants.LISTS, DataType.STRING)); + this.availableFilters.add(new BasicFilter(FilterConstants.DOI, DataType.STRING)); this.availableFilters.add(new BasicFilter(FilterConstants.REGION_ORIGIN, DataType.STRING)); this.availableFilters.add(new BasicFilter(FilterConstants.REGION_HOLD_INSTITUTE, DataType.STRING)); diff --git a/src/main/java/org/genesys2/server/service/impl/GenesysServiceImpl.java b/src/main/java/org/genesys2/server/service/impl/GenesysServiceImpl.java index 009f1dd27dd9631844d7cd77a1e9d4fb3429dbdf..192cf993e2e2820b2bf5f34c0bdfbd2912d4c0cd 100644 --- a/src/main/java/org/genesys2/server/service/impl/GenesysServiceImpl.java +++ b/src/main/java/org/genesys2/server/service/impl/GenesysServiceImpl.java @@ -220,6 +220,7 @@ public class GenesysServiceImpl implements GenesysService, DatasetService { columnList.add("geo." + Api1Constants.Geo.LATITUDE_LONGITUDE); columnList.add("coll." + Api1Constants.Collecting.COLLMISSID); columnList.add("pdci." + Api1Constants.Pdci.SCORE); + columnList.add(Api1Constants.Accession.DOI); availableDisplayColumns = Collections.unmodifiableList(columnList); List displayList = new ArrayList(); diff --git a/src/main/resources/content/language.properties b/src/main/resources/content/language.properties index c8315093eba0c55cf78ec70a9433069023e5c863..3938b3b66bd241c0c6741f67462109299fc833c6 100644 --- a/src/main/resources/content/language.properties +++ b/src/main/resources/content/language.properties @@ -431,6 +431,7 @@ filter.lastModifiedDate=Last Modified Date filter.alias=Accession name filter.crops=Crop name filter.cropName=Provided crop name +filter.doi=DOI filter.regionOfOrigin=Region of Origin filter.regionOfHoldingInstitute=Region of Holding Institute filter.orgCty.iso3=Country of Origin @@ -753,6 +754,7 @@ resolver.resolve=Resolve resolver.page.reverse.title=Resolution results accession.purl=Permanent URL +accession.doi=DOI menu.admin.kpi=KPI admin.kpi.index.page=KPI diff --git a/src/main/resources/liquibase/liquibase-changeLog.yml b/src/main/resources/liquibase/liquibase-changeLog.yml index 0f711d74ca7af42bc91705ee168d4631b89fefac..bfccd94e61fe85c3351affec7fa4b21b0393a043 100644 --- a/src/main/resources/liquibase/liquibase-changeLog.yml +++ b/src/main/resources/liquibase/liquibase-changeLog.yml @@ -178,3 +178,38 @@ databaseChangeLog: - sql: comment: accountType#SYSTEM to user#sys==1 sql: update user set sys = 1 where accountType = 'SYSTEM'; + +- changeSet: + id: 1497558768000-2 + author: maxymborodenko (generated) + changes: + - addColumn: + tableName: accession + columns: + - column: + name: doi + type: varchar(255) + +- changeSet: + id: 1497558768000-3 + author: maxymborodenko (generated) + changes: + - addUniqueConstraint: + columnNames: doi + constraintName: UQ_accession_doi + deferrable: true + disabled: true + initiallyDeferred: true + tableName: accession + tablespace: A String + +- changeSet: + id: 1497558768000-4 + author: maxymborodenko (generated) + changes: + - addColumn: + tableName: accessionhistoric + columns: + - column: + name: doi + type: varchar(255) \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/accession/details.jsp b/src/main/webapp/WEB-INF/jsp/accession/details.jsp index 1fc62f84fed0040bafa979a737c794709782f098..d5b187cda94a67fb140b9339ae987fac208d97aa 100644 --- a/src/main/webapp/WEB-INF/jsp/accession/details.jsp +++ b/src/main/webapp/WEB-INF/jsp/accession/details.jsp @@ -341,6 +341,20 @@

+
+
+

+ +

+
+
+

+ + "> + +

+
+
diff --git a/src/main/webapp/WEB-INF/jsp/accession/explore2.jsp b/src/main/webapp/WEB-INF/jsp/accession/explore2.jsp index df00761b3a348bd8fff534d07ba2c82bbfcffbfd..8995a8864e44f54aa5f3b7459a388f4a29922d6d 100644 --- a/src/main/webapp/WEB-INF/jsp/accession/explore2.jsp +++ b/src/main/webapp/WEB-INF/jsp/accession/explore2.jsp @@ -239,6 +239,18 @@

+ + + + +

${accession.doi}

+
+ +

+
+
+ +
@@ -880,6 +892,15 @@ 'class': "notimportant hidden-xs hidden-sm" }).appendTo(row)))); + + $("", { text: pagedData.content[i].doi }) + .appendTo($("", { + dir: "ltr", + 'class': "sci-name" + }).appendTo($("

").appendTo($("", { + 'class': "notimportant hidden-xs hidden-sm" + }).appendTo(row)))); +
var cropNamesTd = $("", { 'class': "notimportant hidden-xs hidden-sm" diff --git a/src/main/webapp/WEB-INF/tags/filters/filter-list.tag b/src/main/webapp/WEB-INF/tags/filters/filter-list.tag index e271551687349ca1be042c591822245a46dfffc4..9db4350b8c6e81991f0d4ac86d1967078f03ea56 100644 --- a/src/main/webapp/WEB-INF/tags/filters/filter-list.tag +++ b/src/main/webapp/WEB-INF/tags/filters/filter-list.tag @@ -173,4 +173,9 @@ appliedFilters="${appliedFilters}" type="range"/> + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/filters/filter.tag b/src/main/webapp/WEB-INF/tags/filters/filter.tag index dc3f98afb352d134803bfe2098933ac26853c880..49c0807ac9868d689aab9c783aa454f061b2f508 100644 --- a/src/main/webapp/WEB-INF/tags/filters/filter.tag +++ b/src/main/webapp/WEB-INF/tags/filters/filter.tag @@ -123,6 +123,16 @@ + +
+ _input" class="span2 form-control string-type" /> + + + +
+