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

no.difi.sdp.client2.domain.MetadataDokument 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 MetadataDokument implements AsicEAttachable {

    private String filnavn;
    private byte[] dokument;
    private String mimeType;

    public MetadataDokument(String filnavn, String mimeType, byte[] dokument) {
        this.filnavn = filnavn;
        this.mimeType = mimeType;
        this.dokument = dokument;
    }

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

    /**
     * @param filnavn  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 filnavn, String mimetype, byte[] dokument) {
        return new Builder(filnavn, mimetype, dokument);
    }

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

    @Override
    public String getFileName() {
        return this.filnavn;
    }

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

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

    public static class Builder {

        private final MetadataDokument target;
        private boolean built = false;

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

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




© 2015 - 2024 Weber Informatics LLC | Privacy Policy