G
Gelöschtes Mitglied 68249
Gast
Hi,
ich drehe mich hier gerade geistig im Kreis.
Ich habe ein Interface:
Wichtig wird jetzt die searchElements Methode.
In einer Implementierung sieht diese z.B. so aus:
Ich verwende hier und in jeder weiteren Implementierung immer den GenericSearchHelper. Zuerst, um das Suchfeld von außen in das Konkrete Suchfeld hier um zu wandeln und später um das Suchergebnis aus der konkreten Implementierung in eine globale Form um zu wandeln. Dabei verwendet der GenericSearchHelper auf die Methode getFieldMapping aus dem Interface, damit wird hauptsächlich der Status eines Ergebnis in eine einheitliche Form gebracht (z.B. heißt es in einem System produktiv, im nächsten ist es nur eingebaut, im andern ist ein gefundenes System grundsätzlich produktiv...). Ich habe das bislang über Refelction gelöst, möchte davon aber aus Injection-Gründen weg. Kann ich also die Methode aus der aufrufenden Klasse irgendwie verwenden? Worst Case wäre den Helper auf zu lösen und direkt in jede Implementierung zu packen, würde mich aber stören, weil man nicht genau dieselbe Funktionalität mehrfach einzeln einbauen sollte.
ich drehe mich hier gerade geistig im Kreis.
Ich habe ein Interface:
Java:
public interface ReferenceController {
public List<SearchResultElement> searchElements(String searchField, Iterator<String> searchItemIterator) throws Exception;
public String getFieldMapping(Object value, String field) throws Exception;
public String isAvailable() throws Exception;
public ReferenceSystem getSystem();
}
In einer Implementierung sieht diese z.B. so aus:
Java:
@Override
public List<SearchResultElement> searchElements(String searchField, Iterator<String> searchItemIterator) throws Exception {
List<String> searchItemList = Lists.newArrayList(searchItemIterator);
Map<String, String> fieldMapping = referenceSystemConfig.getFieldMapping();
List<SearchResultElement> resultList = new ArrayList<>();
try {
String fiiSearchField = GenericSearchHelper.getSearchField(searchField, fieldMapping, REFSYSTEM);
FiiRestController client = new FiiRestController(referenceSystemConfig,systemConfig);
if(!"true".equals(client.isAvailable())) {
client.close();
return null;
}
resultList = client.search(fiiSearchField, searchItemList);
client.close();
} catch (NoMappingFoundException e) {}
GenericSearchHelper.fillNotFoundValues(REFSYSTEM, resultList, searchField, searchItemList,systemConfig);
return resultList;
}
Ich verwende hier und in jeder weiteren Implementierung immer den GenericSearchHelper. Zuerst, um das Suchfeld von außen in das Konkrete Suchfeld hier um zu wandeln und später um das Suchergebnis aus der konkreten Implementierung in eine globale Form um zu wandeln. Dabei verwendet der GenericSearchHelper auf die Methode getFieldMapping aus dem Interface, damit wird hauptsächlich der Status eines Ergebnis in eine einheitliche Form gebracht (z.B. heißt es in einem System produktiv, im nächsten ist es nur eingebaut, im andern ist ein gefundenes System grundsätzlich produktiv...). Ich habe das bislang über Refelction gelöst, möchte davon aber aus Injection-Gründen weg. Kann ich also die Methode aus der aufrufenden Klasse irgendwie verwenden? Worst Case wäre den Helper auf zu lösen und direkt in jede Implementierung zu packen, würde mich aber stören, weil man nicht genau dieselbe Funktionalität mehrfach einzeln einbauen sollte.