You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Provide interface on top of *management implementations.
Make entities immutable and create proper update methods that state by signature what can be updated.
Introduce builder pattern for EntityFactory create methods and repository update methods.
Use IDs in signatures for searches, not complete entities
Consistent usage of Java 8 Optional in the interfaces (Repo shall never return null!)
Remove TargetInfo interfaces as this does not belong into the API. The very existence of this object is very Spring Data/JPA specific.
Consistent usage of paging (make sure that we never query everything)
Fix DMF model name clashes by means of renaming DMF model in similar pattern to the other APIs.
Check if we really always ned Page or is Slice sufficient
Split management services (e.g. DS and DS type)
Consistent naming of methods (see below)
Remove boiler plate
Remove external artifact (concept was never finished anyway and does not fit to hawkBit as of today)
Method naming concept (example target management)
// Count all targets
Long count()
// Count by filter parameter (example)
Long countByTargetFilterQuery(@NotEmpty String targetFilterQuery);
//Create entity
List<Target> create(@NotEmpty Collection<TargetCreate> create)
Target create(@NotNull TargetCreate create)
//Delete entities (throws EntityNotFoundException if one element does not exist (at least one not found in collection case))
void delete(@NotEmpty Collection<Long> targetIDs);
void delete(@NotNull Long targetID);
void deleteByControllerId(@NotEmpty String controllerId);
void deleteByControllerId(@NotEmpty Collection<String> controllerId);
//Update Target (throws EntityNotFoundException if one element does not exist (at least one not found in collection case))
List<Target> update(@NotEmpty Collection<TargetUpdate> update);
Target update(@NotNull TargetUpdate update);
//Exist
boolean exists(@NotNull Long targetId)
boolean existsByAssignedDistributionSet(@NotNull Long distributionSetID);
// Read methods
// Find one on technical ID (Optional, no EntityNotFoundException)
Optional<Target> get(@NotNull Long targetId);
List<Target> get(@NotEmpty Collection<Long> targetId);
// Find one on non-ID but unique constraint (Optional, no EntityNotFoundException)
Optional<Target> getByControllerID(@NotEmpty String controllerId);
List<Target> getByControllerID(@NotEmpty Collection<String> controllerId);
// Find one on non-ID but and non unique constraint (Optional, no EntityNotFoundException)
Optional<Target> findFirstByDescription(@NotEmpty String description);
// Query/search repository (page might be empty, no EntityNotFoundException) (note: pageReq always first in signature)
Page<Target> findByAssignedDistributionSet(@NotNull Pageable pageReq, @NotNull Long distributionSetID);
The text was updated successfully, but these errors were encountered:
Refactoring:
Remove boiler plate
Method naming concept (example target management)
The text was updated successfully, but these errors were encountered: