Skip to content

Commit 86176f5

Browse files
authored
Merge pull request #11321 from nfdi4health/feat/11147
feat: add "string" type for metadata fields
2 parents c4f3d76 + d32b771 commit 86176f5

4 files changed

Lines changed: 19 additions & 2 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
The "string" type has been added as a new field type for metadata fields.
2+
3+
In contrast to "text" fields, "string" fields are stored and indexed exactly as provided, without any text analysis or transformations.
4+
5+
This field type is suitable for fields like IDs (e.g. ORCIDs) or enums, where exact matches are required when searching.

doc/sphinx-guides/source/admin/metadatacustomization.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ Each of the three main sections own sets of properties:
144144
| | | | \• email |
145145
| | | | \• text |
146146
| | | | \• textbox |
147+
| | | | \• string |
147148
| | | | \• url |
148149
| | | | \• int |
149150
| | | | \• float |
@@ -315,6 +316,12 @@ FieldType definitions
315316
| | section of the Dataset + File |
316317
| | Management page in the User Guide. |
317318
+---------------+------------------------------------+
319+
| string | Any text may be entered into this |
320+
| | field. The value is stored and |
321+
| | indexed exactly as provided, |
322+
| | without any text analysis or |
323+
| | transformations. |
324+
+---------------+------------------------------------+
318325
| url | If not empty, field must contain |
319326
| | a valid URL. |
320327
+---------------+------------------------------------+

src/main/java/edu/harvard/iq/dataverse/DatasetFieldType.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ public class DatasetFieldType implements Serializable, Comparable<DatasetFieldTy
3636
* The set of possible metatypes of the field. Used for validation and layout.
3737
*/
3838
public enum FieldType {
39-
TEXT, TEXTBOX, DATE, EMAIL, URL, FLOAT, INT, NONE
40-
};
39+
TEXT, TEXTBOX, STRING, DATE, EMAIL, URL, FLOAT, INT, NONE
40+
};
4141

4242
@Id
4343
@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -558,6 +558,8 @@ public SolrField getSolrField() {
558558
solrType = SolrField.SolrType.INTEGER;
559559
} else if (fieldType.equals(FieldType.FLOAT)) {
560560
solrType = SolrField.SolrType.FLOAT;
561+
} else if (fieldType.equals(FieldType.STRING)) {
562+
solrType = SolrField.SolrType.STRING;
561563
}
562564

563565
Boolean anyParentAllowsMultiplesBoolean = false;

src/main/webapp/datasetFieldForEditFragment.xhtml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
styleClass="form-control #{dsfv.datasetField.datasetFieldType.name == 'title' and DatasetPage.editMode == 'CREATE' ? 'datasetfield-title' : ''}"
1616
rendered="#{!dsfv.datasetField.datasetFieldType.controlledVocabulary
1717
and (dsfv.datasetField.datasetFieldType.fieldType == 'TEXT'
18+
or dsfv.datasetField.datasetFieldType.fieldType == 'STRING'
1819
or dsfv.datasetField.datasetFieldType.fieldType == 'INT'
1920
or dsfv.datasetField.datasetFieldType.fieldType == 'FLOAT'
2021
or dsfv.datasetField.datasetFieldType.fieldType == 'URL'
@@ -32,6 +33,7 @@
3233
styleClass="form-control #{dsfv.datasetField.datasetFieldType.name == 'title' and DatasetPage.editMode == 'CREATE' ? 'datasetfield-title' : ''}"
3334
rendered="#{!dsfv.datasetField.datasetFieldType.controlledVocabulary
3435
and (dsfv.datasetField.datasetFieldType.fieldType == 'TEXT'
36+
or dsfv.datasetField.datasetFieldType.fieldType == 'STRING'
3537
or dsfv.datasetField.datasetFieldType.fieldType == 'INT'
3638
or dsfv.datasetField.datasetFieldType.fieldType == 'FLOAT'
3739
or dsfv.datasetField.datasetFieldType.fieldType == 'URL'
@@ -56,6 +58,7 @@
5658
styleClass="form-control #{dsfv.datasetField.datasetFieldType.name == 'title' and DatasetPage.editMode == 'CREATE' ? 'datasetfield-title' : ''}"
5759
rendered="#{!dsfv.datasetField.datasetFieldType.controlledVocabulary
5860
and (dsfv.datasetField.datasetFieldType.fieldType == 'TEXT'
61+
or dsfv.datasetField.datasetFieldType.fieldType == 'STRING'
5962
or dsfv.datasetField.datasetFieldType.fieldType == 'INT'
6063
or dsfv.datasetField.datasetFieldType.fieldType == 'FLOAT'
6164
or dsfv.datasetField.datasetFieldType.fieldType == 'URL'

0 commit comments

Comments
 (0)