/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.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 ro.nextreports.server.update; import java.io.IOException; import java.io.InputStream; import java.util.Calendar; import javax.jcr.Binary; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.ValueFactory; import ro.nextreports.server.StorageConstants; import ro.nextreports.server.domain.JasperSettings; import ro.nextreports.server.domain.MailServer; import ro.nextreports.server.domain.SchedulerSettings; import ro.nextreports.server.domain.Settings; import ro.nextreports.server.domain.SynchronizerSettings; import ro.nextreports.server.web.NextServerConfiguration; import ro.nextreports.server.web.themes.ThemesManager; public class StorageUpdate9 extends StorageUpdate { @Override protected void executeUpdate() throws Exception { createSettings(); } private void createSettings() throws RepositoryException, IOException { Calendar cal = Calendar.getInstance(); LOG.info("Add Settings Node"); Node rootNode = getTemplate().getRootNode(); Node nextServerNode = rootNode.getNode(StorageConstants.NEXT_SERVER_FOLDER_NAME); Node settingsNode = nextServerNode.addNode(StorageConstants.SETTINGS_FOLDER_NAME); settingsNode.addMixin("mix:referenceable"); settingsNode.setProperty("className", Settings.class.getName()); settingsNode.setProperty("createdBy", "admin"); settingsNode.setProperty("createdDate", cal); settingsNode.setProperty("lastUpdatedBy", "admin"); settingsNode.setProperty("lastUpdatedDate", cal); LOG.info("Add Logo Node"); /* * trouble in some configurations to find the logo */ InputStream is = StorageUpdate9.class.getResourceAsStream("/Nextreports-logo.png"); if (is == null) { LOG.info("could not find logo"); is = StorageUpdate9.class.getClassLoader().getResourceAsStream("Nextreports-logo.png"); if (is == null) { LOG.info("could not find logo2"); is = StorageUpdate9.class.getClassLoader() .getResourceAsStream("webapp/themes/blue/images/Nextreports-logo.png"); if (is == null) { LOG.info("could not find logo3"); is = StorageUpdate9.class.getClassLoader() .getResourceAsStream("themes/blue/images/Nextreports-logo.png"); if (is == null) { LOG.info("could not find logo4"); is = StorageUpdate9.class.getClassLoader() .getResourceAsStream("/themes/blue/images/Nextreports-logo.png"); } } } } Node logoNode = settingsNode.addNode(StorageConstants.LOGO, "nt:folder"); logoNode.addMixin("mix:referenceable"); Node logoNameNode = logoNode.addNode("logo.png", "nt:file"); logoNameNode.addMixin("mix:referenceable"); Node resNode = logoNameNode.addNode("jcr:content", "nt:resource"); resNode.addMixin("mix:referenceable"); resNode.setProperty("jcr:mimeType", "image/png"); ValueFactory valueFactory = resNode.getSession().getValueFactory(); Binary binaryValue = valueFactory.createBinary(is); resNode.setProperty("jcr:data", binaryValue); LOG.info("Set Base Url"); String baseUrl = NextServerConfiguration.get().getConfiguration().getString("nextserver.baseUrl", "http://localhost:8081"); settingsNode.setProperty(StorageConstants.BASE_URL, baseUrl); LOG.info("Set Reports Home"); String home; // reports.home property can be found only in property file till version // 4.2 if (NextServerConfiguration.get().getConfiguration().containsKey("reports.home")) { home = NextServerConfiguration.get().getConfiguration().getString("reports.home", "./reports"); } else { // if not found we use installer property home = NextServerConfiguration.get().getConfiguration().getString("nextserver.home", ".") + "/reports"; } settingsNode.setProperty(StorageConstants.REPORTS_HOME, home); LOG.info("Set Reports Url"); // http port modified in installer boolean httpModified = !baseUrl.contains("8081"); String reportsUrl; if (httpModified) { reportsUrl = baseUrl + "/reports"; } else { reportsUrl = NextServerConfiguration.get().getConfiguration().getString("reports.url", "http://localhost:8081/reports"); } settingsNode.setProperty(StorageConstants.REPORTS_URL, reportsUrl); LOG.info("Set Color Theme"); settingsNode.setProperty(StorageConstants.COLOR_THEME, ThemesManager.GREEN_THEME); LOG.info("Add Mail Server Node"); Node mailNode = settingsNode.addNode(StorageConstants.MAIL_SERVER); mailNode.addMixin("mix:referenceable"); mailNode.setProperty("className", MailServer.class.getName()); LOG.info("Set Mail Server Ip"); mailNode.setProperty(StorageConstants.MAIL_SERVER_IP, NextServerConfiguration.get().getConfiguration().getString("mail-server.ip", "127.0.0.1")); LOG.info("Set Mail Server Port"); mailNode.setProperty(StorageConstants.MAIL_SERVER_PORT, NextServerConfiguration.get().getConfiguration().getString("mail-server.port", "25")); LOG.info("Set Mail"); mailNode.setProperty(StorageConstants.MAIL_SERVER_FROM, NextServerConfiguration.get().getConfiguration().getString("mail.from", "nextserver@company.com")); LOG.info("Set Connection Timeout"); settingsNode.setProperty(StorageConstants.CONNECTION_TIMEOUT, NextServerConfiguration.get().getConfiguration().getString("connection.timeout", "10")); LOG.info("Set Query Timeout"); settingsNode.setProperty(StorageConstants.QUERY_TIMEOUT, NextServerConfiguration.get().getConfiguration().getString("query.timeout", "600")); LOG.info("Set Update Interval"); settingsNode.setProperty(StorageConstants.UPDATE_INTERVAL, NextServerConfiguration.get().getConfiguration().getString("ui.updateInterval", "60")); LOG.info("Add Jasper Node"); Node jasperNode = settingsNode.addNode(StorageConstants.JASPER); jasperNode.addMixin("mix:referenceable"); jasperNode.setProperty("className", JasperSettings.class.getName()); LOG.info("Set Jasper Settings"); jasperNode.setProperty(StorageConstants.JASPER_HOME, NextServerConfiguration.get().getConfiguration().getString("jaspers.home", "./jaspers")); jasperNode.setProperty(StorageConstants.JASPER_DETECT_CELL_TYPE, NextServerConfiguration.get().getConfiguration().getString("is_detect_cell_type", "true")); jasperNode.setProperty(StorageConstants.JASPER_WHITE_PAGE_BACKGROUND, NextServerConfiguration.get().getConfiguration().getString("is_white_page_background", "false")); jasperNode.setProperty(StorageConstants.JASPER_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, NextServerConfiguration.get() .getConfiguration().getString("is_remove_empty_space_between_rows", "true")); LOG.info("Add Synchronizer Node"); Node synchronizerNode = settingsNode.addNode(StorageConstants.SYNCHRONIZER); synchronizerNode.addMixin("mix:referenceable"); synchronizerNode.setProperty("className", SynchronizerSettings.class.getName()); LOG.info("Set Synchronizer Settings"); synchronizerNode.setProperty(StorageConstants.SYNCHRONIZER_RUN_ON_STARTUP, NextServerConfiguration.get().getConfiguration().getString("synchronizer.runOnStartup", "true")); synchronizerNode.setProperty(StorageConstants.SYNCHRONIZER_CREATE_USERS, NextServerConfiguration.get().getConfiguration().getString("synchronizer.createUsers", "false")); synchronizerNode.setProperty(StorageConstants.SYNCHRONIZER_DELETE_USERS, NextServerConfiguration.get().getConfiguration().getString("synchronizer.deleteUsers", "false")); synchronizerNode.setProperty(StorageConstants.SYNCHRONIZER_CRON_EXPRESSION, NextServerConfiguration.get() .getConfiguration().getString("synchronizer.cronExpression", "0 0 6 * * ?")); LOG.info("Add Scheduler Node"); Node schedulerNode = settingsNode.addNode(StorageConstants.SCHEDULER); schedulerNode.addMixin("mix:referenceable"); schedulerNode.setProperty("className", SchedulerSettings.class.getName()); LOG.info("Set Scheduler Settings"); schedulerNode.setProperty(StorageConstants.SCHEDULER_CORE_POOL_SIZE, NextServerConfiguration.get().getConfiguration().getString("scheduler.corePoolSize", "5")); schedulerNode.setProperty(StorageConstants.SCHEDULER_MAX_POOL_SIZE, NextServerConfiguration.get().getConfiguration().getString("scheduler.maxPoolSize", "10")); schedulerNode.setProperty(StorageConstants.SCHEDULER_QUEUE_CAPACITY, NextServerConfiguration.get().getConfiguration().getString("scheduler.queueCapacity", "25")); getTemplate().save(); } }