/*
* Copyright 1998-2017 Linux.org.ru
* 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 ru.org.linux.site;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
import ru.org.linux.tracker.TrackerFilterEnum;
import javax.annotation.Nonnull;
import java.util.List;
import static ru.org.linux.user.Profile.*;
public final class DefaultProfile {
private static final ImmutableMap<String, String> BOX_LEGEND = new ImmutableMap.Builder<String,String>()
.put("poll", "Текущий опрос")
.put("top10", "Наиболее обсуждаемые темы этого месяца")
.put("gallery", "Галерея")
.put("tagcloud", "Облако тэгов")
.put("lastMiniNews", "Последние мининовости (не будут отображаться в ленте новостей на главной странице)").build();
private static final ImmutableSet<String> BOX_SET = BOX_LEGEND.keySet();
private static final ImmutableMap<String, Theme> THEMES = Maps.uniqueIndex(Theme.THEMES, Theme::getId);
private static final ImmutableList<String> AVATAR_TYPES =
ImmutableList.of("empty", "identicon", "monsterid", "wavatar", "retro");
public static final TrackerFilterEnum DEFAULT_TRACKER_MODE = TrackerFilterEnum.MAIN;
private static final ImmutableMap<String, Object> defaultProfile = createDefaultProfile();
private DefaultProfile() {
}
public static ImmutableMap<String, String> getAllBoxes() {
return BOX_LEGEND;
}
public static boolean isBox(String name) {
return BOX_SET.contains(name);
}
public static ImmutableMap<String, Object> getDefaultProfile() {
return defaultProfile;
}
private static ImmutableMap<String, Object> createDefaultProfile() {
ImmutableMap.Builder<String, Object> builder = ImmutableMap.builder();
builder.put(NEWFIRST_PROPERTY, Boolean.FALSE);
builder.put(STYLE_PROPERTY, "tango");
builder.put(FORMAT_MODE_PROPERTY, "quot");
builder.put(TOPICS_PROPERTY, 30);
builder.put(MESSAGES_PROPERTY, 50);
builder.put(PHOTOS_PROPERTY, Boolean.TRUE);
builder.put(SHOW_ANONYMOUS_PROPERTY, Boolean.TRUE);
builder.put(AVATAR_PROPERTY, "empty");
builder.put(HIDE_ADSENSE_PROPERTY, true);
builder.put(MAIN_GALLERY_PROPERTY, false);
builder.put(SHOW_SOCIAL_PROPERTY, true);
builder.put(TRACKER_MODE, DEFAULT_TRACKER_MODE.getValue());
builder.put("DebugMode", Boolean.FALSE);
// main page settings
ImmutableList<String> boxes = ImmutableList.of("poll", "top10", "gallery", "tagcloud");
builder.put(BOXES_MAIN2_PROPERTY, boxes);
return builder.build();
}
public static Predicate<String> boxPredicate() {
return DefaultProfile::isBox;
}
public static boolean isStyle(String style) {
return THEMES.containsKey(style);
}
public static List<String> getAvatars() {
return AVATAR_TYPES;
}
@Nonnull
public static Theme getTheme(String id) {
Theme theme = THEMES.get(id);
if (theme==null) {
return getDefaultTheme();
}
return theme;
}
@Nonnull
public static Theme getDefaultTheme() {
return Theme.THEMES.get(0);
}
}