package org.openntf.domino.nsfdata.structs.obj; import java.util.Iterator; import java.util.logging.Logger; import org.openntf.domino.design.impl.FileResource; import org.openntf.domino.nsfdata.structs.cd.CDEVENT; import org.openntf.domino.nsfdata.structs.cd.CDFILEHEADER; import org.openntf.domino.nsfdata.structs.cd.CDRecord; import org.openntf.domino.nsfdata.structs.cd.CData; public class CDObject { private static final Logger log_ = Logger.getLogger(FileResource.class.getName()); public static CDObject create(final Iterator<CDRecord> records) { if (!records.hasNext()) return null; CDRecord nextRecord = records.next(); if (nextRecord instanceof CDFILEHEADER) return new CDResourceFile((CDFILEHEADER) nextRecord, records); if (nextRecord instanceof CDEVENT) return new CDResourceEvent((CDEVENT) nextRecord, records); throw new IllegalArgumentException("Do not know what to do with a " + nextRecord.getClass().getSimpleName()); } public static CDObject create(final CData cdata) { Iterator<CDRecord> iter = cdata.iterator(); try { return create(cdata.iterator()); } finally { while (iter.hasNext()) { log_.warning("There are dangling elements in CData stream: " + iter.next().getClass().getName()); } } } }