Project

General

Profile

Actions

Edit Team Meeting Topics

Topics to be discussed in coming meetings.


1) Widcards usage in service methods

Zu den Wildcards: Anscheinend funktionieren im Editor beide Varianten. Hab es eben ausprobiert. Hatte ursprünglich mit % versucht, da man das bei den Webservices verwenden muss. Zumindest funktioniert dort der * nicht.
Stimmt es, dass die Webservices „“ nicht übersetzen bzw. % die einzige mögliche Wildcard ist? Wenn ja, ist das so gewollt? Ich hätte ja eher die „“-Suche erwartet. % ist so SQL spezifisch.

Habs mir angeschaut. Das scheint ziemlicher Wildwuchs zu sein, weil die jeweiligen Implementierer von einzelnen Services das entweder im Blick hatten oder nicht.
Eine Methode, es zu erzwingen fällt mir gerade leider auch nicht ein, so dass man wohl lediglich durch alle Services durchgehen könnte und checken, ob das SQLize dort implementiert ist. Sollten wir mal besprechen.
AM

Eigentlich gibt es dafür schon einen Methode:.
eu.etaxonomy.cdm.persistence.query.MatchMode.queryStringFrom(String queryString)

TODO: Create ticket ...

2) Centralized initialization strategies

Ich habe schon des öfteren daran gedacht ob es nicht Sinn machen würde die Intialisierungs-Strategien zu zentralisieren.
Oftmals werden an vielen Stellen die selben verwendet, wobei immer wieder die selben Muster auftauchen.
Es wäre also auch eventuell möglich die Strategien zu modularisieren.

Bei Modelländerungen wäre es dann einfacher die entsprechenden Initialisierungsstrategien an zu passen. Wenn wir Klassen kreieren die die Initialisierungsstrategien ausgeben, also quasi ein InitStrategyBuilderFramework, das die property-path Strings liefert würden Refaktoriereungen noch sicher sein können.

All diese Gedanken nur in aller Kürze. Wir können das ja mal Mündlich besprechen.

Viele Grüße
Andreas

Ich denke auch, dass es Sinn macht das zu zentralisieren!
Vielleicht können wir Anfang nächster Woche uns dazu zusammen setzen.

Viele Grüße,
Katja

Ja, finde ich auch gut. Habe auch schon paar mal drüber nachgedacht, wie man das machen könnte. Bin gespannt, was ihr für Ideen habt.

Viele Grüße,
Andreas M.

TODO: Create ticket ...

3) Discuss/Decide conventions for service method names

  • get/list/load/find etc.

see also CdmLibraryConventions

TODO: Create ticket ...

4) DTOs

which package(s) for dto classes? Currently there are multiple places:

  • eu.etaxonomy.cdm.strategy.cache - src/main/java - cdmlib-model
    • TaggedText
  • eu.etaxonomy.cdm.api.service.dto - src/main/java - cdmlib-services
    • DerivateDataDTO
    • DerivateDTO
    • DistributionInfoDTO
    • EntityDTO
    • FieldUnitDTO
    • GroupedTaxonDTO
    • IdentifiedEntityDTO
    • IncludedTaxaDTO
    • MarkedEntityDTO
    • PreservedSpecimenDTO
    • RegistrationDTO
    • RowWrapperDTO
    • TaxonInContextDTO
  • eu.etaxonomy.cdm.ext.geo - src/main/java - cdmlib-ext
    • OccurrenceServiceRequestParameterDto
  • eu.etaxonomy.cdm.persistence.dto - src/main/java - cdmlib-persistence
    • ClassificationLookupDTO
    • TaxonNodeDto
    • TermDto
  • eu.etaxonomy.cdm.remote.dto.common - src/main/java - cdmlib-remote
    • StringResultDTO
  • eu.etaxonomy.cdm.remote.dto.polytomouskey - src/main/java - cdmlib-remote

    • AbstractLinkDto
    • LinkedPolytomousKeyNodeRowDto
    • PolytomousKeyNodeLinkDto
    • TaxonLinkDto
  • eu.etaxonomy.cdm.vaadin.event - src/main/java - cdm-vaadin

    • ShowDetailsEventEntityTypeFilter
    • RegistrationDTO
  • eu.etaxonomy.cdm.vaadin.model - src/main/java - cdm-vaadin

    • CdmEntityAdapterDTO
    • DbTableDTO
    • DistributionDTO
    • StatusDTO
  • eu.etaxonomy.cdm.vaadin.model.common - src/main/java - cdm-vaadin

    • AgentBaseDTO
    • InstitutionDTO
  • eu.etaxonomy.cdm.vaadin.model.name - src/main/java - cdm-vaadin

    • NameRelationshipDTO
    • TaxonNameDTO
  • eu.etaxonomy.cdm.vaadin.model.registration - src/main/java - cdm-vaadin

    • SpecimenTypeDesignationDTO
    • SpecimenTypeDesignationWorkingSetDTO
  • Build DTO class hierarchy which bases on EntityDTOBase as parallel model to the cdm model?

  • Should associated entities be modled in the DTO as UuidAndTitleCache oder TypedEntityReferece ?

    • ==> build EntityReferece class hierarchy? EntityReferece <----- TypedEntityReferece <--- UuidAndTitleCache (title caches exist only in IdentifiableEntity, whereas TypedEntityReferece is more general)
  • Discuss https://martinfowler.com/bliki/LocalDTO.html

  • DTOs are per definition a pattern for remote layers:

(from email conversation DTO Klassen die ihr eigener Object Adapter sind? 25.07.18 14:06)
Die DTOs gehen auf Martin Fowler zurück und der benennt den Zweck von DTOs so: "An object that carries data between processes in order to reduce the number of method calls." (https://martinfowler.com/eaaCatalog/dataTransferObject.html). Es geht also in erster Linie darum, die Performance von Remote-Zugriffen zu verbessern.

Auch wikipedia nennt dies als primären Zweck (https://en.wikipedia.org/wiki/Data_transfer_object) und ergänzt dies noch durch "The difference between data transfer objects and business objects or data access objects is that a DTO does not have any behavior except for storage, retrieval, serialization and deserialization of its own data (mutators, accessors, parsers and serializers). In other words, DTOs are simple objects that should not contain any business logic but may contain serialization and deserialization mechanisms for transferring data over the wire."

Outcome of the discussion on 2018-08-01 (Katja Luther, Andreas Müller, Andreas Kohlbecker):

  • All (almost all) DTO classes should be in the same package in each of the cdmlib projects: eu.etaxonomy.cdm.dto
  • All DTOs for CDM entities will be based on a common base class which itself will extend eu.etaxonomy.cdm.ref.TypedEntityReference:

abstract class CdmBaseDTO<T extends CdmBase> extends TypedEntityReference<T> {
...
}
  • All fields which contain localized strings should be suffixed with _L10n
  • DTOs should use TypedEntityReference for all fields which refer to a cdm entity instead of only holding the string representation.
  • DTOs should use a TermDTOwherever a cdm TermBase is referenced, see eu.etaxonomy.cdm.remote.json.processor.bean.TermBaseBeanProcessor
  • >>> TODO Please complete if something is missing ....

Updated by Andreas Kohlbecker over 5 years ago · 6 revisions