1 /***
2 *
3 */
4 package com.fernsroth.squashfs;
5
6 import java.io.File;
7 import java.io.IOException;
8 import java.io.InputStream;
9
10 import javax.xml.parsers.ParserConfigurationException;
11 import javax.xml.parsers.SAXParser;
12 import javax.xml.parsers.SAXParserFactory;
13
14 import org.xml.sax.SAXException;
15
16 import com.fernsroth.squashfs.exception.NestedSquashFSExcception;
17 import com.fernsroth.squashfs.exception.SquashFSException;
18 import com.fernsroth.squashfs.model.Manifest;
19
20 /***
21 *
22 * @author Joseph M. Ferner (Near Infinity Corporation)
23 */
24 public class SquashFSManifest {
25
26 /***
27 * the sax parser factory.
28 */
29 private static SAXParserFactory factory;
30
31 static {
32 factory = SAXParserFactory.newInstance();
33 factory.setValidating(true);
34 }
35
36 /***
37 * loads a manifest file.
38 * @param manifestInput the manifest input.
39 * @param rootDirectory the root directory.
40 * @return the loaded manifest.
41 * @throws SquashFSException
42 * @throws IOException
43 */
44 public static Manifest load(InputStream manifestInput, File rootDirectory)
45 throws SquashFSException, IOException {
46 try {
47 SAXParser parser = factory.newSAXParser();
48 ManifestSAXHandler manifestHandler = new ManifestSAXHandler(
49 rootDirectory);
50 parser.parse(manifestInput, manifestHandler);
51 return manifestHandler.getManifest();
52 } catch (ParserConfigurationException e) {
53 throw new NestedSquashFSExcception("could not load manifest file",
54 e);
55 } catch (SAXException e) {
56 throw new NestedSquashFSExcception("could not load manifest file",
57 e);
58 }
59 }
60 }