r4fterman/pdf.forms

View on GitHub
src/main/java/org/pdf/forms/readers/configuration/WindowConfigurationFileReader.java

Summary

Maintainability
A
0 mins
Test Coverage
D
66%
package org.pdf.forms.readers.configuration;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

import org.pdf.forms.model.configuration.WindowConfiguration;
import org.pdf.forms.readers.XmlJavaObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import jakarta.xml.bind.JAXBException;

public class WindowConfigurationFileReader {

    private final Logger logger = LoggerFactory.getLogger(WindowConfigurationFileReader.class);

    private final WindowConfiguration windowConfiguration;

    public WindowConfigurationFileReader(final File windowConfigurationFile) {
        this.windowConfiguration = parseFile(windowConfigurationFile);
    }

    WindowConfigurationFileReader(final String windowConfigurationContent) {
        this.windowConfiguration = readContent(windowConfigurationContent);
    }

    public WindowConfiguration getWindowConfiguration() {
        return windowConfiguration;
    }

    private WindowConfiguration parseFile(final File windowConfigurationFile) {
        try {
            final String content = Files.readString(windowConfigurationFile.toPath());
            return readContent(content);
        } catch (final IOException e) {
            logger.warn("Unable to read window configuration file {}. Use default value.", e.getMessage());
        }
        return WindowConfiguration.DEFAULT;
    }

    private WindowConfiguration readContent(final String content) {
        try {
            final XmlJavaObjectMapper<WindowConfiguration> mapper = new XmlJavaObjectMapper<>(WindowConfiguration.class);
            return mapper.convertXmlIntoObject(content);
        } catch (final JAXBException e) {
            logger.warn("Unable to read window configuration content.", e);
        }
        return WindowConfiguration.DEFAULT;
    }
}