From e33b1a3a4ccd6ccf9a592733645df39538439065 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Sun, 3 Sep 2023 18:14:06 +0200 Subject: [PATCH] Do not list form references twice as dataform and unterformular --- src/model/data_form.rs | 31 ++++++++----------------------- src/model/unterformular.rs | 31 ++++++++----------------------- 2 files changed, 16 insertions(+), 46 deletions(-) diff --git a/src/model/data_form.rs b/src/model/data_form.rs index 8900964..a51ac57 100644 --- a/src/model/data_form.rs +++ b/src/model/data_form.rs @@ -256,7 +256,7 @@ impl Comparable for DataForm { impl Requires for DataForm { fn get_required_entries<'a>(&'a self, all: &'a OnkostarEditor) -> Vec { - let mut data_catalogues = self + let mut result = self .data_catalogues .data_catalogue .iter() @@ -268,7 +268,7 @@ impl Requires for DataForm { }) .collect::>(); - let data_forms = &mut self + let referenced_forms = &mut self .entries .entry .iter() @@ -281,30 +281,15 @@ impl Requires for DataForm { .into_iter() .map(|entry| match all.find_data_form(entry.as_str()) { Some(contained) => Requirement::DataFormReference(contained), - None => Requirement::ExternalDataFormReference(entry.to_string()), + None => match all.find_unterformular(entry.as_str()) { + Some(contained) => Requirement::UnterformularReference(contained), + None => Requirement::ExternalUnterformularReference(entry.to_string()), + }, }) .collect::>(); - data_catalogues.append(data_forms); + result.append(referenced_forms); - let unterformulare = &mut self - .entries - .entry - .iter() - .filter(|&entry| entry.get_type() == "formReference") - .filter_map(|entry| match &entry.referenced_data_form { - Some(name) => Some(name), - None => None, - }) - .collect::>() - .into_iter() - .map(|entry| match all.find_unterformular(entry.as_str()) { - Some(contained) => Requirement::UnterformularReference(contained), - None => Requirement::ExternalUnterformularReference(entry.to_string()), - }) - .collect::>(); - data_catalogues.append(unterformulare); - - data_catalogues + result } fn to_requirement_string<'a>(&'a self, all: &'a OnkostarEditor) -> String { diff --git a/src/model/unterformular.rs b/src/model/unterformular.rs index c85f918..3876b3f 100644 --- a/src/model/unterformular.rs +++ b/src/model/unterformular.rs @@ -260,7 +260,7 @@ impl Comparable for Unterformular { impl Requires for Unterformular { fn get_required_entries<'a>(&'a self, all: &'a OnkostarEditor) -> Vec { - let mut data_catalogues = self + let mut result = self .data_catalogues .data_catalogue .iter() @@ -272,7 +272,7 @@ impl Requires for Unterformular { }) .collect::>(); - let data_forms = &mut self + let referenced_forms = &mut self .entries .entry .iter() @@ -285,30 +285,15 @@ impl Requires for Unterformular { .into_iter() .map(|entry| match all.find_data_form(entry.as_str()) { Some(contained) => Requirement::DataFormReference(contained), - None => Requirement::ExternalDataFormReference(entry.to_string()), + None => match all.find_unterformular(entry.as_str()) { + Some(contained) => Requirement::UnterformularReference(contained), + None => Requirement::ExternalUnterformularReference(entry.to_string()), + }, }) .collect::>(); - data_catalogues.append(data_forms); + result.append(referenced_forms); - let unterformulare = &mut self - .entries - .entry - .iter() - .filter(|&entry| entry.get_type() == "formReference") - .filter_map(|entry| match &entry.referenced_data_form { - Some(name) => Some(name), - None => None, - }) - .collect::>() - .into_iter() - .map(|entry| match all.find_unterformular(entry.as_str()) { - Some(contained) => Requirement::UnterformularReference(contained), - None => Requirement::ExternalUnterformularReference(entry.to_string()), - }) - .collect::>(); - data_catalogues.append(unterformulare); - - data_catalogues + result } fn to_requirement_string<'a>(&'a self, all: &'a OnkostarEditor) -> String {