/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.web.bundle;
import java.io.IOException;
import java.util.List;
import org.apache.commons.io.IOUtils;
import com.opengamma.DataNotFoundException;
import com.opengamma.util.ArgumentChecker;
/**
* Utility to assist in the creation of bundles in HTML.
*/
public final class BundleUtils {
/**
* Builds the imports for a bundle.
*
* @param bundle the bundle, not null
* @param webBundleUris the URI helper, not null
* @return the bundle HTML import text, not null
*/
public static String buildImports(Bundle bundle, WebBundlesUris webBundleUris) {
ArgumentChecker.notNull(bundle, "bundle");
ArgumentChecker.notNull(webBundleUris, "webBundleUris");
StringBuilder buf = new StringBuilder();
List<BundleNode> childNodes = bundle.getChildNodes();
for (BundleNode node : childNodes) {
if (node instanceof Bundle) {
Bundle nodeBundle = (Bundle) node;
buf.append("@import url('");
buf.append(webBundleUris.bundle(DeployMode.DEV, nodeBundle.getId()).getPath());
buf.append("');\n");
}
if (node instanceof Fragment) {
Fragment fragment = (Fragment) node;
buf.append("@import url('" + fragment.getPath() + "');\n");
}
}
return buf.toString();
}
/**
* Reads and combines a bundle.
*
* @param bundle the bundle to read, not null
* @return the combined source code, not null
*/
public static String readBundleSource(Bundle bundle) {
List<Fragment> allFragments = bundle.getAllFragments();
StringBuilder buf = new StringBuilder(1024);
for (Fragment fragment : allFragments) {
try {
buf.append(IOUtils.toString(fragment.getUri()));
buf.append("\n");
} catch (IOException ex) {
throw new DataNotFoundException("IOException reading " + fragment.getUri());
}
}
return buf.toString();
}
}