vestrel00/business-search-app-java
44.0
Weak · 21 September 2026
10k
lines of production code
Java
primary language
4
measurements over time
What this system is
This system is a business search application that retrieves and displays detailed information about businesses, including hours, location, and transaction types. It implements a clean architecture with distinct layers for data, domain logic, and multiple presentation interfaces (Android, Java Swing, and headless Java) using the Model-View-Presenter and Model-View-ViewModel patterns. The application leverages reactive programming with RxJava and dependency injection via Dagger 2 to manage background execution and UI updates.
Features
Add business details screen and navigation
Introduces a new BusinessDetailsActivity and its supporting MVP components (fragment, presenter, view interface) to display detailed information about a specific business. The update also adds a Navigator class to handle the transition from the business list to the details screen, and includes the necessary Dagger2 modules and injectors to wire up the new UI and presentation logic within the Android application's dependency injection graph.
presentation-java-android-mvp · high confidence
Added AbstractDisposableObserver base class for RxJava observers
A new abstract class, AbstractDisposableObserver, has been introduced in the common presentation layer to provide default empty implementations for onNext, onError, and onComplete. This allows subclasses to override only the methods they need, reducing boilerplate when working with RxJava's DisposableObserver.
presentation-java/src/main/java/com/vestrel00/business/search/presentation/java/common · high confidence
Added Android presentation layer with reusable dependency injection and UI components
The Android presentation module now includes a full set of Dagger modules for dependency injection, including configuration, execution threads, and network status providers. Execution thread bindings have been updated to use the @Reusable scope instead of @Singleton, allowing for more efficient object reuse. Additionally, a new LabeledInfoField UI component has been introduced, featuring a custom layout with configurable borders, icons, and text labels, supported by corresponding XML resources and attribute definitions.
presentation-java-android · high confidence
Added ApplicationRunner entry point for the Swing/MVP presentation layer
A new ApplicationRunner class has been added to the presentation-java-swing-mvp module. This class serves as the main entry point for the application, containing the standard Java main method, allowing users to launch the Swing-based MVP application directly.
presentation-java-swing-mvp · high confidence
Added BusinessDayToDayOfWeekMapper utility
A new utility class, BusinessDayToDayOfWeekMapper, was added to map business days (starting Monday) to Java Calendar day-of-week values (starting Sunday).
presentation-java/src/main/java/com/vestrel00/business/search/presentation/java/util · high confidence
Added Checkstyle configuration for code quality checks
Added a new Checkstyle configuration file (checkstyle.xml) along with supporting header and suppression files (java.header, xml.header, suppressions.xml) to enforce code quality standards, including checks for line length, method count/length, whitespace, and header templates.
config/quality/checkstyle · high confidence
Added Dagger module for Java presentation layer dependencies
A new Dagger module, PresentationJavaModule, has been introduced to provide dependencies for the Java presentation layer. This module includes the ModelModule, facilitating dependency injection for business search features in the Java environment.
presentation-java/src/main/java/com/vestrel00/business/search/presentation/java · high confidence
Added Java Swing presentation module
Introduced a new Dagger module, PresentationJavaSwingModule, which includes the existing PresentationJavaModule to provide dependencies for the Java Swing presentation layer.
presentation-java-swing · high confidence
Added Swing MVVM ApplicationRunner
A new ApplicationRunner class has been added to the presentation-java-swing-mvvm module. This class serves as the entry point for the Swing MVVM presentation layer, containing a main method to launch the application.
presentation-java-swing-mvvm · high confidence
Added business data models for hours, location, and transactions
Introduced new model classes to represent business information, including BusinessModel, BusinessHoursModel, and BusinessHourModel, which provide structured data for business hours, location, and coordinates. The update also adds BusinessTransactionTypeModel to support pickup, delivery, and reservation types, and defines a base Model interface to standardize serialization and default value handling across all model classes.
presentation-java/src/main/java/com/vestrel00/business/search/presentation/java/model · high confidence
Added data layer for business search including entities, parsers, and mappers
The data module now includes a complete set of entity classes (BusinessEntity, BusinessHoursEntity, LocationEntity, etc.) to represent API responses, along with corresponding domain models and mappers to convert between data and domain layers. This enables the application to parse, store, and map business search results, including details like hours, location, and transaction types.
data · high confidence
Added domain models for business search
The domain layer now includes new data models for business search, including Business, BusinessHours, BusinessHour, Coordinates, and Location, along with supporting types like DomainObject, DomainModule, and BusinessTransactionType. These classes define the structure for business information such as hours, location, and transaction types, enabling the application to handle and display detailed business data.
domain/src/main/java/com/vestrel00/business/search/domain · high confidence
Added domain use cases and repository interface for business search
The domain layer now includes a new UseCase interface and four new use cases: GetBusinessWithId, GetBusinessesAroundCoordinates, GetBusinessesAroundLocation, and GetBusinessesAroundLocationString. These interact with a new BusinessRepository interface that defines methods for retrieving business data by ID, coordinates, location, or location string, all returning RxJava Observables.
domain/src/main/java/com/vestrel00/business/search/domain/interactor · high confidence
Added no-GUI Java MVP presentation layer with dependency injection
The no-GUI Java presentation layer has been implemented using the Model-View-Presenter pattern with Dagger 2 for dependency injection. This includes the main application runner, UI components for business lists and details, display and executor modules, and the full MVP structure for handling business data. The application initializes and manages the lifecycle of the headless UI, allowing users to interact with business search and details features via the command line.
presentation-java-nogui-mvp · high confidence
Added stub files and build configuration for new Android presentation modules
New placeholder files have been added to the \presentation-java-android-mvvm\ and \presentation-kotlin-android-mvp\ modules. Each module now includes an \AndroidManifest.xml\ defining its package namespace, a \proguard-rules.pro\ file for build configuration, and a \TemporaryStub.java\ class. These changes establish the basic structure for these presentation layers, with the stubs likely serving as initial placeholders for future implementation.
presentation-java-android-mvvm, presentation-kotlin-android-mvp · medium confidence
Initial Gradle wrapper configuration for the project
The project now includes a Gradle wrapper configuration (gradle-wrapper.properties) that specifies Gradle version 3.4.1, enabling consistent build environment setup for users.
gradle · high confidence
Initial project structure and documentation
The repository was initialized with the core project files, including the Apache 2.0 LICENSE, a comprehensive README.md detailing the clean architecture, dependencies (RxJava, Dagger 2, Butterknife, Retrofit, Jackson, AutoValue, testing libraries), and build instructions. Additionally, a .travis.yml file was added to configure continuous integration for Android and Java modules, and a .gitignore file was updated to properly exclude build artifacts and IDE settings.
(repo-wide) · high confidence
Introduced BaseConfigModule for centralized API configuration
Added a new abstract class BaseConfigModule that provides a base configuration for API services, including the base URL, authentication credentials, and cache settings. This change introduces a structured way to manage configuration values such as the cache root directory, cache directory, maximum cache size, and offline cache duration, which can be extended by other config modules.
presentation-java/src/main/java/com/vestrel00/business/search/presentation/java/config · high confidence
New commons utility classes and module
Added new utility classes (CalendarFactory, MathUtils, StringUtils, TimeUtils) and a CommonsModule for dependency injection in the commons module. The utilities provide common functionality such as time formatting, string manipulation, and math conversions, all annotated with @Reusable for Dagger2 injection.
commons · high confidence
New domain executor infrastructure for background and main thread scheduling
The domain layer now includes a new executor package containing \ExecutionThread\ and \PostExecutionThread\ interfaces that define schedulers for background and main thread execution respectively. A corresponding \ExecutorModule\ provides a \CompositeDisposable\ for managing subscriptions. The \UseCaseHandler\ class orchestrates use case execution by subscribing to the execution thread's scheduler and observing results on the post-execution thread, while also caching the last executed use case and its parameters to allow re-execution. This structure supports the application's reactive architecture by separating execution and post-execution threading concerns.
domain/src/main/java/com/vestrel00/business/search/domain/executor · high confidence
Behavioural changes
1 commit (0 fixes) modifying config/android
A change to existing behaviour in config/android — 1 commit, 2 files.
config/android · medium confidence · unverified
Introduced new model mappers for business search data
Added new mappers to convert between domain objects and presentation models, including Business, BusinessHours, BusinessHour, Location, Coordinates, and BusinessTransactionType. This refactors the data layer to support the business list item redesign and the addition of business hours, transaction types, and other business attributes.
presentation-java/src/main/java/com/vestrel00/business/search/presentation/java/model/mapper · medium confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 63 → 44 (-19.0)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 98 (-1.6)
- Architecture 94 → 82 (-12.2)
- Maturity 58 → 53 (-4.6)
- Readiness 47 → 20 (-27.5)
- Security 100 → 71 (-28.9)
Resolved (16)
- Change coupling: BusinessDataRepository.java ↔ LocationFormatter.java (data/src/main/java/com/vestrel00/business/search/data/repository/BusinessDataRepository.java)
- Change coupling: BusinessEntity.java ↔ BusinessModelMapper.java (data/src/main/java/com/vestrel00/business/search/data/entity/BusinessEntity.java)
- Change coupling: BusinessEntityMapper.java ↔ BusinessEntityParser.java (data/src/main/java/com/vestrel00/business/search/data/entity/mapper/BusinessEntityMapper.java)
- Change coupling: BusinessEntityMapper.java ↔ BusinessModel.java (data/src/main/java/com/vestrel00/business/search/data/entity/mapper/BusinessEntityMapper.java)
- Change coupling: BusinessEntityMapper.java ↔ BusinessModelMapper.java (data/src/main/java/com/vestrel00/business/search/data/entity/mapper/BusinessEntityMapper.java)
- Change coupling: BusinessEntityParser.java ↔ Business.java (data/src/main/java/com/vestrel00/business/search/data/entity/parser/BusinessEntityParser.java)
- Change coupling: BusinessEntityParser.java ↔ BusinessModel.java (data/src/main/java/com/vestrel00/business/search/data/entity/parser/BusinessEntityParser.java)
- Change coupling: BusinessEntityParser.java ↔ BusinessModelMapper.java (data/src/main/java/com/vestrel00/business/search/data/entity/parser/BusinessEntityParser.java)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (11 lines × 4) (data/src/main/java/com/vestrel00/business/search/data/repository/BusinessDataRepository.java)
- Duplicated block (7 lines × 2) (data/src/main/java/com/vestrel00/business/search/data/entity/mapper/BusinessEntityMapper.java)
- Duplicated block (7 lines × 2) (presentation-java/src/main/java/com/vestrel00/business/search/presentation/java/model/mapper/BusinessModelMapper.java)
- No exposed public API
- Test reliability not included
- single-maintainer — knowledge-concentration (bus factor) risk
New (38)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no contributor guidance (README.md)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (14–15 lines × 4) (data/src/main/java/com/vestrel00/business/search/data/repository/BusinessDataRepository.java)
- Duplicated block (20 lines × 2) (data/src/main/java/com/vestrel00/business/search/data/entity/mapper/EntityListMapper.java)
- Duplicated block (6 lines × 2) (data/src/main/java/com/vestrel00/business/search/data/entity/mapper/CoordinatesEntityMapper.java)
- Duplicated block (6 lines × 4) (data/src/main/java/com/vestrel00/business/search/data/entity/mapper/BusinessEntityMapper.java)
- Duplicated block (7 lines × 2) (data/src/main/java/com/vestrel00/business/search/data/entity/mapper/BusinessEntityMapper.java)
- Duplicated block (7 lines × 2) (data/src/main/java/com/vestrel00/business/search/data/entity/mapper/BusinessHourEntityMapper.java)
- Duplicated block (8 lines × 2) (data/src/main/java/com/vestrel00/business/search/data/entity/mapper/EntityMapperHolder.java)
- Duplicated block (9 lines × 2) (data/src/main/java/com/vestrel00/business/search/data/entity/mapper/LocationEntityMapper.java)
- FixmeComment (data/src/main/java/com/vestrel00/business/search/data/entity/BusinessEntity.java)
- FixmeComment (data/src/main/java/com/vestrel00/business/search/data/entity/BusinessHourEntity.java)
- FixmeComment (data/src/main/java/com/vestrel00/business/search/data/entity/BusinessHoursEntity.java)
- FixmeComment (data/src/main/java/com/vestrel00/business/search/data/entity/CoordinatesEntity.java)
- FixmeComment (data/src/main/java/com/vestrel00/business/search/data/entity/LocationEntity.java)
- FixmeComment (data/src/main/java/com/vestrel00/business/search/data/repository/datasource/SmartBusinessDataStore.java)
- FixmeComment (presentation-java-android-mvp/src/debug/java/com/vestrel00/business/search/presentation/java/android/mvp/DebugAndroidApplication.java)
- FixmeComment (presentation-java-android/src/main/java/com/vestrel00/business/search/presentation/java/android/widget/LabeledInfoField.java)
- …and 18 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
vestrel00/business-search-app-java was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 5864a1789619842ebdc9ba8154056a125517fed1 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.