*
* @return $lastException Last thrown exception
*/
- public final function getLastException () {
+ public final function getLastException (): FrameworkException {
return $this->lastException;
}
* @param $lastException Last thrown exception
* @return void
*/
- public final function setLastException (FrameworkException $exceptionInstance) {
+ public final function setLastException (FrameworkException $exceptionInstance): void {
$this->lastException = $exceptionInstance;
}
*
* @return void
*/
- protected final function resetLastException () {
+ protected final function resetLastException (): void {
$this->lastException = NULL;
}
* @param $data An array with possible non-public data that needs to be removed.
* @return $data A cleaned up array with only public data.
*/
- public abstract function removeNonPublicDataFromArray (array $data);
+ public abstract function removeNonPublicDataFromArray (array $data): array;
}
*
* @return $databaseInstance An instance of CachedLocalFileDatabase
*/
- public static final function createCachedLocalFileDatabase () {
+ public static final function createCachedLocalFileDatabase (): DatabaseBackend {
// Get an instance
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('CACHED-LOCAL-FILE-DATABASE: CALLED!');
$databaseInstance = new CachedLocalFileDatabase();
* @param $infoInstance The FQFN of the last read file
* @return void
*/
- private function setLastFile (SplFileInfo $infoInstance) {
+ private function setLastFile (SplFileInfo $infoInstance): void {
// Cast string and set it
$this->lastFile = $infoInstance;
}
*
* @return $lastFile The last read file's name with full path
*/
- public final function getLastFile () {
+ public final function getLastFile (): SplFileInfo {
return $this->lastFile;
}
* @param $contents An array with header and data elements
* @return void
*/
- private function setLastFileContents (array $contents) {
+ private function setLastFileContents (array $contents): void {
// Set array
$this->lastContents = $contents;
}
*
* @return $lastContent The array with elements 'header' and 'data'.
*/
- public final function getLastContents () {
+ public final function getLastContents (): array {
return $this->lastContents;
}
*
* @return $fileExtension The array with elements 'header' and 'data'.
*/
- public final function getFileExtension () {
+ public final function getFileExtension (): string {
return $this->fileExtension;
}
*
* @return $indexKey Index key
*/
- public final function getIndexKey () {
+ public final function getIndexKey (): string {
return $this->indexKey;
}
* @param $infoInstance An instance of a SplFileInfo class
* @return $dataArray
*/
- private function getDataArrayFromFile (SplFileInfo $infoInstance) {
+ private function getDataArrayFromFile (SplFileInfo $infoInstance): array {
// Init compressed data
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('CACHED-LOCAL-FILE-DATABASE: infoInstance=%s - CALLED!', $infoInstance->__toString()));
$compressedData = $this->getFileIoInstance()->loadFileContents($infoInstance);
* @param $dataArray An array with all the data we shall write
* @return void
*/
- private function writeDataArrayToFqfn (SplFileInfo $infoInstance, array $dataArray) {
+ private function writeDataArrayToFqfn (SplFileInfo $infoInstance, array $dataArray): void {
// Serialize and compress it
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('CACHED-LOCAL-FILE-DATABASE: Flushing ' . count($dataArray) . ' elements to database file ' . $infoInstance . ' ...');
$compressedData = $this->getCompressorChannelInstance()->getCompressor()->compressStream(json_encode($dataArray));
* @param $dataSetInstance An instance of a database set class
* @return $infoArray An array with all table informations
*/
- private function getContentsFromTableInfoFile (StoreableCriteria $dataSetInstance) {
+ private function getContentsFromTableInfoFile (StoreableCriteria $dataSetInstance): array {
// Default content is no data
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('CACHED-LOCAL-FILE-DATABASE: dataSetInstance=%s - CALLED!', $dataSetInstance->__toString()));
$infoArray = [];
* @param $rowName Name of the row
* @return $infoInstance An instance of a SplFileInfo class
*/
- private function generateFileFromDataSet (Criteria $dataSetInstance, string $rowName) {
+ private function generateFileFromDataSet (Criteria $dataSetInstance, string $rowName): SplFileInfo {
// Instanciate new file object
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('CACHED-LOCAL-FILE-DATABASE: dataSetInstance=%s,rowName=%s - CALLED!', $dataSetInstance->__toString(), $rowName));
$infoInstance = new SplFileInfo(FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('local_database_path') . $dataSetInstance->getTableName() . DIRECTORY_SEPARATOR . $rowName . '.' . $this->getFileExtension());
* @param $dataSetInstance An instance of a database set class
* @return void
*/
- private function createTableInfoFile (StoreableCriteria $dataSetInstance) {
+ private function createTableInfoFile (StoreableCriteria $dataSetInstance): void {
// Get table name
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('CACHED-LOCAL-FILE-DATABASE: dataSetInstance=%s - CALLED!', $dataSetInstance->__toString()));
$tableName = $dataSetInstance->getTableName();
* @param $dataSetInstance An instance of a database set class
* @return void
*/
- private function updateTableInfoFile (StoreableCriteria $dataSetInstance) {
+ private function updateTableInfoFile (StoreableCriteria $dataSetInstance): void {
// Get table name from criteria
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('CACHED-LOCAL-FILE-DATABASE: dataSetInstance=%s - CALLED!', $dataSetInstance->__toString()));
$tableName = $dataSetInstance->getTableName();
* @param $dataSetInstance An instance of a database set class
* @return void
*/
- private function updatePrimaryKey (StoreableCriteria $dataSetInstance) {
+ private function updatePrimaryKey (StoreableCriteria $dataSetInstance): void {
// Get table name from criteria
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('CACHED-LOCAL-FILE-DATABASE: dataSetInstance=%s - CALLED!', $dataSetInstance->__toString()));
$tableName = $dataSetInstance->getTableName();
* @return void
* @todo Do some checks on the database directory and files here
*/
- public function connectToDatabase () {
+ public function connectToDatabase (): void {
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('CACHED-LOCAL-FILE-DATABASE: CALLED!');
}
* @throws UnsupportedCriteriaException If the criteria is unsupported
* @throws SqlException If an 'SQL error' occurs
*/
- public function querySelect (string $tableName, LocalSearchCriteria $searchInstance) {
+ public function querySelect (string $tableName, LocalSearchCriteria $searchInstance): array {
// Validate parameter
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('CACHED-LOCAL-FILE-DATABASE: tableName=%s,searchInstance=%s - CALLED!', $tableName, $searchInstance->__toString()));
if (empty($tableName)) {
* @return void
* @throws SqlException If an SQL error occurs
*/
- public function queryInsertDataSet (StoreableCriteria $dataSetInstance) {
+ public function queryInsertDataSet (StoreableCriteria $dataSetInstance): void {
// Try to save the request away
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('CACHED-LOCAL-FILE-DATABASE: dataSetInstance=%s - CALLED!', $dataSetInstance->__toString()));
try {
* @throws InvalidArgumentException If $tableName is empty
* @throws SqlException If an SQL error occurs
*/
- public function queryUpdateDataSet (StoreableCriteria $dataSetInstance) {
+ public function queryUpdateDataSet (StoreableCriteria $dataSetInstance): void {
// Get table name
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('CACHED-LOCAL-FILE-DATABASE: dataSetInstance=%s - CALLED!', $dataSetInstance->__toString()));
$tableName = $dataSetInstance->getTableName();
* @throws InvalidArgumentException If a parameter is not valid
* @todo Rename method to getPrimaryKeyFromTableInfo()
*/
- public function getPrimaryKeyOfTable (string $tableName) {
+ public function getPrimaryKeyOfTable (string $tableName): ?string {
// Validate parameter
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('CACHED-LOCAL-FILE-DATABASE: tableName=%s - CALLED!', $tableName));
if (empty($tableName)) {
* @throws BadMethodCallException If some non-public is already not found but method was called
* @todo Add more generic non-public data for removal
*/
- public function removeNonPublicDataFromArray (array $data) {
+ public function removeNonPublicDataFromArray (array $data): array {
// Check parameter
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('CACHED-LOCAL-FILE-DATABASE: data()=%d - CALLED!', count($data)));
if (!isset($data[$this->getIndexKey()])) {
* @return $count Total rows of given table
* @throws InvalidArgumentException If a parameter is not valid
*/
- public function countTotalRows (string $tableName) {
+ public function countTotalRows (string $tableName): int {
// Validate parameter
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('CACHED-LOCAL-FILE-DATABASE: tableName=%s - CALLED!', $tableName));
if (empty($tableName)) {
use Org\Mxchange\CoreFramework\Criteria\Storing\StoreableCriteria;
use Org\Mxchange\CoreFramework\Database\Backend\BaseDatabaseBackend;
use Org\Mxchange\CoreFramework\Factory\Object\ObjectFactory;
+use Org\Mxchange\CoreFramework\Generic\FrameworkException;
use Org\Mxchange\CoreFramework\Object\BaseFrameworkSystem;
use Org\Mxchange\CoreFramework\Result\Search\SearchableResult;
use Org\Mxchange\CoreFramework\Traits\Cache\CacheableTrait;
* @param $onlyKeys Only use these keys for a cache key
* @return $numRows Numbers of rows of database entries
*/
- public function doSelectCountByCriteria (Criteria $criteriaInstance, array $onlyKeys = []) {
+ public function doSelectCountByCriteria (Criteria $criteriaInstance, array $onlyKeys = []): int {
// Total numbers is -1 so we can distinglish between failed and valid queries
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('BASE-DATABASE-FRONTEND: criteriaInstance=%s,onlyKeys()=%d - CALLED!', $criteriaInstance->__toString(), count($onlyKeys)));
$numRows = 0;
*
* @return $primaryKey Primary key used in wrapped table
*/
- public final function generatePrimaryKey () {
+ public final function generatePrimaryKey (): ?string {
// Get the table name and a database instance and ask for it
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('BASE-DATABASE-FRONTEND: CALLED!');
$primaryKey = FrameworkBootstrap::getDatabaseInstance()->getPrimaryKeyOfTable($this->getTableName());
*
* @return $count Count of total rows in this table
*/
- public final function countTotalRows () {
+ public final function countTotalRows (): int {
// Get the table name and a database instance and ask for it
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('BASE-DATABASE-FRONTEND: CALLED!');
$count = FrameworkBootstrap::getDatabaseInstance()->countTotalRows($this->getTableName());
* @return $data A cleaned up array with only public data.
* @throws InvalidArgumentException If a parameter has an invalid value
*/
- public function removeNonPublicDataFromArray (array $data) {
+ public function removeNonPublicDataFromArray (array $data): array {
// Check parameter
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('BASE-DATABASE-FRONTEND: data()=%d - CALLED!', count($data)));
if (count($data) == 0) {
// Import framework stuff
use Org\Mxchange\CoreFramework\Database\Frontend\BaseDatabaseFrontend;
+use Org\Mxchange\CoreFramework\Database\Frontend\DatabaseFrontend;
use Org\Mxchange\CoreFramework\Registry\Registerable;
/**
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-class NewsDatabaseFrontend extends BaseDatabaseFrontend implements Registerable {
+class NewsDatabaseFrontend extends BaseDatabaseFrontend implements DatabaseFrontend, Registerable {
// Constants for database table names
const DB_TABLE_NEWS = 'news';
// Import framework stuff
use Org\Mxchange\CoreFramework\Database\Frontend\BaseDatabaseFrontend;
+use Org\Mxchange\CoreFramework\Database\Frontend\DatabaseFrontend;
use Org\Mxchange\CoreFramework\Registry\Registerable;
/**
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-class PaymentsDatabaseFrontend extends BaseDatabaseFrontend implements Registerable {
+class PaymentsDatabaseFrontend extends BaseDatabaseFrontend implements DatabaseFrontend, Registerable {
// Constants for exceptions
const EXCEPTION_CLIENT_USERNAME_NOT_FOUND = 0x180;
*
* @return $frontendInstance An instance of the created frontend class
*/
- public static final function createPaymentsDatabaseFrontend (): BaseDatabaseFrontend {
+ public static final function createPaymentsDatabaseFrontend (): DatabaseFrontend {
// Get a new instance
$frontendInstance = new PaymentsDatabaseFrontend();
*
* @return $frontendInstance An instance of the created frontend class
*/
- public static final function createUserDatabaseFrontend () {
+ public static final function createUserDatabaseFrontend (): ManageableAccountFrontend {
// Get a new instance
$frontendInstance = new UserDatabaseFrontend();
* @param $registrationInstance An instance of a registration class
* @return void
*/
- public function insertRegistrationObject (UserRegister $registrationInstance) {
+ public function insertRegistrationObject (UserRegister $registrationInstance): void {
// Generate a data set for the request
$dataSetInstance = ObjectFactory::createObjectByConfiguredName('dataset_criteria_class', array(self::DB_TABLE_USER));
* @return void
* @throws NullPointerException If $updateInstance or $searchInstance is null
*/
- public function doUpdateByResult (UpdateableResult $resultInstance) {
+ public function doUpdateByResult (UpdateableResult $resultInstance): void {
// Get the search instance from result
$searchInstance = $resultInstance->getSearchInstance();
*
* @return $frontendInstance An instance of the created frontend class
*/
- public static final function createUserPointsDatabaseFrontend () {
+ public static final function createUserPointsDatabaseFrontend (): BookablePointsFrontend {
// Get a new instance
$frontendInstance = new UserPointsDatabaseFrontend();
* @param $pointsInstance An instance of a user class
* @return void
*/
- public function insertUserPoints (BookablePoints $pointsInstance) {
+ public function insertUserPoints (BookablePoints $pointsInstance): void {
// Generate a data set for the request
$dataSetInstance = ObjectFactory::createObjectByConfiguredName('dataset_criteria_class', array(self::DB_TABLE_USER_POINTS));
* @param $resultInstance An instance of a UpdateableResult class
* @return void
*/
- public function doUpdateByResult (UpdateableResult $resultInstance) {
+ public function doUpdateByResult (UpdateableResult $resultInstance): void {
// Generate a data set object
$dataSetInstance = ObjectFactory::createObjectByConfiguredName('dataset_criteria_class', array(self::DB_TABLE_USER_POINTS));
* @return void
* @throws InvalidArgumentException If a parameter is not valid
*/
- protected static final function countObject (string $fullClassName) {
+ protected static final function countObject (string $fullClassName): void {
// Is the parameter valid?
if (empty($fullClassName)) {
// No empty class name
*
* @return $total Total amount of generated objects
*/
- public static final function getTotal () {
+ public static final function getTotal (): int {
return self::$total;
}
*
* @return $objectCounters An array with all object counters
*/
- public static final function getAllCounters () {
+ public static final function getAllCounters (): array {
return self::$objectCounters;
}
* @return $isCounted Whether given class name is counted
* @throws InvalidArgumentException If a parameter is not valid
*/
- public static final function isClassCounted (string $fullClassName) {
+ public static final function isClassCounted (string $fullClassName): bool {
// Is the parameter valid?
if (empty($fullClassName)) {
// No empty class name
* @param $socketResource An instance of a Socket class (optional)
* @return $clientInstance An instance of the requested client
*/
- public static final function createClientByProtocolInstance (HandleableProtocol $protocolInstance, Socket $socketResource = NULL) {
+ public static final function createClientByProtocolInstance (HandleableProtocol $protocolInstance, Socket $socketResource = NULL): ClientFactory {
// Default is NULL (to initialize variable)
$clientInstance = NULL;
namespace Org\Mxchange\CoreFramework\Factory\Database\Frontend;
// Import framework stuff
+use Org\Mxchange\CoreFramework\Database\Frontend\DatabaseFrontend;
use Org\Mxchange\CoreFramework\Factory\BaseFactory;
use Org\Mxchange\CoreFramework\Factory\Object\ObjectFactory;
use Org\Mxchange\CoreFramework\Generic\FrameworkInterface;
*
* @return void
*/
- public final static function staticInitializer () {
+ public final static function staticInitializer (): void {
// Is it initialized?
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('frontend-FACTORY: self::registryInstance[]=%s - CALLED!', gettype(self::$registryInstance)));
if (is_null(self::$registryInstance)) {
* the registry it will be returned, else a new instance is created and
* stored in the same registry entry.
*
- * @return $frontendInstance A database frontend instance
+ * @return $frontendInstance An instance of a DatabaseFrontend class
*/
- public static final function createFrontendByConfiguredName (string $frontendName) {
+ public static final function createFrontendByConfiguredName (string $frontendName): DatabaseFrontend {
// Check parameter
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('DATABASE-FRONTEND-FACTORY: frontendName=%s - CALLED!', $frontendName));
if (empty($frontendName)) {
use Org\Mxchange\CoreFramework\Bootstrap\FrameworkBootstrap;
use Org\Mxchange\CoreFramework\Factory\BaseFactory;
use Org\Mxchange\CoreFramework\Factory\Object\ObjectFactory;
+use Org\Mxchange\CoreFramework\Reader\News\ReadableNews;
use Org\Mxchange\CoreFramework\Request\Requestable;
/**
* request
*
* @param $requestInstance An instance of a Requestable class
- * @return $factoryInstance An instance of a HtmlNewsFactory class
+ * @return $factoryInstance An instance of a ReadableNews class
*/
- public static final function createFactoryByRequest (Requestable $requestInstance) {
+ public static final function createFactoryByRequest (Requestable $requestInstance): ReadableNews {
// Set default news reader class
$configEntry = 'news_reader_class';
$className = FrameworkBootstrap::getConfigurationInstance()->getConfigEntry($configEntry);
// Once we have that name, try to load initialize it
- $newsInstance = ObjectFactory::createObjectByName($className, array($requestInstance));
+ $newsInstance = ObjectFactory::createObjectByName($className, [$requestInstance]);
// Initialize the reader
$newsInstance->initializeReader();
* @return $indexInstance An instance of a IndexableStack class
* @throws InvalidArgumentException If a parameter is invalid
*/
- public static final function createFileStackIndexInstance (SplFileInfo $fileInfoInstance, string $type) {
+ public static final function createFileStackIndexInstance (SplFileInfo $fileInfoInstance, string $type): FileStackIndexFactory {
// If there is no handler?
if (empty($type)) {
// Throw IAE
* @param $requestInstance An instance of a Requestable class
* @return $loginInstance An instance of a login helper (@TODO Use actual interface name)
*/
- public static final function createLoginObjectByRequest (Requestable $requestInstance) {
+ public static final function createLoginObjectByRequest (Requestable $requestInstance): LoginFactory {
// Get registry instance
$registryInstance = ObjectRegistry::getRegistry('factory');
* @throws NoClassException If the requested class was not found
* @throws InvalidArgumentException If className is empty or the name not following naming-convention
*/
- public static final function createObjectByName (string $fullClassName, array $args = []) {
+ public static final function createObjectByName (string $fullClassName, array $args = []): FrameworkInterface {
// Is the class name valid and is the class there?
if (empty($fullClassName)) {
// Throw an exception here
* @param $args Arguments in an indexed array
* @return $objectInstance An instance of the requested object
*/
- public static final function createObjectByConfiguredName (string $configKey, array $args = []) {
+ public static final function createObjectByConfiguredName (string $configKey, array $args = []): FrameworkInterface {
// Read the configuration entry
$fullClassName = FrameworkBootstrap::getConfigurationInstance()->getConfigEntry($configKey);
* @param $fullClassName Class name with namespace
* @return $shortClassName Stripped class name (no namespace)
*/
- private static function stripNamespaceFromClassName (string $fullClassName) {
+ private static function stripNamespaceFromClassName (string $fullClassName): string {
// The class name should contain at least 2 back-slashes, so split at them
$classNameParts = explode("\\", $fullClassName);
*
* @return $registryInstance A socket registry instance
*/
- public static final function createSocketRegistryInstance () {
+ public static final function createSocketRegistryInstance (): SocketRegistryFactory {
// Get registry instance
/* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('SOCKET-REGISTRY-FACTORY: CALLED!');
$objectRegistryInstance = ObjectRegistry::getRegistry('factory');
* @param $stackName Name of the stack
* @return $stackInstance An instance of a StackableFile class
*/
- public static final function createFileStackInstance (string $prefix, string $stackName) {
+ public static final function createFileStackInstance (string $prefix, string $stackName): FileStackFactory {
// Validate parameter
//* NOISY-DEBUG */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('FILE-STACK-FACTORY: prefix=%s,stackName=%s - CALLED!', $prefix, $stackName));
if (empty($prefix)) {
* @param $requestInstance An instance of a Requestable class
* @return $userInstance An instance of a user class (@TODO use actual interface name)
*/
- public static final function createUserByRequest (Requestable $requestInstance) {
+ public static final function createUserByRequest (Requestable $requestInstance): UserFactory {
// Get registry instance
$registryInstance = ObjectRegistry::getRegistry('factory');
* @param $configKey Config entry name for the template engine
* @return $templateInstance A template engine instance
*/
- public static final function createXmlTemplateEngineInstance (string $configKey) {
+ public static final function createXmlTemplateEngineInstance (string $configKey): XmlTemplateEngineFactory {
// Validate parameter
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('XML-TEMPLATE-ENGINE-FACTORY: configKey=%s - CALLED!', $configKey));
if (empty($configKey)) {