in taverna-scufl2-ucfpackage/src/main/java/org/apache/taverna/scufl2/ucfpackage/impl/odfdom/pkg/OdfPackage.java [820:887]
public void insert(Document fileDOM, String packagePath, String mediaType)
throws Exception {
packagePath = ensureValidPackagePath(packagePath);
try {
if (mManifestEntries == null)
parseManifest();
} catch (Exception e) {
throw new RuntimeException(e);
}
if (mediaType == null)
mediaType = XML_MEDIA_TYPE;
String d = EMPTY_STRING;
StringTokenizer tok = new StringTokenizer(packagePath, SLASH);
while (tok.hasMoreTokens()) {
String s = tok.nextToken();
if (EMPTY_STRING.equals(d))
d = s + SLASH;
else
d = d + s + SLASH;
if (tok.hasMoreTokens() && !mPackageEntries.contains(d))
addDirectory(d);
}
mContentStreams.remove(packagePath);
if (fileDOM == null)
mContentDoms.remove(packagePath);
else
mContentDoms.put(packagePath, fileDOM);
if (!mPackageEntries.contains(packagePath))
mPackageEntries.add(packagePath);
try {
if (!OdfPackage.OdfFile.MANIFEST.packagePath.equals(packagePath)) {
if (mManifestEntries != null
&& mManifestEntries.get(packagePath) == null) {
OdfFileEntry fileEntry = new OdfFileEntry(packagePath,
mediaType);
mManifestEntries.put(packagePath, fileEntry);
mManifestList.add(packagePath);
}
} else
parseManifest();
// try to get the package from our cache
ZipEntry ze = mZipEntries.get(packagePath);
if (ze == null) {
ze = new ZipEntry(packagePath);
ze.setMethod(DEFLATED);
mZipEntries.put(packagePath, ze);
}
if (!isFileCompressed(packagePath))
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());
}
}