Search in sources :

Example 1 with RootFiles

use of org.eclipse.mylyn.docs.epub.ocf.RootFiles in project mylyn.docs by eclipse.

the class TestEPUB method testPackFail.

/**
 * Test method for {@link org.eclipse.mylyn.docs.epub.core.EPUB#pack(java.io.File)}.
 * <ul>
 * <li>Shall throw exception when unknown publication type is added.</li>
 * </ul>
 *
 * @throws Exception
 */
@Test
public final void testPackFail() throws Exception {
    EPUB epub = new EPUB();
    File drawing = new File("testdata/drawing.svg");
    epub.add(drawing, "image/svg+xml");
    Container container = epub.getContainer();
    RootFiles rootfiles = container.getRootfiles();
    EList<RootFile> files = rootfiles.getRootfiles();
    files.get(0).setPublication(null);
    try {
        epub.pack(epubFile);
        fail();
    } catch (Exception e) {
    }
}
Also used : Container(org.eclipse.mylyn.docs.epub.ocf.Container) EPUB(org.eclipse.mylyn.docs.epub.core.EPUB) RootFiles(org.eclipse.mylyn.docs.epub.ocf.RootFiles) RootFile(org.eclipse.mylyn.docs.epub.ocf.RootFile) RootFile(org.eclipse.mylyn.docs.epub.ocf.RootFile) File(java.io.File) IOException(java.io.IOException) Test(org.junit.Test)

Example 2 with RootFiles

use of org.eclipse.mylyn.docs.epub.ocf.RootFiles in project mylyn.docs by eclipse.

the class TestEPUB method testAddOPSPublication.

/**
 * Test method for {@link org.eclipse.mylyn.docs.epub.core.EPUB#add(org.eclipse.mylyn.docs.epub.core.Publication)} .
 * <ul>
 * <li>Container shall hold more than one OPS publication</li>
 * <li>OPS structures shall follow naming conventions.</li>
 * <li>OPS MIME-type shall be correct</li>
 * <li>Rootfile object shall be correct.</li>
 * </ul>
 *
 * @throws Exception
 */
@Test
public final void testAddOPSPublication() throws Exception {
    EPUB epub = new EPUB();
    Publication oebps1 = new OPSPublication();
    Publication oebps2 = new OPSPublication();
    epub.add(oebps1);
    epub.add(oebps2);
    Container container = epub.getContainer();
    RootFiles rootfiles = container.getRootfiles();
    EList<RootFile> files = rootfiles.getRootfiles();
    assertEquals(true, files.get(0).getFullPath().equals("OEBPS/content.opf"));
    assertEquals(true, files.get(1).getFullPath().equals("OEBPS_1/content.opf"));
    assertEquals(true, files.get(0).getMediaType().equals("application/oebps-package+xml"));
    assertEquals(true, files.get(1).getMediaType().equals("application/oebps-package+xml"));
    assertEquals(true, files.get(0).getPublication() == oebps1);
    assertEquals(true, files.get(1).getPublication() == oebps2);
}
Also used : Container(org.eclipse.mylyn.docs.epub.ocf.Container) EPUB(org.eclipse.mylyn.docs.epub.core.EPUB) Publication(org.eclipse.mylyn.docs.epub.core.Publication) OPSPublication(org.eclipse.mylyn.docs.epub.core.OPSPublication) RootFiles(org.eclipse.mylyn.docs.epub.ocf.RootFiles) OPSPublication(org.eclipse.mylyn.docs.epub.core.OPSPublication) RootFile(org.eclipse.mylyn.docs.epub.ocf.RootFile) Test(org.junit.Test)

Example 3 with RootFiles

use of org.eclipse.mylyn.docs.epub.ocf.RootFiles in project mylyn.docs by eclipse.

the class EPUB method add.

/**
 * Adds a new publication (or root file) to the EPUB. Use {@link #add(Publication)} when adding an OEBPS
 * publication.
 * <p>
 * Note that while an {@link EPUB} can technically contain multiple instances of an {@link Publication}, in practice
 * reading systems does not support this.
 * </p>
 *
 * @param file
 *            the publication to add
 * @param type
 *            the MIME type of the publication
 * @see #add(Publication)
 */
public void add(File file, String type) {
    String name = type.substring(type.lastIndexOf('/') + 1, type.length()).toUpperCase();
    RootFiles rootFiles = ocfContainer.getRootfiles();
    int count = rootFiles.getRootfiles().size();
    if (count >= 1) {
        // $NON-NLS-1$
        log("Multiple root files is unsupported by most reading systems!", Severity.WARNING);
    }
    // $NON-NLS-1$
    String rootFileName = count > 0 ? name + "_" + count : name;
    rootFileName += File.separator + file.getName();
    RootFile rootFile = OCFFactory.eINSTANCE.createRootFile();
    rootFile.setFullPath(rootFileName);
    rootFile.setMediaType(type);
    rootFile.setPublication(file);
    rootFiles.getRootfiles().add(rootFile);
    log(// $NON-NLS-1$
    MessageFormat.format(// $NON-NLS-1$
    Messages.getString("EPUB.1"), // $NON-NLS-1$
    rootFile.getFullPath(), rootFile.getMediaType()), Severity.VERBOSE);
}
Also used : RootFiles(org.eclipse.mylyn.docs.epub.ocf.RootFiles) RootFile(org.eclipse.mylyn.docs.epub.ocf.RootFile)

Example 4 with RootFiles

use of org.eclipse.mylyn.docs.epub.ocf.RootFiles in project mylyn.docs by eclipse.

the class TestEPUB method testAddFileString.

/**
 * Test method for {@link org.eclipse.mylyn.docs.epub.core.EPUB#add(java.io.File, java.lang.String)} .
 * <ul>
 * <li>Publication MIME-type shall be correct</li>
 * <li>Rootfile path shall be correct</li>
 * <li>Rootfile object shall be correct.</li>
 * </ul>
 *
 * @throws Exception
 */
@Test
public final void testAddFileString() throws Exception {
    EPUB epub = new EPUB();
    File drawing = new File("testdata/drawing.svg");
    epub.add(drawing, "image/svg+xml");
    Container container = epub.getContainer();
    RootFiles rootfiles = container.getRootfiles();
    EList<RootFile> files = rootfiles.getRootfiles();
    assertEquals(true, files.get(0).getFullPath().equals("SVG+XML/drawing.svg"));
    assertEquals(true, files.get(0).getMediaType().equals("image/svg+xml"));
    assertEquals(true, files.get(0).getPublication() == drawing);
}
Also used : Container(org.eclipse.mylyn.docs.epub.ocf.Container) EPUB(org.eclipse.mylyn.docs.epub.core.EPUB) RootFiles(org.eclipse.mylyn.docs.epub.ocf.RootFiles) RootFile(org.eclipse.mylyn.docs.epub.ocf.RootFile) RootFile(org.eclipse.mylyn.docs.epub.ocf.RootFile) File(java.io.File) Test(org.junit.Test)

Example 5 with RootFiles

use of org.eclipse.mylyn.docs.epub.ocf.RootFiles in project mylyn.docs by eclipse.

the class EPUB method add.

/**
 * Adds a new OEBPS publication to the EPUB. Use {@link #add(File, String)} to add other types of content.
 * <p>
 * Note that while an {@link EPUB} can technically contain multiple instances of an {@link Publication}, in practice
 * reading systems does not support this.
 * </p>
 *
 * @param oebps
 *            the publication to add.
 * @since 2.0
 */
public void add(Publication oebps) {
    RootFiles rootFiles = ocfContainer.getRootfiles();
    int count = rootFiles.getRootfiles().size();
    if (count >= 1) {
        // $NON-NLS-1$
        log("Multiple root files is unsupported by most reading systems!", Severity.WARNING);
    }
    // $NON-NLS-1$ //$NON-NLS-2$
    String rootFileName = count > 0 ? "OEBPS_" + count : "OEBPS";
    // $NON-NLS-1$
    rootFileName += "/content.opf";
    RootFile rootFile = OCFFactory.eINSTANCE.createRootFile();
    rootFile.setFullPath(rootFileName);
    rootFile.setMediaType(MIMETYPE_OEBPS);
    rootFile.setPublication(oebps);
    rootFiles.getRootfiles().add(rootFile);
    log(// $NON-NLS-1$
    MessageFormat.format(// $NON-NLS-1$
    Messages.getString("EPUB.0"), // $NON-NLS-1$
    rootFile.getFullPath(), rootFile.getMediaType()), Severity.VERBOSE);
}
Also used : RootFiles(org.eclipse.mylyn.docs.epub.ocf.RootFiles) RootFile(org.eclipse.mylyn.docs.epub.ocf.RootFile)

Aggregations

RootFiles (org.eclipse.mylyn.docs.epub.ocf.RootFiles)6 RootFile (org.eclipse.mylyn.docs.epub.ocf.RootFile)5 EPUB (org.eclipse.mylyn.docs.epub.core.EPUB)3 Container (org.eclipse.mylyn.docs.epub.ocf.Container)3 Test (org.junit.Test)3 File (java.io.File)2 IOException (java.io.IOException)1 ENotificationImpl (org.eclipse.emf.ecore.impl.ENotificationImpl)1 OPSPublication (org.eclipse.mylyn.docs.epub.core.OPSPublication)1 Publication (org.eclipse.mylyn.docs.epub.core.Publication)1