static cacheStore()

in modules/frontend/app/configuration/generator/generator/PlatformGenerator.js [324:418]


        static cacheStore(cache, domains, ccfg = this.cacheConfigurationBean(cache)) {
            const kind = _.get(cache, 'cacheStoreFactory.kind');

            if (kind && cache.cacheStoreFactory[kind]) {
                let bean = null;

                const storeFactory = cache.cacheStoreFactory[kind];

                switch (kind) {
                    case 'CacheJdbcPojoStoreFactory':
                        bean = new Bean('org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory', 'cacheStoreFactory',
                            storeFactory);

                        const id = bean.valueOf('dataSourceBean');

                        bean.dataSource(id, 'dataSourceBean', this.dataSourceBean(id, storeFactory.dialect))
                            .beanProperty('dialect', new EmptyBean(this.dialectClsName(storeFactory.dialect)));

                        const setType = (typeBean, propName) => {
                            if (JavaTypes.nonBuiltInClass(typeBean.valueOf(propName)))
                                typeBean.stringProperty(propName);
                            else
                                typeBean.classProperty(propName);
                        };

                        const types = _.reduce(domains, (acc, domain) => {
                            if (_.isNil(domain.databaseTable))
                                return acc;

                            const typeBean = new Bean('org.apache.ignite.cache.store.jdbc.JdbcType', 'type',
                                _.merge({}, domain, {cacheName: cache.name}))
                                .stringProperty('cacheName');

                            setType(typeBean, 'keyType');
                            setType(typeBean, 'valueType');

                            this.domainStore(domain, typeBean);

                            acc.push(typeBean);

                            return acc;
                        }, []);

                        bean.arrayProperty('types', 'types', types, 'org.apache.ignite.cache.store.jdbc.JdbcType');

                        break;
                    case 'CacheJdbcBlobStoreFactory':
                        bean = new Bean('org.apache.ignite.cache.store.jdbc.CacheJdbcBlobStoreFactory', 'cacheStoreFactory',
                            storeFactory);

                        if (bean.valueOf('connectVia') === 'DataSource')
                            bean.dataSource(bean.valueOf('dataSourceBean'), 'dataSourceBean', this.dialectClsName(storeFactory.dialect));
                        else {
                            ccfg.stringProperty('connectionUrl')
                                .stringProperty('user')
                                .property('password', `ds.${storeFactory.user}.password`, 'YOUR_PASSWORD');
                        }

                        bean.boolProperty('initSchema')
                            .stringProperty('createTableQuery')
                            .stringProperty('loadQuery')
                            .stringProperty('insertQuery')
                            .stringProperty('updateQuery')
                            .stringProperty('deleteQuery');

                        break;
                    case 'CacheHibernateBlobStoreFactory':
                        bean = new Bean('org.apache.ignite.cache.store.hibernate.CacheHibernateBlobStoreFactory',
                            'cacheStoreFactory', storeFactory);

                        bean.propsProperty('props', 'hibernateProperties');

                        break;
                    default:
                }

                if (bean)
                    ccfg.beanProperty('cacheStoreFactory', bean);
            }

            ccfg.boolProperty('storeKeepBinary')
                .boolProperty('loadPreviousValue')
                .boolProperty('readThrough')
                .boolProperty('writeThrough');

            if (ccfg.valueOf('writeBehindEnabled')) {
                ccfg.boolProperty('writeBehindEnabled')
                    .intProperty('writeBehindBatchSize')
                    .intProperty('writeBehindFlushSize')
                    .intProperty('writeBehindFlushFrequency')
                    .intProperty('writeBehindFlushThreadCount');
            }

            return ccfg;
        }