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

no.difi.sdp.client2.domain.Dokument Maven / Gradle / Ivy

There is a newer version: 7.0.0-RC2
Show newest version
package no.difi.sdp.client2.domain;

import no.difi.sdp.client2.asice.AsicEAttachable;
import org.apache.commons.io.IOUtils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

public class Dokument implements AsicEAttachable {

    private String tittel;
    private String filnavn;
    private byte[] dokument;
    private String mimeType = "application/pdf";

    private Dokument(String tittel, String filnavn, byte[] dokument) {
        this.tittel = tittel;
        this.filnavn = filnavn;
        this.dokument = dokument;
    }

    @Override
    public String getFileName() {
        return getFilnavn();
    }

    @Override
    public byte[] getBytes() {
        return dokument;
    }

    public String getFilnavn() {
        return filnavn;
    }

    @Override
    public String getMimeType() {
        return mimeType;
    }

    public String getTittel() {
        return tittel;
    }

    /**
     * @param tittel Tittel som vises til brukeren gitt riktig sikkerhetsnivå.
     * @param filnavn Filnavnet til dokumentet.
     * @param dokument Dokumentet som en strøm.
     */
    public static Builder builder(String tittel, String filnavn, InputStream dokument) {
        try (InputStream dokumentStreamToConsume = dokument) {
            byte[] dokumentBytes = IOUtils.toByteArray(dokumentStreamToConsume);
            return new Builder(tittel, filnavn, dokumentBytes);
        } catch (IOException e) {
            throw new LastDokumentException("Kunne ikke lese dokument", e);
        }
    }

    /**
     * @param tittel Tittel som vises til brukeren gitt riktig sikkerhetsnivå.
     * @param filnavn Filnavnet til dokumentet.
     * @param dokument Filen som skal sendes. Navnet på filen vil brukes som filnavn ovenfor mottaker.
     */
    public static Builder builder(String tittel, String filnavn, byte[] dokument) {
        return new Builder(tittel, filnavn, dokument);
    }

    /**
     * @param tittel Tittel som vises til brukeren gitt riktig sikkerhetsnivå.
     * @param file Filen som skal sendes. Navnet på filen vil brukes som filnavn ovenfor mottaker.
     */
    public static Builder builder(String tittel, File file) {
        try {
            return builder(tittel, file.getName(), new FileInputStream(file));
        } catch (FileNotFoundException e) {
            throw new LastDokumentException("Fant ikke fil", e);
        }
    }



    public static class Builder {

        private final Dokument target;
        private boolean built = false;

        private Builder(String tittel, String filnavn, byte[] dokument) {
            target = new Dokument(tittel, filnavn, dokument);
        }

        /**
         * MIME-type for dokumentet. For informasjon om tillatte formater, se http://begrep.difi.no/SikkerDigitalPost/Dokumentformat/ }.
         *
         * Standard er application/pdf.
         */
        public Builder mimeType(String mimeType) {
            target.mimeType = mimeType;
            return this;
        }

        public Dokument build() {
            if (built) throw new IllegalStateException("Can't build twice");
            built = true;
            return target;
        }
    }

    public static class LastDokumentException extends RuntimeException {
        public LastDokumentException(String message, Exception e) {
            super(message, e);
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy