/*******************************************************************************
* Copyright 2012 Christian Ternes and Thorsten Volland
*
* Licensed 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 org.businessmanager.web.controller.page.admin;
import java.util.Iterator;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import org.businessmanager.domain.settings.ApplicationSetting;
import org.businessmanager.domain.settings.ApplicationSetting.Group;
import org.businessmanager.geodb.OpenGeoDB;
import org.businessmanager.geodb.OpenGeoEntry;
import org.businessmanager.service.settings.ApplicationSettingsService;
import org.businessmanager.web.bean.CompanySettingsBean;
import org.businessmanager.web.controller.AbstractController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component("companySettingsController")
@Scope("request")
public class CompanySettingsController extends AbstractController {
@Autowired
private ApplicationSettingsService settingsService;
@Autowired
private OpenGeoDB openGeoDB;
private CompanySettingsBean companySettings;
@PostConstruct
public void init() {
List<ApplicationSetting> companySettingsList = settingsService.getApplicationSettingsByGroup(Group.COMPANY_PREFERENCES);
companySettings = new CompanySettingsBean();
companySettings.setSettings(companySettingsList);
}
public CompanySettingsBean getCompanySettings() {
return companySettings;
}
public void setCompanySettings(CompanySettingsBean companySettings) {
this.companySettings = companySettings;
}
public void saveSettings() {
if(companySettings != null) {
Iterator<String> iter = companySettings.getSettingsMap().keySet().iterator();
while(iter.hasNext()) {
String key = iter.next();
String value = companySettings.getSettingsMap().get(key);
if(value != null) {
settingsService.setApplicationSetting(ApplicationSetting.Group.COMPANY_PREFERENCES, key, value, null);
}
}
addMessage(FacesMessage.SEVERITY_INFO, "settings_saved");
}
}
public void findCity() {
String zipCode = companySettings.getZip();
if(zipCode == null || zipCode.length() < 3) {
return;
}
List<OpenGeoEntry> findByZipCode = openGeoDB.findByZipCode("DE", zipCode);
if(findByZipCode != null && findByZipCode.size() > 0) {
companySettings.setCity(findByZipCode.get(0).getName());
}
}
}