public void addOrUpdateSettings(SettingsRecord settingsRecord) { SettingsRecord record = settingService.retrieve("id", 1); if (record == null) { settingService.create(settingsRecord); } else { record.setConfigFileChecksum(settingsRecord.getConfigFileChecksum()); record.setFilePath(settingsRecord.getFilePath()); record.setPlatformInitialized(settingsRecord.isPlatformInitialized()); record.setPlatformSettings(settingsRecord.getPlatformSettings()); settingService.update(record); } }
@Override public void savePlatformSettings(Properties settings) { SettingsRecord dbSettings = getSettings(); dbSettings.setPlatformInitialized(true); dbSettings.setLastRun(DateTime.now()); dbSettings.updateFromProperties(settings); dbSettings.removeDefaults(defaultConfig); try { MessageDigest digest = MessageDigest.getInstance("MD5"); dbSettings.setConfigFileChecksum(new String(digest.digest( MapUtils.toProperties(dbSettings.asProperties()).toString().getBytes()))); } catch (NoSuchAlgorithmException e) { throw new MotechException("MD5 algorithm not available", e); } addOrUpdateSettings(dbSettings); }
private SettingsRecord loadSettingsFromStream(org.springframework.core.io.Resource motechSettings) { try { MessageDigest digest = MessageDigest.getInstance("MD5"); try (DigestInputStream dis = new DigestInputStream(motechSettings.getInputStream(), digest)) { //load configFileSettings and calculate MD5 hash SettingsRecord settingsRecord = new SettingsRecord(); settingsRecord.load(dis); settingsRecord.setConfigFileChecksum(new String(digest.digest())); return settingsRecord; // startup loaded } catch (IOException e) { throw new MotechException("Error loading configuration", e); } } catch (NoSuchAlgorithmException e) { throw new MotechException("MD5 algorithm not available", e); } }
@Ignore @Override public void updateSettings(final String configFileChecksum, String filePath, Properties platformSettings) { setConfigFileChecksum(configFileChecksum); this.filePath = filePath; updateFromProperties(platformSettings); }
private void syncSettingsWithDb() { try { AllSettings allSettings = new AllSettings(couchDbManager.getConnector(SETTINGS_DB)); SettingsRecord dbSettings = allSettings.getSettings(); if (dbSettings.getLastRun() == null) { platformState = MotechPlatformState.FIRST_RUN; } else { platformState = MotechPlatformState.NORMAL_RUN; } if (platformState == MotechPlatformState.FIRST_RUN || !Arrays.equals(configFileSettings.getMd5checkSum(), dbSettings.getConfigFileChecksum())) { LOGGER.info("Updating database startup"); dbSettings.updateSettings(configFileSettings); } dbSettings.setLastRun(DateTime.now()); dbSettings.setConfigFileChecksum(configFileSettings.getMd5checkSum()); allSettings.addOrUpdateSettings(dbSettings); } catch (Exception e) { LOGGER.error(e.getMessage(), e); platformState = MotechPlatformState.DB_ERROR; } }
private void syncSettingsWithDb() { try { if (dbSettings.getLastRun() == null) { markPlatformStateAs(FIRST_RUN); } else { markPlatformStateAs(NORMAL_RUN); } if (isFirstRun() || settingsRecord == null || !settingsRecord.getConfigFileChecksum().equals(dbSettings.getConfigFileChecksum())) { LOGGER.info("Updating database startup"); dbSettings.updateSettings(settingsRecord.getConfigFileChecksum(), settingsRecord.getFilePath(), settingsRecord.asProperties()); } try { MessageDigest digest = MessageDigest.getInstance("MD5"); dbSettings.setConfigFileChecksum(new String(digest.digest(dbSettings.asProperties().toString().getBytes()))); } catch (NoSuchAlgorithmException e) { throw new MotechException("MD5 algorithm not available", e); } dbSettings.setLastRun(DateTime.now()); dbSettings.setPlatformInitialized(true); configurationService.savePlatformSettings(dbSettings); } catch (Exception e) { LOGGER.error(e.getMessage(), e); markPlatformStateAs(DB_ERROR); } }
@Override public Properties exportPlatformSettings() { MotechSettings currentSettings = configLoader.loadMotechSettings(); SettingsRecord settingsRecord = settingService.retrieve("id", 1); SettingsRecord dbSettings = (settingsRecord == null ? new SettingsRecord() : settingsRecord); Properties export = new Properties(); if (currentSettings != null) { export.putAll(currentSettings.asProperties()); } if (dbSettings != null) { export.putAll(dbSettings.getActivemqProperties()); export.put(ConfigurationConstants.LANGUAGE, dbSettings.getLanguage()); } return export; } }
Properties properties = getSettings().asProperties(); ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(fileName));
public SettingsRecord loadMotechSettings() { SettingsRecord settingsRecord; ConfigLocation configLocation = coreConfigurationService.getConfigLocation(); Resource configLocationResource = configLocation.toResource(); try { Resource motechSettings = configLocationResource.createRelative(ConfigurationConstants.SETTINGS_FILE_NAME); settingsRecord = loadSettingsFromStream(motechSettings); settingsRecord.setFilePath(configLocationResource.getURL().getPath()); checkSettingsRecord(settingsRecord); if (eventAdmin != null) { Map<String, String> properties = new HashMap<>(); Properties activemqProperties = settingsRecord.getActivemqProperties(); if (activemqProperties != null && activemqProperties.containsKey(AMQ_BROKER_URL)) { properties.put(AMQ_BROKER_URL, activemqProperties.getProperty(AMQ_BROKER_URL)); eventAdmin.postEvent(new Event("org/motechproject/osgi/event/RELOAD", properties)); } } } catch (IOException e) { throw new MotechConfigurationException(String.format("Could not read settings from file at location %s", configLocation), e); } return settingsRecord; }
public SettingsRecord getSettings() { SettingsRecord settingRecord = settingService.retrieve("id", 1); return (settingRecord == null ? new SettingsRecord() : settingRecord); }
private SettingsRecord loadSettingsFromStream(Resource motechSettings) { try { MessageDigest digest = MessageDigest.getInstance("MD5"); try (DigestInputStream dis = new DigestInputStream(motechSettings.getInputStream(), digest)) { //load configFileSettings and calculate MD5 hash SettingsRecord settingsRecord = new SettingsRecord(); settingsRecord.load(dis); settingsRecord.setConfigFileChecksum(new String(digest.digest())); return settingsRecord; // startup loaded } catch (IOException e) { throw new MotechException("Error loading configuration", e); } } catch (NoSuchAlgorithmException e) { throw new MotechException("MD5 algorithm not available", e); } }