jford 2004/10/15 11:44:57 Modified: applications/pam/src/java/org/apache/jetspeed/portlets/pam PortletApplicationDetail.java Log: Initial code for extracting xml from OM. This could be moved into a more common area however. Revision Changes Path 1.33 +212 -1 jakarta-jetspeed-2/applications/pam/src/java/org/apache/jetspeed/portlets/pam/PortletApplicationDetail.java Index: PortletApplicationDetail.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/applications/pam/src/java/org/apache/jetspeed/portlets/pam/PortletApplicationDetail.java,v retrieving revision 1.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- PortletApplicationDetail.java 6 Oct 2004 23:45:05 -0000 1.32 +++ PortletApplicationDetail.java 15 Oct 2004 18:44:56 -0000 1.33 @@ -19,6 +19,7 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.Collection; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Locale; @@ -29,6 +30,7 @@ import javax.portlet.PortletConfig; import javax.portlet.PortletContext; import javax.portlet.PortletException; +import javax.portlet.PortletMode; import javax.portlet.PortletSession; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; @@ -48,6 +50,7 @@ import org.apache.jetspeed.om.common.portlet.MutablePortletApplication; import org.apache.jetspeed.om.common.portlet.PortletDefinitionComposite; import org.apache.jetspeed.om.common.preference.PreferenceComposite; +import org.apache.pluto.om.common.DescriptionSet; import org.apache.pluto.om.common.SecurityRoleRef; import org.apache.pluto.om.portlet.ContentType; import org.apache.portals.bridges.common.GenericServletPortlet; @@ -1065,6 +1068,214 @@ registry.getPersistenceStore().getTransaction().commit(); } } + } + + private String createXml(MutablePortletApplication pa) + { + StringBuffer buffer = new StringBuffer(); + + buffer.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); + + //TODO: add namespace + buffer.append("<portlet-app id=\""); + buffer.append(pa.getApplicationIdentifier()); + buffer.append("\" version=\""); + buffer.append(pa.getVersion()); + buffer.append("\">\n"); + + Iterator portletDefsIter = pa.getPortletDefinitions().iterator(); + while (portletDefsIter.hasNext()) + { + PortletDefinitionComposite pDef = (PortletDefinitionComposite) portletDefsIter.next(); + buffer.append(createPortletDefinitionXml(pDef)); + } + + buffer.append("</portlet-app>\n"); + + return buffer.toString(); + } + + private String createPortletDefinitionXml(PortletDefinitionComposite pDef) + { + StringBuffer buffer = new StringBuffer(); + + buffer.append("<portlet id=\""); + buffer.append(pDef.getPortletIdentifier()); + buffer.append("\">\n"); + + Iterator paramIter = pDef.getInitParameterSet().iterator(); + while (paramIter.hasNext()) + { + ParameterComposite param = (ParameterComposite) paramIter.next(); + buffer.append("<init-param>\n"); + + addDescriptions(buffer, param.getDescriptionSet()); + + buffer.append("\t<name>"); + buffer.append(param.getName()); + buffer.append("</name>\n"); + buffer.append("\t<value>"); + buffer.append(param.getValue()); + buffer.append("</value>\n"); + buffer.append("</init-param>\n"); + } + + buffer.append("\t<portlet-name>"); + buffer.append(pDef.getName()); + buffer.append("</portlet-name>\n"); + + Iterator displayNameIter = pDef.getDisplayNameSet().iterator(); + while (displayNameIter.hasNext()) + { + MutableDisplayName displayName = (MutableDisplayName) displayNameIter.next(); + buffer.append("\t<display-name"); + if(displayName.getLocale() != null) + { + buffer.append(" xml:lang=\""); + buffer.append(displayName.getLocale().getCountry()); + buffer.append("\""); + } + buffer.append(">"); + buffer.append(displayName.getDisplayName()); + buffer.append("</display-name>\n"); + } + + addDescriptions(buffer, pDef.getDescriptionSet()); + + buffer.append("\t<portlet-class>"); + buffer.append(pDef.getClassName()); + buffer.append("</portlet-class>\n"); + + buffer.append("\t<expiration-cache>"); + buffer.append(pDef.getExpirationCache()); + buffer.append("</expiration-cache>\n"); + + + Iterator contentTypeIter = pDef.getContentTypeSet().iterator(); + while (contentTypeIter.hasNext()) + { + buffer.append("\t<supports>\n"); + ContentType contentType = (ContentType) contentTypeIter.next(); + buffer.append("\t\t<mime-type>\n"); + buffer.append(contentType.getContentType()); + buffer.append("</mime-type>\n"); + + Iterator modeIter = contentType.getPortletModes(); + while (modeIter.hasNext()) + { + PortletMode mode = (PortletMode) modeIter.next(); + buffer.append("\t\t<portlet-mode>"); + buffer.append(mode.toString()); + buffer.append("</portlet-mode>\n"); + } + + buffer.append("</supports>"); + } + + + + String resourceBundle = pDef.getResourceBundle(); + if(resourceBundle == null) + { + //<portlet-info> + //StringBuffer supportedLocaleBuffer = new StringBuffer(); + StringBuffer portletInfoBuffer = new StringBuffer(); + + Iterator langIter = pDef.getLanguageSet().iterator(); + while (langIter.hasNext()) + { + MutableLanguage lang = (MutableLanguage) langIter.next(); + /* + supportedLocaleBuffer.append("\t<supported-locale>"); + supportedLocaleBuffer.append(lang.getLocale().getCountry()); + supportedLocaleBuffer.append("</supported-locale>\n"); + */ + + //lang. + portletInfoBuffer.append("\t<portlet-info>\n"); + portletInfoBuffer.append("\t\t<title>"); + portletInfoBuffer.append(lang.getTitle()); + portletInfoBuffer.append("</title>\n"); + if(lang.getShortTitle() != null) + { + portletInfoBuffer.append("\t\t<short-title>"); + portletInfoBuffer.append(lang.getShortTitle()); + portletInfoBuffer.append("</short-title>\n"); + } + Iterator keywordIter = lang.getKeywords(); + if(keywordIter.hasNext()) + { + portletInfoBuffer.append("\t\t<keywords>"); + while (keywordIter.hasNext()) + { + String keyword = (String) keywordIter.next(); + portletInfoBuffer.append(keyword); + if(keywordIter.hasNext()) + { + portletInfoBuffer.append(","); + } + } + portletInfoBuffer.append("</keywords>\n"); + } + portletInfoBuffer.append("\t</portlet-info>\n"); + } + +// buffer.append(supportedLocaleBuffer); + buffer.append(portletInfoBuffer); + } + else + { + Iterator supportIter = pDef.getSupportedLocales().iterator(); + while (supportIter.hasNext()) + { + Locale locale = (Locale) supportIter.next(); + buffer.append("\t<supported-locale>"); + buffer.append(locale.getCountry()); + buffer.append("<supported-locale>\n"); + } + } + + buffer.append("\t<portlet-preferences>\n"); + Iterator prefIter = pDef.getPreferenceSet().iterator(); + while (prefIter.hasNext()) + { + PreferenceComposite pref = (PreferenceComposite) prefIter.next(); + buffer.append("\t\t<preference>\n"); + buffer.append("\t\t\t<name>);"); + buffer.append(pref.getName()); + buffer.append("</name>\n"); + String[] values = pref.getValueArray(); + for (int i = 0; i < values.length; i++) + { + String value = values[i]; + buffer.append("\t\t\t<value>"); + buffer.append(value); + buffer.append("</value>\n"); + } + + buffer.append("\t\t</preference>\n"); + } + buffer.append("</portlet-preferences>"); + + buffer.append("</portlet>\n"); + + return buffer.toString(); + } + + private void addDescriptions(StringBuffer buffer, DescriptionSet descriptions) + { + Iterator descIter = descriptions.iterator(); + MutableDescription desc = (MutableDescription) descIter.next(); + buffer.append("\t<description"); + if(desc.getLocale() != null) + { + buffer.append(" xml:lang=\""); + buffer.append(desc.getLocale().getCountry()); + buffer.append("\""); + } + buffer.append(">"); + buffer.append(desc.getDescription()); + buffer.append("</description>\n"); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]