blob: 5ffb37951d743e32e227d4d1061c11f2b7b6580d [file] [log] [blame]
/*
* 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 org.apache.openmeetings.remote;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.openmeetings.OpenmeetingsVariables;
import org.apache.openmeetings.data.basic.AuthLevelUtil;
import org.apache.openmeetings.data.basic.FieldLanguageDao;
import org.apache.openmeetings.data.basic.FieldManager;
import org.apache.openmeetings.data.basic.SessiondataDao;
import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
import org.apache.openmeetings.data.beans.basic.SearchResult;
import org.apache.openmeetings.data.user.UserManager;
import org.apache.openmeetings.persistence.beans.lang.FieldLanguage;
import org.apache.openmeetings.persistence.beans.lang.Fieldlanguagesvalues;
import org.apache.openmeetings.persistence.beans.lang.Fieldvalues;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
/**
*
* @author sebastianwagner
*
*/
public class LanguageService {
private static final Logger log = Red5LoggerFactory.getLogger(
LanguageService.class, OpenmeetingsVariables.webAppRootKey);
@Autowired
private SessiondataDao sessiondataDao;
@Autowired
private ConfigurationDao configurationDao;
@Autowired
private UserManager userManager;
@Autowired
private FieldManager fieldManager;
@Autowired
private FieldLanguageDao fieldLanguageDaoImpl;
@Autowired
private AuthLevelUtil authLevelUtil;
/**
* get a List of all availaible Languages
*
* @return - List of all availaible Languages
*/
public List<FieldLanguage> getLanguages() {
return fieldLanguageDaoImpl.getLanguages();
}
/**
* get all fields of a given Language_id
*
* @param language_id
* @deprecated
* @return - all fields of a given Language_id
*/
@Deprecated
public List<Fieldlanguagesvalues> getLanguageById(Long language_id) {
return fieldManager.getAllFieldsByLanguage(language_id);
}
public Integer getDefaultLanguage() {
return configurationDao.getConfValue("default_lang_id", Integer.class, "1");
}
/**
* get all fields of a given Language_id by params
*
* @param language_id
* @return - all fields of a given Language_id in the range given
*/
public List<Map<String, Object>> getLanguageByIdAndMax(Long language_id,
int start, int max) {
return fieldManager.getLabelsByLanguage(language_id, start, max);
}
public Fieldvalues getFieldvalueById(String SID, Long fieldvalues_id,
Long language_id) {
Long users_id = sessiondataDao.checkSession(SID);
Long user_level = userManager.getUserLevelByID(users_id);
if (authLevelUtil.checkAdminLevel(user_level)) {
return fieldManager.getFieldvaluesById(fieldvalues_id,
language_id);
}
return null;
}
public Long addLanguage(String SID, String langName, String code) {
Long users_id = sessiondataDao.checkSession(SID);
Long user_level = userManager.getUserLevelByID(users_id);
if (authLevelUtil.checkAdminLevel(user_level)) {
if (langName.length() == 0)
return new Long(-30);
FieldLanguage lang = fieldLanguageDaoImpl.addLanguage(0, langName, false, code);
return lang != null ? lang.getLanguage_id() : -1;
}
return null;
}
public Long updateLanguage(String SID, Long language_id, String langName, String code) {
Long users_id = sessiondataDao.checkSession(SID);
Long user_level = userManager.getUserLevelByID(users_id);
if (authLevelUtil.checkAdminLevel(user_level)) {
if (langName.length() == 0)
return new Long(-30);
return fieldLanguageDaoImpl.updateFieldLanguage(language_id,
langName, code, false);
}
return null;
}
public Long deleteLanguage(String SID, Long language_id) {
Long users_id = sessiondataDao.checkSession(SID);
Long user_level = userManager.getUserLevelByID(users_id);
if (authLevelUtil.checkAdminLevel(user_level)) {
return fieldLanguageDaoImpl.updateFieldLanguage(language_id, "",
"", true);
}
return null;
}
public Long deleteFieldlanguagesvaluesById(String SID,
Long fieldlanguagesvalues_id) {
Long users_id = sessiondataDao.checkSession(SID);
Long user_level = userManager.getUserLevelByID(users_id);
if (authLevelUtil.checkAdminLevel(user_level)) {
return fieldManager
.deleteFieldlanguagesvaluesById(fieldlanguagesvalues_id);
}
return null;
}
/**
*
* @param SID
* @param start
* @param max
* @param orderby
* @param asc
* @param language_id
* @return - the list of field values being searched in case of success, null otherwise
*/
public SearchResult<Fieldvalues> getFieldsByLanguage(String SID, int start, int max,
String orderby, boolean asc, Long language_id, String search) {
Long users_id = sessiondataDao.checkSession(SID);
Long user_level = userManager.getUserLevelByID(users_id);
if (authLevelUtil.checkAdminLevel(user_level)) {
return fieldManager.getFieldsByLanguage(start, max, orderby, asc,
language_id, search);
}
return null;
}
/**
*
* @param SID
* @param values
* @return - id of the label added or updated in case of success, error code otherwise
*/
public Long saveOrUpdateLabel(String SID,
LinkedHashMap<Object, Object> values) {
try {
Long users_id = sessiondataDao.checkSession(SID);
Long user_level = userManager.getUserLevelByID(users_id);
Long fieldvalues_id = Long.valueOf(
values.get("fieldvalues_id").toString()).longValue();
String name = values.get("name").toString();
Long fieldlanguagesvalues_id = Long.valueOf(
values.get("fieldlanguagesvalues_id").toString())
.longValue();
Long language_id = Long.valueOf(
values.get("language_id").toString()).longValue();
String value = values.get("value").toString();
if (authLevelUtil.checkAdminLevel(user_level)) {
if (fieldvalues_id > 0 && fieldlanguagesvalues_id > 0) {
log.error("UPDATE LABEL");
return fieldManager.updateLabel(fieldvalues_id, name,
fieldlanguagesvalues_id, value);
} else if (fieldvalues_id > 0 && fieldlanguagesvalues_id == 0) {
log.error("INSERT NEW LABEL");
return fieldManager.addAndUpdateLabel(fieldvalues_id,
name, value, language_id);
} else {
log.error("INSERT NEW FIELD AND LABEL");
return fieldManager.addFieldAndLabel(name, value,
language_id);
}
}
return new Long(-26);
} catch (Exception e) {
log.error("[saveOrUpdateLabel]", e);
}
return new Long(-1);
}
}