de.knurt.fam.template.model.ViewSystemConfigurationModelFactory.java Source code

Java tutorial

Introduction

Here is the source code for de.knurt.fam.template.model.ViewSystemConfigurationModelFactory.java

Source

/*
 * Copyright 2009-2012 by KNURT Systeme (http://www.knurt.de)
 *
 * Licensed under the Creative Commons License Attribution-NonCommercial-ShareAlike 3.0 Unported;
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://creativecommons.org/licenses/by-nc-sa/3.0/
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package de.knurt.fam.template.model;

import java.util.List;
import java.util.Properties;

import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.web.servlet.support.RequestContextUtils;

import de.knurt.fam.connector.FamConnector;
import de.knurt.fam.core.aspects.security.auth.FamAuth;
import de.knurt.fam.core.aspects.security.encoder.FamEncoder;
import de.knurt.fam.core.model.config.CronjobAction;
import de.knurt.fam.core.model.config.CronjobActionContainer;
import de.knurt.fam.core.model.persist.KeyValue;
import de.knurt.fam.core.persistence.dao.FamDaoProxy;
import de.knurt.fam.core.persistence.dao.config.RoleConfigDao;
import de.knurt.fam.core.persistence.dao.couchdb.FamCouchDBDao;
import de.knurt.heinzelmann.util.text.DurationAdapter;

/**
 * produce the model for terms of use pages
 * 
 * @see TemplateContentProperties#getTemplateModel(TemplateResource)
 * @author Daniel Oltmanns
 * @since 1.3.0 (10/19/2010)
 */
public class ViewSystemConfigurationModelFactory {

    private DurationAdapter durationAdapter = new DurationAdapter(DurationAdapter.SupportedLanguage.ENGLISH);

    public Properties getProperties(TemplateResource templateResource) {
        Properties result = new Properties();
        result.put("configuration_reloaded", templateResource.configurationReloadIsRequested());
        Properties props = new Properties();
        props.put("config_dir", FamConnector.getConfigDirectory());
        props.putAll(FamConnector.getGlobalProperties());
        List<KeyValue> kvs = FamDaoProxy.keyValueDao().getAll();
        for (KeyValue kv : kvs) {
            props.put("kv_" + kv.key(), kv.value());
        }
        props.put("dao_booking_class", FamDaoProxy.bookingDao().getClass());
        props.put("dao_facility_availability_class", FamDaoProxy.facilityDao().getClass());
        props.put("dao_logbook_class", FamDaoProxy.logbookEntryDao().getClass());
        props.put("dao_user_class", FamDaoProxy.userDao().getClass());
        props.put("dao_kv_class", FamDaoProxy.keyValueDao().getClass());
        props.put("role_standard", RoleConfigDao.getInstance().getStandardId());
        props.put("role_admin", RoleConfigDao.getInstance().getAdminId());
        props.put("authentication_module", FamAuth.me().getUserAuthentication().getClass());

        // put in cronjobs
        List<CronjobAction> cronjobs = CronjobActionContainer.getInstance().getAllCronjobActions();
        int i = 0;
        for (CronjobAction cronjob : cronjobs) {
            props.put(++i + "_cronjob_desc", cronjob.getDescription());
            props.put(i + "_cronjob_class", cronjob.getClass());
            props.put(i + "_cronjob_every", durationAdapter.getText(cronjob.resolveEvery()));
        }

        try {
            BasicDataSource bds = ((BasicDataSource) RequestContextUtils
                    .getWebApplicationContext(templateResource.getRequest()).getBean("dataSource"));
            props.put("sql_url", bds.getUrl());
            props.put("sql_username", bds.getUsername());
        } catch (Exception e) {
            props.put("sql_ERROR", e.getMessage());
        }

        props.put("password_encoding_algorithm", FamEncoder.getInstance().getEncoder().getAlgorithm());

        boolean couchdb_test_query_succ = false;
        try {
            props.put("couchdb_real_name", FamCouchDBDao.getInstance().databaseName());
            props.put("couchdb_document_count", FamCouchDBDao.getInstance().documentCount());
            couchdb_test_query_succ = true;
        } catch (Exception e) {
        }
        props.put("couchdb_test_query_succ", couchdb_test_query_succ);
        result.put("props", props);
        return result;
    }

}