Search in sources :

Example 16 with MidPointObject

use of com.evolveum.midpoint.studio.client.MidPointObject in project midpoint-studio by Evolveum.

the class SetLoggerTask method doRun.

@Override
protected void doRun(ProgressIndicator indicator) {
    super.doRun(indicator);
    indicator.setIndeterminate(false);
    List<ClassLoggerConfigurationType> newLoggers = buildClassLoggers();
    if (newLoggers == null || newLoggers.isEmpty()) {
        noChangeNeeded();
        return;
    }
    Environment env = getEnvironment();
    LOG.debug("Downloading system configuration");
    PrismObject<SystemConfigurationType> configPrism;
    try {
        MidPointObject object = client.get(SystemConfigurationType.class, SystemObjectsType.SYSTEM_CONFIGURATION.value(), new SearchOptions());
        if (object == null) {
            return;
        }
        configPrism = (PrismObject) client.parseObject(object.getContent());
        indicator.setFraction(0.5);
    } catch (Exception ex) {
        MidPointUtils.publishException(getProject(), env, getClass(), NOTIFICATION_KEY, "Couldn't download and parse system configuration", ex);
        return;
    }
    LOG.debug("Updating logging configuration");
    SystemConfigurationType config = configPrism.asObjectable();
    LoggingConfigurationType logging = config.getLogging();
    if (logging == null) {
        logging = new LoggingConfigurationType();
        config.setLogging(logging);
    }
    List<ClassLoggerConfigurationType> existing = logging.getClassLogger();
    Map<String, ClassLoggerConfigurationType> existingMap = existing.stream().collect(Collectors.toMap(o -> o.getPackage(), o -> o, (a, b) -> a));
    boolean changed = false;
    for (ClassLoggerConfigurationType cl : newLoggers) {
        ClassLoggerConfigurationType existingLogger = existingMap.get(cl.getPackage());
        if (existingLogger == null) {
            LOG.debug("Adding new class logger ", cl.getPackage(), " with level ", cl.getLevel());
            existing.add(cl);
            changed = true;
        } else {
            if (existingLogger.getLevel() != cl.getLevel()) {
                LOG.debug("Updating class logger ", existingLogger.getPackage(), " with level ", cl.getLevel());
                existingLogger.setLevel(cl.getLevel());
                changed = true;
            }
        }
    }
    if (!changed) {
        noChangeNeeded();
        indicator.setFraction(1);
        return;
    }
    LOG.debug("Uploading system configuration");
    try {
        UploadResponse resp = client.upload(configPrism, Arrays.asList(ModelExecuteOptionsType.F_OVERWRITE.getLocalPart()));
        OperationResult result = resp.getResult();
        if (result != null && !result.isSuccess()) {
            String msg = "Upload status of system configuration was " + result.getStatus();
            midPointService.printToConsole(env, getClass(), msg);
            MidPointUtils.publishNotification(getProject(), NOTIFICATION_KEY, "Warning", msg, NotificationType.WARNING, new ShowResultNotificationAction(result));
        } else {
            midPointService.printToConsole(env, getClass(), "System configuration uploaded");
        }
        indicator.setFraction(1);
    } catch (Exception ex) {
        MidPointUtils.publishException(getProject(), env, getClass(), NOTIFICATION_KEY, "Exception occurred during system configuration upload", ex);
    }
}
Also used : Arrays(java.util.Arrays) com.evolveum.midpoint.xml.ns._public.common.common_3(com.evolveum.midpoint.xml.ns._public.common.common_3) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) SearchOptions(com.evolveum.midpoint.studio.impl.SearchOptions) PrismObject(com.evolveum.midpoint.prism.PrismObject) Collectors(java.util.stream.Collectors) MidPointObject(com.evolveum.midpoint.studio.client.MidPointObject) Environment(com.evolveum.midpoint.studio.impl.Environment) NotificationType(com.intellij.notification.NotificationType) MidPointUtils(com.evolveum.midpoint.studio.util.MidPointUtils) ShowResultNotificationAction(com.evolveum.midpoint.studio.impl.ShowResultNotificationAction) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) List(java.util.List) UploadResponse(com.evolveum.midpoint.studio.impl.UploadResponse) Map(java.util.Map) AnActionEvent(com.intellij.openapi.actionSystem.AnActionEvent) Logger(com.intellij.openapi.diagnostic.Logger) NotNull(org.jetbrains.annotations.NotNull) Collections(java.util.Collections) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) SearchOptions(com.evolveum.midpoint.studio.impl.SearchOptions) UploadResponse(com.evolveum.midpoint.studio.impl.UploadResponse) MidPointObject(com.evolveum.midpoint.studio.client.MidPointObject) ShowResultNotificationAction(com.evolveum.midpoint.studio.impl.ShowResultNotificationAction) Environment(com.evolveum.midpoint.studio.impl.Environment)

Aggregations

MidPointObject (com.evolveum.midpoint.studio.client.MidPointObject)16 IOException (java.io.IOException)8 VirtualFile (com.intellij.openapi.vfs.VirtualFile)6 ArrayList (java.util.ArrayList)6 Environment (com.evolveum.midpoint.studio.impl.Environment)5 MidPointClient (com.evolveum.midpoint.studio.impl.MidPointClient)5 PrismObject (com.evolveum.midpoint.prism.PrismObject)4 SearchResult (com.evolveum.midpoint.studio.client.SearchResult)4 ProcessObjectResult (com.evolveum.midpoint.studio.action.transfer.ProcessObjectResult)3 SearchOptions (com.evolveum.midpoint.studio.impl.SearchOptions)3 MidPointUtils (com.evolveum.midpoint.studio.util.MidPointUtils)3 SchemaException (com.evolveum.midpoint.util.exception.SchemaException)3 ConnectorType (com.evolveum.midpoint.xml.ns._public.common.common_3.ConnectorType)3 NotificationType (com.intellij.notification.NotificationType)3 ControlFlowException (com.intellij.openapi.diagnostic.ControlFlowException)3 Logger (com.intellij.openapi.diagnostic.Logger)3 ProcessCanceledException (com.intellij.openapi.progress.ProcessCanceledException)3 Project (com.intellij.openapi.project.Project)3 Writer (java.io.Writer)3 List (java.util.List)3