![JAR search and dependency download from the Maven repository](/logo.png)
com.github.athi.athifx.gui.configuration.AthiFXApplicationProperties Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of athi-fx-gui Show documentation
Show all versions of athi-fx-gui Show documentation
AthiFX project for creating JavaFX simple application GUI.
The newest version!
package com.github.athi.athifx.gui.configuration;
import com.github.athi.athifx.gui.application.AthiFXSession;
import com.github.athi.athifx.gui.menu.group.Group;
import com.github.athi.athifx.gui.menu.item.Item;
import com.github.athi.athifx.gui.navigation.view.AView;
import com.github.athi.athifx.gui.navigation.view.View;
import com.github.athi.athifx.gui.security.Secured;
import com.github.athi.athifx.gui.security.User;
import com.github.athi.athifx.injector.injection.AthiFXInjector;
import com.google.common.collect.Lists;
import com.google.inject.Inject;
import org.reflections.Reflections;
import javax.annotation.PostConstruct;
import javax.enterprise.context.SessionScoped;
import javax.enterprise.inject.Any;
import javax.enterprise.inject.Instance;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* Created by Athi
*/
@SessionScoped
public class AthiFXApplicationProperties implements Serializable {
@Inject
private AthiFXSession session;
@Any
@Inject
private Instance viewsInstance;
private List groups;
private List- items;
@PostConstruct
private void initApplicationConfiguration() {
Reflections reflections = AthiFXInjector.getReflections();
Set
> groupsClasses = reflections.getSubTypesOf(Group.class);
groups = Arrays.asList(groupsClasses.iterator().next().getEnumConstants());
Set> itemsClasses = reflections.getSubTypesOf(Item.class);
items = Arrays.asList(itemsClasses.iterator().next().getEnumConstants());
}
public Map getViews() {
return Lists.newArrayList(viewsInstance)
.stream()
.filter(v -> v.getClass().isAnnotationPresent(View.class))
.collect(Collectors.toMap(v -> v.getClass().getAnnotation(View.class).itemId(), aView -> aView));
}
public List getGroups() {
return groups;
}
public List- getItems() {
return items;
}
public boolean isNotSecured(Item item) {
AView itemView = getViews().get(item.id());
return isNotSecured(itemView);
}
public boolean isNotSecured(AView view) {
Class extends AView> viewClass = view.getClass();
if (viewClass.isAnnotationPresent(Secured.class)) {
Secured securedAnnotation = viewClass.getAnnotation(Secured.class);
return isAnyOrAllPermitted(securedAnnotation);
} else {
return true;
}
}
private boolean isAnyOrAllPermitted(Secured securedAnnotation) {
User user = session.getUser();
String[] permissions = securedAnnotation.permissions();
return securedAnnotation.any() ? user.isAnyPermitted(permissions) : user.isAllPermitted(permissions);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy