diff options
Diffstat (limited to 'moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java')
-rw-r--r-- | moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java | 202 |
1 files changed, 104 insertions, 98 deletions
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java index 578371c..65c6ccc 100644 --- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java @@ -1,16 +1,5 @@ package at.gv.egiz.asic.impl; -import at.gv.egiz.asic.api.ASiC; -import at.gv.egiz.asic.api.ASiCEntry; -import at.gv.egiz.asic.api.ASiCFormat; -import at.gv.egiz.asic.impl.handler.*; -import at.gv.egovernment.moa.spss.MOAApplicationException; -import at.gv.egovernment.moa.spss.MOAException; -import iaik.util.logging.Log; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; @@ -21,125 +10,142 @@ import java.util.Map; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.asic.api.ASiC; +import at.gv.egiz.asic.api.ASiCEntry; +import at.gv.egiz.asic.api.ASiCFormat; +import at.gv.egiz.asic.impl.handler.AllDataHandler; +import at.gv.egiz.asic.impl.handler.MetaInfHandler; +import at.gv.egiz.asic.impl.handler.MimefileHandler; +import at.gv.egovernment.moa.spss.MOAApplicationException; +import at.gv.egovernment.moa.spss.MOAException; + /** * Created by Andreas Fitzek on 6/15/16. */ public abstract class ASiCBaseFormatFactory implements ASiCContainer { - private static final Logger logger = LoggerFactory.getLogger(ASiCBaseFormatFactory.class); - - protected boolean cadesSigned = false; - protected boolean xadesSigned = false; - protected boolean timestamped = false; + private static final Logger logger = LoggerFactory.getLogger(ASiCBaseFormatFactory.class); - protected String mimeType = null; + protected boolean cadesSigned = false; + protected boolean xadesSigned = false; + protected boolean timestamped = false; - protected List<ASiCEntry> signatureEntries = new ArrayList<ASiCEntry>(); - protected Map<String, ASiCEntry> dataEntries = new HashMap<String, ASiCEntry>(); - protected List<ASiCEntry> informationEntries = new ArrayList<ASiCEntry>(); + protected String mimeType = null; - protected List<EntryHandler> handlers = new ArrayList<EntryHandler>(); + protected List<ASiCEntry> signatureEntries = new ArrayList<>(); + protected Map<String, ASiCEntry> dataEntries = new HashMap<>(); + protected List<ASiCEntry> informationEntries = new ArrayList<>(); - @Override - public void addDataEntry(ASiCEntry entry) throws MOAApplicationException { - //check if entry with a specific name already exists - if (!dataEntries.containsKey(entry.getEntryName())) { - this.dataEntries.put(entry.getEntryName(), entry); - - } else { - logger.warn("ASiC container already contains a DataEntry with name: " + entry.getEntryName() + " ASiC container is INVALID"); - throw new MOAApplicationException("asic.0017", new Object[]{entry.getEntryName()}); - } - } + protected List<EntryHandler> handlers = new ArrayList<>(); - @Override - public void addSignatureEntry(ASiCEntry entry) { - this.signatureEntries.add(entry); - } + @Override + public void addDataEntry(ASiCEntry entry) throws MOAApplicationException { + // check if entry with a specific name already exists + if (!dataEntries.containsKey(entry.getEntryName())) { + this.dataEntries.put(entry.getEntryName(), entry); - @Override - public void addInformationEntry(ASiCEntry entry) { - this.informationEntries.add(entry); + } else { + logger.warn("ASiC container already contains a DataEntry with name: " + entry.getEntryName() + + " ASiC container is INVALID"); + throw new MOAApplicationException("asic.0017", new Object[] { entry.getEntryName() }); } + } - public ASiCBaseFormatFactory() { - handlers.add(new MimefileHandler()); - handlers.add(new MetaInfHandler()); - handlers.add(new AllDataHandler()); - } + @Override + public void addSignatureEntry(ASiCEntry entry) { + this.signatureEntries.add(entry); + } - public abstract ASiCFormat factoryFormat(); + @Override + public void addInformationEntry(ASiCEntry entry) { + this.informationEntries.add(entry); + } - protected abstract void validate() throws MOAException; + public ASiCBaseFormatFactory() { + handlers.add(new MimefileHandler()); + handlers.add(new MetaInfHandler()); + handlers.add(new AllDataHandler()); + } - public ASiC createASiC(InputStream is) throws MOAException { + public abstract ASiCFormat factoryFormat(); - ZipCommentReaderStream commentReaderStream = new ZipCommentReaderStream(is); + protected abstract void validate() throws MOAException; - ZipInputStream zipInputStream = new ZipInputStream(commentReaderStream); + public ASiC createASiC(InputStream is) throws MOAException { - try { - for (ZipEntry entry = zipInputStream.getNextEntry(); entry != null; entry = zipInputStream.getNextEntry()) { - String entryName = entry.getName(); + final ZipCommentReaderStream commentReaderStream = new ZipCommentReaderStream(is); - Iterator<EntryHandler> handlerIterator = this.handlers.iterator(); - while (handlerIterator.hasNext()) { - EntryHandler entryHandler = handlerIterator.next(); + final ZipInputStream zipInputStream = new ZipInputStream(commentReaderStream); - if (entryHandler.handle(entryName, zipInputStream, this)) { - break; - } - } - } - } catch(IOException e) { - logger.info("Failed to read from ASiC Container", e); - throw new MOAApplicationException("asic.0007", null); - } + try { + for (ZipEntry entry = zipInputStream.getNextEntry(); entry != null; entry = zipInputStream + .getNextEntry()) { + final String entryName = entry.getName(); + final Iterator<EntryHandler> handlerIterator = this.handlers.iterator(); + while (handlerIterator.hasNext()) { + final EntryHandler entryHandler = handlerIterator.next(); - if(this.mimeType == null) { - String mimeTypeComment = commentReaderStream.getFileComment(); - if(mimeTypeComment != null) { - this.mimeType = mimeTypeComment; - } + if (entryHandler.handle(entryName, zipInputStream, this)) { + break; + } } - - this.validate(); - - // unpack and retrieve all available information on ASiC signature - return new ASiCImpl(this.factoryFormat(), this.xadesSigned, this.cadesSigned, this.signatureEntries, dataEntries.values(), this.informationEntries); + } + } catch (final IOException e) { + logger.info("Failed to read from ASiC Container", e); + throw new MOAApplicationException("asic.0007", null); } - @Override - public void setMimeType(String mimeType) { - this.mimeType = mimeType; + if (this.mimeType == null) { + final String mimeTypeComment = commentReaderStream.getFileComment(); + if (mimeTypeComment != null) { + this.mimeType = mimeTypeComment; + } } - public void setIsXAdES() throws MOAException { - if(this.cadesSigned) { - throw new MOAApplicationException("asic.0010", null); - } - this.xadesSigned = true; - } + this.validate(); - public void setIsCAdES() throws MOAException { - if(this.xadesSigned) { - throw new MOAApplicationException("asic.0010", null); - } - this.cadesSigned = true; - } + // unpack and retrieve all available information on ASiC signature + return new ASiCImpl(this.factoryFormat(), this.xadesSigned, this.cadesSigned, this.signatureEntries, + dataEntries.values(), this.informationEntries); + } - public void setIsTimestamped() throws MOAException { - throw new MOAApplicationException("asic.0013", null); - } + @Override + public void setMimeType(String mimeType) { + this.mimeType = mimeType; + } - @Override - public void setIsEvidenceERS() throws MOAException { - throw new MOAApplicationException("asic.0011", null); + @Override + public void setIsXAdES() throws MOAException { + if (this.cadesSigned) { + throw new MOAApplicationException("asic.0010", null); } + this.xadesSigned = true; + } - @Override - public void setIsEvidenceXML() throws MOAException { - throw new MOAApplicationException("asic.0012", null); + @Override + public void setIsCAdES() throws MOAException { + if (this.xadesSigned) { + throw new MOAApplicationException("asic.0010", null); } + this.cadesSigned = true; + } + + @Override + public void setIsTimestamped() throws MOAException { + throw new MOAApplicationException("asic.0013", null); + } + + @Override + public void setIsEvidenceERS() throws MOAException { + throw new MOAApplicationException("asic.0011", null); + } + + @Override + public void setIsEvidenceXML() throws MOAException { + throw new MOAApplicationException("asic.0012", null); + } } |