All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.openfact.services.managers.OrganizationManager Maven / Gradle / Ivy

package org.openfact.services.managers;

import org.openfact.Config;
import org.openfact.models.ModelException;
import org.openfact.models.OrganizationModel;
import org.openfact.models.OrganizationProvider;
import org.openfact.models.utils.OpenfactModelUtils;
import org.openfact.models.utils.RepresentationToModel;
import org.openfact.provider.ProviderEvent;
import org.openfact.representations.idm.OrganizationEventsConfigRepresentation;
import org.openfact.representations.idm.OrganizationRepresentation;

import javax.ejb.Stateless;
import javax.inject.Inject;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;

@Stateless
public class OrganizationManager {

    @Inject
    private OrganizationProvider model;

    @Inject
    private javax.enterprise.event.Event event;

    @Inject
    private RepresentationToModel representationToModel;

    @Inject
    private ScheduleOrganizations taskManager;

    public OrganizationModel getOpenfactAdminstrationOrganization() {
        return getOrganization(Config.getAdminOrganization());
    }

    public List getOrganizations() {
        return model.getOrganizations();
    }

    public OrganizationModel getOrganization(String id) {
        return model.getOrganization(id);
    }

    public OrganizationModel getOrganizationByName(String name) {
        return model.getOrganizationByName(name);
    }

    public OrganizationModel createOrganization(String name) throws ModelException {
        return createOrganization(name, name);
    }

    public OrganizationModel createOrganization(String id, String name) throws ModelException {
        if (id == null) {
            id = OpenfactModelUtils.generateId();
        }

        OrganizationModel organization = model.createOrganization(id, name);
        organization.setName(name);

        // setup defaults
        setupOrganizationDefaults(organization);

        updatePeriodicTask(organization);

        //fireOrganizationPostCreate(organization);
        event.fire((OrganizationModel.OrganizationPostCreateEvent) () -> organization);
        return organization;
    }

    public OrganizationModel importOrganization(OrganizationRepresentation rep) throws ModelException {
        String id = rep.getId();
        if (id == null) {
            id = OpenfactModelUtils.generateId();
        }

        OrganizationModel organization = model.createOrganization(id, rep.getOrganization());
        organization.setName(rep.getOrganization());

        // setup defaults
        setupOrganizationDefaults(organization);

        representationToModel.importOrganization(rep, organization);

        // Create periodic tasks for send documents
        cancelPeriodicTask(organization);

        event.fire((OrganizationModel.OrganizationPostCreateEvent) () -> organization);
        return organization;
    }

    public boolean removeOrganization(OrganizationModel organization) {
        cancelPeriodicTask(organization);

        boolean removed = model.removeOrganization(organization);
        return removed;
    }

    protected void setupOrganizationDefaults(OrganizationModel organization) {
        organization.setEventsListeners(Collections.singleton("jboss-logging"));
    }

    public void updateOrganizationEventsConfig(OrganizationEventsConfigRepresentation rep, OrganizationModel organization) {
        organization.setEventsEnabled(rep.isEventsEnabled());
        organization.setEventsExpiration(rep.getEventsExpiration() != null ? rep.getEventsExpiration() : 0);
        if (rep.getEventsListeners() != null) {
            organization.setEventsListeners(new HashSet<>(rep.getEventsListeners()));
        }
        if (rep.getEnabledEventTypes() != null) {
            organization.setEnabledEventTypes(new HashSet<>(rep.getEnabledEventTypes()));
        }
        if (rep.isAdminEventsEnabled() != null) {
            organization.setAdminEventsEnabled(rep.isAdminEventsEnabled());
        }
        if (rep.isAdminEventsDetailsEnabled() != null) {
            organization.setAdminEventsDetailsEnabled(rep.isAdminEventsDetailsEnabled());
        }
    }

    public void updatePeriodicTask(OrganizationModel organization) {
        if (organization.isTasksEnabled()) {
            taskManager.scheduleTask(organization);
        } else {
            taskManager.cancelTask(organization);
        }
    }

    public void cancelPeriodicTask(OrganizationModel organization) {
        taskManager.cancelTask(organization);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy