no.difi.sdp.client2.domain.Dokument Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sikker-digital-post-klient-java Show documentation
Show all versions of sikker-digital-post-klient-java Show documentation
Klient for sending av sikker digital post fra offentlige virksomheter.
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);
}
}
}