ArchiveRecord.java

package com.github.junrar.regression;

import com.github.junrar.Archive;
import com.github.junrar.exception.RarException;
import com.github.junrar.exception.UnsupportedRarV5Exception;

import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

public record ArchiveRecord(
    boolean isRarV5,
    boolean isEncrypted,
    boolean isPasswordProtected,
    boolean isOldFormat,
    List<FileHeaderRecord> fileHeaders,

    String exception
) {
    static ArchiveRecord fromArchive(Archive from) throws RarException {
        return new ArchiveRecord(
            false,
            from.isEncrypted(),
            from.isPasswordProtected(),
            from.isOldFormat(),
            from.getFileHeaders().stream().map(FileHeaderRecord::fromFileHeader).collect(Collectors.toList()),
            null
        );
    }

    static ArchiveRecord fromException(RarException from) {
        return new ArchiveRecord(
            from instanceof UnsupportedRarV5Exception,
            false,
            false,
            false,
            Collections.emptyList(),
            from.getClass().getSimpleName()
        );
    }
}