Skip to content

Commit

Permalink
issue #109: Add solr fields of control fields into the JSON schema
Browse files Browse the repository at this point in the history
  • Loading branch information
pkiraly committed Nov 24, 2021
1 parent f84860e commit 17f41b8
Showing 1 changed file with 20 additions and 14 deletions.
34 changes: 20 additions & 14 deletions src/main/java/de/gwdg/metadataqa/marc/cli/utils/MappingToJson.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,10 @@ public String toJson() {
}

public void build() {
Map fields = new LinkedHashMap<>();
Map<String, Object> fields = new LinkedHashMap<>();

fields.put("LDR", buildLeader());
buildSimpleControlFields(fields);
fields.putAll(buildSimpleControlFields());

fields.put("006", buildControlField(Control006Definition.getInstance(), Control006Positions.getInstance()));
fields.put("007", buildControlField(Control007Definition.getInstance(), Control007Positions.getInstance()));
Expand Down Expand Up @@ -118,23 +118,29 @@ private Map<String, Object> buildControlField(ControlFieldDefinition field, Cont
return tag;
}

private void buildSimpleControlFields(Map fields) {
Map<String, Object> tag;
private Map<String, Object> buildSimpleControlFields() {
Map fields = new HashMap();
List<DataFieldDefinition> simpleControlFields = Arrays.asList(
Control001Definition.getInstance(),
Control003Definition.getInstance(),
Control005Definition.getInstance()
);
for (DataFieldDefinition field : simpleControlFields) {
PositionalControlFieldKeyGenerator keyGenerator = new PositionalControlFieldKeyGenerator(field.getTag(), field.getMqTag(), parameters.getSolrFieldType());
tag = new LinkedHashMap<>();
tag.put("tag", field.getTag());
tag.put("label", field.getLabel());
tag.put("repeatable", resolveCardinality(field.getCardinality()));
if (exportSelfDescriptiveCodes)
tag.put("solr", keyGenerator.forTag());
fields.put(field.getTag(), tag);
}
for (DataFieldDefinition field : simpleControlFields)
fields.put(field.getTag(), buildSImpleControlField(field));

return fields;
}

private Map<String, Object> buildSImpleControlField(DataFieldDefinition field) {
Map<String, Object> tag;
PositionalControlFieldKeyGenerator keyGenerator = new PositionalControlFieldKeyGenerator(field.getTag(), field.getMqTag(), parameters.getSolrFieldType());
tag = new LinkedHashMap<>();
tag.put("tag", field.getTag());
tag.put("label", field.getLabel());
tag.put("repeatable", resolveCardinality(field.getCardinality()));
if (exportSelfDescriptiveCodes)
tag.put("solr", keyGenerator.forTag());
return tag;
}

private Map<String, Object> buildLeader() {
Expand Down

0 comments on commit 17f41b8

Please sign in to comment.