public void insert()

in taverna-scufl2-ucfpackage/src/main/java/org/apache/taverna/scufl2/ucfpackage/impl/odfdom/pkg/OdfPackage.java [1036:1110]


	public void insert(byte[] fileBytes, String packagePath, String mediaType)
			throws Exception {
		packagePath = ensureValidPackagePath(packagePath);

		String d = EMPTY_STRING;
		// 2DO: Test tokenizer for whitespaces..
		StringTokenizer tok = new StringTokenizer(packagePath, SLASH);
		while (tok.hasMoreTokens()) {
			String s = tok.nextToken();
			d = (EMPTY_STRING.equals(d) ? s + SLASH : d + s + SLASH);
			if (tok.hasMoreTokens() && !mPackageEntries.contains(d)) {
				addDirectory(d);
				/*
				 * add manifest entry for folder if not already existing media
				 * type for folder has to be set for embedded objects
				 */
				if (!OdfPackage.OdfFile.MANIFEST.packagePath.equals(d)
						&& mediaType != null
						&& getManifestEntries().get(d) == null) {
					OdfFileEntry fileEntry = new OdfFileEntry(d, mediaType, -1);
					getManifestEntries().put(d, fileEntry);
					if (!mManifestList.contains(d))
						mManifestList.add(d);
				}
			}
		}
		try {
			if (OdfPackage.OdfFile.MEDIA_TYPE.getPath().equals(packagePath)) {
				try {
					setMediaType(new String(fileBytes, "UTF-8"));
				} catch (UnsupportedEncodingException useEx) {
					mLog.log(WARNING,
							"ODF file could not be created as string!", useEx);
				}
				return;
			}
			if (fileBytes == null)
				mContentStreams.remove(packagePath);
			else
				mContentStreams.put(packagePath, fileBytes);
			if (!mPackageEntries.contains(packagePath))
				mPackageEntries.add(packagePath);
			if (!OdfPackage.OdfFile.MANIFEST.packagePath.equals(packagePath)) {
				if (mediaType != null
						&& getManifestEntries().get(packagePath) == null) {
					OdfFileEntry fileEntry = new OdfFileEntry(packagePath,
							mediaType);
					getManifestEntries().put(packagePath, fileEntry);
					if (!mManifestList.contains(packagePath))
						mManifestList.add(packagePath);
				}
			} else
				parseManifest();
			ZipEntry ze = mZipEntries.get(packagePath);
			if (ze != null) {
				ze = new ZipEntry(packagePath);
				ze.setMethod(DEFLATED);
				mZipEntries.put(packagePath, ze);
				// 2DO Svante: No dependency to layer above!
				if (isFileCompressed(packagePath) == false)
					ze.setMethod(STORED);
			}
			entryUpdate(packagePath);
		} catch (SAXException se) {
			throw new Exception("SAXException:" + se.getMessage());
		} catch (ParserConfigurationException pce) {
			throw new Exception("ParserConfigurationException:"
					+ pce.getMessage());
		} catch (TransformerConfigurationException tce) {
			throw new Exception("TransformerConfigurationException:"
					+ tce.getMessage());
		} catch (TransformerException te) {
			throw new Exception("TransformerException:" + te.getMessage());
		}
	}