r4fterman/pdf.forms

View on GitHub
src/main/java/org/pdf/forms/model/configuration/WindowConfiguration.java

Summary

Maintainability
A
0 mins
Test Coverage
B
82%
package org.pdf.forms.model.configuration;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.StringJoiner;

import org.pdf.forms.readers.configuration.WindowBuilder;
import org.pdf.forms.readers.configuration.WindowConfigurationBuilder;

import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlType;

@XmlRootElement(name = "window_configuration")
@XmlType(propOrder = "window")
public class WindowConfiguration {

    private static final String SCRIPT_EDITOR = "SCRIPT_EDITOR";
    private static final String HIERARCHY = "HIERARCHY";
    private static final String LIBRARY = "LIBRARY";
    private static final String PROPERTIES = "PROPERTIES";

    public static final WindowConfiguration DEFAULT = new WindowConfigurationBuilder()
            .addWindow(new WindowBuilder().withCommand(SCRIPT_EDITOR).withName("Script Editor").withVisible(true)
                    .build())
            .addWindow(new WindowBuilder().withCommand(HIERARCHY).withName("Hierarchy").withVisible(true).build())
            .addWindow(new WindowBuilder().withCommand(LIBRARY).withName("Library").withVisible(true).build())
            .addWindow(new WindowBuilder().withCommand(PROPERTIES).withName("Properties").withVisible(true).build())
            .build();

    private List<Window> window;

    public WindowConfiguration() {
        this.window = new ArrayList<>();
    }

    public List<Window> getWindow() {
        return window;
    }

    public void setWindow(final List<Window> window) {
        this.window = window;
    }

    public boolean isScriptEditorVisible() {
        return isWindowCommandVisible(SCRIPT_EDITOR);
    }

    public boolean isHierarchyVisible() {
        return isWindowCommandVisible(HIERARCHY);
    }

    public boolean isLibraryVisible() {
        return isWindowCommandVisible(LIBRARY);
    }

    public boolean isPropertiesVisible() {
        return isWindowCommandVisible(PROPERTIES);
    }

    public boolean isWindowCommandVisible(final String command) {
        return window.stream()
                .filter(Window::isVisible)
                .anyMatch(w -> w.getCommand().equals(command));
    }

    @Override
    public boolean equals(final Object o) {
        if (o instanceof WindowConfiguration) {
            final WindowConfiguration that = (WindowConfiguration) o;
            return Objects.equals(window, that.window);
        }
        return false;
    }

    @Override
    public int hashCode() {
        return Objects.hash(window);
    }

    @Override
    public String toString() {
        return new StringJoiner(", ", WindowConfiguration.class.getSimpleName() + "[", "]")
                .add("windows=" + window)
                .toString();
    }
}