mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-12-27 09:00:28 +08:00
802f0749eb
* Plan api module * Information annotations for DataExtension API * Added BooleanProvider annotation * Added NumberProvider * Added DoubleProvider * Added PercentageProvider * Added StringProvider * Retention and Target to Providers * Validation class for annotations * Refactored ExtensionExtractor, Added Group parameter * Method names used as provider identifiers * Begun work on extracting data providers * Provider Extraction + priority to Providers: Implemented methods for extracting each kind of Provider annotation related method information to a DataProvider. DataProviders required some duplicate code due to type erasure of the parameter class. ---- Added Display-priority to Providers, highest value is placed top most. InvalidateMethod annotations are now extracted. * Small amount of code cleanup * Storage of plugin info, icon and tabs of DataExtension * Simplified Provider method calling: - Added an enum for each method kind - Moved parameter resolution to the end of the chain, right before invoking the method. - The enum is used for storage in DataProviders for easier access. - ProviderInformation created as early as possible * Player data gathering for all providers: - Incremental condition resolution of BooleanProvider conditions - Gathering of Number and String values - Gathering and disambiguation between double and percentage providers. * Storage of Provider icons * String provider extra info * plan_extension_providers table information * plan_extension_user_values table information * BooleanProvider store transaction * NumberProvider store transaction * StringProvider store transaction * DoubleProvider, PercentageProvider store transaction * Boolean result store transaction * Double result store transaction * Number result store transaction * Percentage result store transaction * String result store transaction * Transaction for removing invalid providers from storage * Interface for registering DataExtensions * ExtensionService implementation * Handling of by default empty annotation values * Extension table create table statements * Annotation String length enforcement: - Description is 150 characters max, truncated - Others are 50 characters max, truncated - StringProvider value is 50 characters max, truncated * Logging of implementation mistake warnings * Added 'extensions' module: - Module is in charge of registering built in DataExtensions - This is done via ExtensionRegister * Config enable check for DataExtension registration * Fixed Extension SQL syntax errors * Debug logging of DataExtension registration * Extension data updating to login listeners * Fix Extension SQL Syntax errors related to id selection * Fixed many Extension Provider store errors * Data objects for extension data about a player These objects make it easier to construct query data from database. * Fix flipped double and percentage storage transactions * getByName to Extension enums * Query for DataExtension data of a single player * Deprecated player plugin tab related things * DataExtension API player page plugin tab generation * Registered AdvancedBan extension * Added BooleanProvider#hidden * Added Conditional#negated * Added booleans to PluginInfo for controlling method calls. * Bump extension API to 0.0.2 * Extract method call booleans from PluginInfo * Added flow for Negated conditions Negated conditions' names are prefixed with not_ This allows checking against negated Conditionals and does not need adding more table rows. * Registered BanManager Extension * Transaction for removing unsatisfied Conditional data: This is one of the most complex queries I have made. - Select all fulfilled conditions for all players (conditionName when true and not_conditionName when false) - Left join with player value & provider tables when uuids match, and when condition matches a condition in the query above. - Filter the join query for values where the condition did not match any provided condition in the join (Is null) - Delete all player values with IDs that are returned by the left join query after filtering In addition: - Added test for the transaction - Added extension data removal to RemoveEverythingTransaction - Added unregister method to ExtensionService * Reverse table names since MySQL can not select and update: More information https://stackoverflow.com/questions/4429319/you-cant-specify-target-table-for-update-in-from-clause Attempts to fix: 'You can't specify target table 'plan_extension_user_values' for update in FROM clause' * Nest query since MySQL can not select and update: More information https://stackoverflow.com/a/9843719 Attempts to fix: 'You can't specify target table 'plan_extension_user_values' for update in FROM clause' * Added missing "as ..." to the query: Attempts to fix "Every derived table must have its own alias" * Added comment about nested query * Implemented BooleanProvider hidden parameter * Bump extension versions * Registered DiscordSRV extension * Fixing some new code smells: Critical: - String literal duplication fixed in a few places - Cognitive complexity reduced in BooleanProviderValueGatherer Major: - Called Optional#isPresent before accessing value 16 instances in ProviderTransactions - private constructor to Extension tables - Missing deprecated tags to deprecated plugin tab stuff - Unused class variable removal - Throw dedicated exceptions in ServerServerInfo - Unused method removal Minor: - Renamed 'API' field to 'service' in ExtensionService - Unused variable removal * Fix SQL error introduced when 'hidden' was added * Color replacement to StringProvider values * Gatherer methods for server providers * Storage for extension server data * Moved some results classes around * ExtensionServerData class * Fixed ConfigReader sometimes adding empty string to a null value. * ExtensionServerDataQuery + BooleanAggregateQuery: - Queries plan_extension_server_values - Queries plan_extension_player_values for aggregates * More Aggregate Queries * Server ExtensionData visualization * Network ExtensionData visualization * Removed date values from number aggregate query * Registered Essentials extension * Registered Sponge Economy Extension * Removed update booleans from PluginInfo * More flexible definition of calling Extension methods * Implemented Caller and CallEvents filtering * Implemented Extension player method calls * CallEvents.SERVER_EXTENSION_REGISTER call * CallEvents.SERVER_PERIODICAL calls * Updated extension versions * Updated Essentials extension * Fixed 'sponge' module test errors * Fix some code smells * Fixed Transaction#executeOther when using dbType * Fixed Aggregate label issues * TableContainer no longer displays 'null' * '(Legacy)' added to PluginData tabs |
||
---|---|---|
.github/ISSUE_TEMPLATE | ||
docs | ||
Plan | ||
PlanPluginBridge | ||
scripts | ||
.gitattributes | ||
.gitignore | ||
.travis.yml | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
LICENSE | ||
README.md | ||
versions.txt |
Player Analytics is a Bukkit plugin that gathers data about player activity & displays that data on an internal webserver. Originally the plugin only displayed data of other plugins, but now it gathers it's own data, while displaying data from various other plugins.
Links
Documentation
Documentation can be found On the Wiki