/* BookBuilderImpl.java created 2008-03-26 * */ package org.signalml.domain.book; import java.io.File; import java.io.IOException; import pl.edu.fuw.MP.MPBookStore; import pl.edu.fuw.MP.Core.BookLibraryV5Writer; /** BookBuilderImpl * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ public class DefaultBookBuilder implements BookBuilder { private static DefaultBookBuilder sharedInstance = null; protected DefaultBookBuilder() { } public static DefaultBookBuilder getInstance() { if (sharedInstance == null) { synchronized (DefaultBookBuilder.class) { if (sharedInstance == null) sharedInstance = new DefaultBookBuilder(); } } return sharedInstance; } @Override public StandardBook readBook(File file) throws IOException, BookFormatException { MPBookStore book = new MPBookStore(); if (!book.Open(file.getAbsolutePath())) { return null; } return book; } @Override public void writeBookComplete(StandardBook book, File file) throws IOException { IncrementalBookWriter bookWriter = writeBookIncremental(book, file); int segmentCount = book.getSegmentCount(); for (int i=0; i<segmentCount; i++) { bookWriter.writeSegment(book.getSegmentAt(i)); } bookWriter.close(); } @Override public IncrementalBookWriter writeBookIncremental(StandardBook book, File file) throws IOException { return new MPv5BookWriter(book, file); } @Override public IncrementalBookWriter writeBookIncremental(StandardBookWriter book, String file) throws IOException { BookLibraryV5Writer b=(BookLibraryV5Writer)book; b.Open(file); return b; } public StandardBookWriter createBook() { BookLibraryV5Writer book=new BookLibraryV5Writer(); return book; } }