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());
}
}