ChannelParameter[] parameters = channelDef.getParameters();
if (parameters != null) {
// Keep track of any portlet preferences
PreferenceSetImpl preferences = new PreferenceSetImpl();
for (int i = 0; i < parameters.length; i++) {
String paramName = parameters[i].getName();
String paramValue = parameters[i].getValue();
boolean paramOverride = parameters[i].getOverride();
if (paramName == null && paramValue == null) {
throw new RuntimeException("Invalid parameter node");
}
if (paramName.startsWith(CPortletAdapter.portletPreferenceNamePrefix)) {
// We have a portlet preference
String prefName = paramName.substring(CPortletAdapter.portletPreferenceNamePrefix.length());
String prefValue = paramValue;
List prefValues = (List)preferences.get(prefName);
// Unfortunately, we can only support single-valued preferences
// at this level unless we change a lot of uPortal code :(
prefValues = new ArrayList(1);
prefValues.add(prefValue);
preferences.add(prefName, prefValues, !paramOverride);
} else {
// We have a normal channel parameter
String insert = "INSERT INTO UP_CHANNEL_PARAM (CHAN_ID, CHAN_PARM_NM, CHAN_PARM_VAL, CHAN_PARM_OVRD) VALUES (" + channelPublishId +
",'" + paramName + "','" + paramValue + "', '" + (paramOverride ? "Y" : "N") + "')";
if (log.isDebugEnabled())
log.debug("RDBMChannelRegistryStore.saveChannelDefinition(): " + insert);
stmt.executeUpdate(insert);
}
}
if (preferences.size() > 0) {
PortletPreferencesStoreFactory.getPortletPreferencesStoreImpl().setDefinitionPreferences(channelPublishId, preferences);
}
}
// Commit the transaction