private void init (File zipFile, boolean continueOnError)
		throws IOException,
			JDOMException,
			ParseException,
			CombineArchiveException
	{
		if (zipFile.exists ())
		{
			// if the file was just created (doesn't contain anything) we can simpy
			// delete it..
			if (zipFile.length () == 0)
				zipFile.delete ();
		}
		zipFileLocation = zipFile;
		
		errors = new ArrayList<String> ();
		mainEntries = new ArrayList<ArchiveEntry> ();
		entries = new HashMap<String, ArchiveEntry> ();
		Map<String, String> zip_properties = new HashMap<String, String> ();
		zip_properties.put ("create", "true");
		zip_properties.put ("encoding", "UTF-8");
		boolean existingArchive = zipFile.exists ();
		try
		{
			zipfs = FileSystems.newFileSystem (URI.create ("jar:" + zipFile.toURI ()),
				zip_properties);
		}
		catch (IOException e)
		{
			LOGGER.error (e, "cannot read archive " + zipFile.toURI ()
				+ " (file system creation failed)");
			errors.add ("cannot read archive " + zipFile.toURI ()
				+ " (file system creation failed)");
			if (!continueOnError)
				throw e;
			return;
		}
		
		metaDataFiles = new ArrayList<Path> ();
		metaData = new MetaDataFile ();
		
		// read manifest
		Path mani = zipfs.getPath (MANIFEST_LOCATION).normalize ();
		if (Files.isRegularFile (mani))
			parseManifest (mani, continueOnError);
		else if (existingArchive)
		{
			LOGGER.error ("this is not a combine archive");
			errors.add ("this is not a combine archive");
			
			if (!continueOnError)
			{
				zipfs.close ();
				throw new CombineArchiveException ("this is no combine archive");
			}
		}
		
		cleanUp ();
	}