Generator für generierten Inhalt bei persönlichen Profilen
git-svn-id: https://svn.libreccm.org/ccm/trunk@1084 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
9809b53dae
commit
7d0d88359d
|
|
@ -0,0 +1,15 @@
|
||||||
|
package com.arsdigita.cms.publicpersonalprofile;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericPerson;
|
||||||
|
import com.arsdigita.xml.Element;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
public interface ContentGenerator {
|
||||||
|
|
||||||
|
void generateContent(Element parent, GenericPerson person);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -34,9 +34,12 @@ import com.arsdigita.web.BaseApplicationServlet;
|
||||||
import com.arsdigita.xml.Document;
|
import com.arsdigita.xml.Document;
|
||||||
import com.arsdigita.xml.Element;
|
import com.arsdigita.xml.Element;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.rmi.ServerException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.logging.Level;
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
@ -198,17 +201,71 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
|
||||||
state);
|
state);
|
||||||
}
|
}
|
||||||
|
|
||||||
links.next();
|
PublicPersonalProfileNavItemCollection navItems =
|
||||||
final RelatedLink link =
|
new PublicPersonalProfileNavItemCollection();
|
||||||
(RelatedLink) DomainObjectFactory.
|
navItems.addLanguageFilter(DispatcherHelper.
|
||||||
newInstance(links.getDataObject());
|
getNegotiatedLocale().
|
||||||
final ContentItem item = link.getTargetItem();
|
getLanguage());
|
||||||
final PublicPersonalProfileXmlGenerator generator =
|
navItems.addKeyFilter(navPath);
|
||||||
new PublicPersonalProfileXmlGenerator(
|
navItems.next();
|
||||||
item);
|
|
||||||
generator.generateXML(new PageState(page, request,
|
if (navItems.getNavItem().getGeneratorClass()
|
||||||
response),
|
!= null) {
|
||||||
root, "");
|
try {
|
||||||
|
Object generatorObj =
|
||||||
|
Class.forName(navItems.getNavItem().
|
||||||
|
getGeneratorClass()).getConstructor().
|
||||||
|
newInstance();
|
||||||
|
|
||||||
|
if (generatorObj instanceof ContentGenerator) {
|
||||||
|
final ContentGenerator generator = (ContentGenerator) generatorObj;
|
||||||
|
|
||||||
|
generator.generateContent(root, owner);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
throw new ServerException(String.format(
|
||||||
|
"Class '%s' is not a ContentGenerator.",
|
||||||
|
navItems.getNavItem().
|
||||||
|
getGeneratorClass()));
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (InstantiationException ex) {
|
||||||
|
throw new ServletException(
|
||||||
|
"Failed to create generator", ex);
|
||||||
|
} catch (IllegalAccessException ex) {
|
||||||
|
throw new ServletException(
|
||||||
|
"Failed to create generator", ex);
|
||||||
|
} catch (IllegalArgumentException ex) {
|
||||||
|
throw new ServletException(
|
||||||
|
"Failed to create generator", ex);
|
||||||
|
} catch (InvocationTargetException ex) {
|
||||||
|
throw new ServletException(
|
||||||
|
"Failed to create generator", ex);
|
||||||
|
} catch (ClassNotFoundException ex) {
|
||||||
|
throw new ServletException(
|
||||||
|
"Failed to create generator", ex);
|
||||||
|
} catch (NoSuchMethodException ex) {
|
||||||
|
throw new ServletException(
|
||||||
|
"Failed to create generator", ex);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
links.next();
|
||||||
|
final RelatedLink link =
|
||||||
|
(RelatedLink) DomainObjectFactory.
|
||||||
|
newInstance(links.getDataObject());
|
||||||
|
final ContentItem item = link.getTargetItem();
|
||||||
|
final PublicPersonalProfileXmlGenerator generator =
|
||||||
|
new PublicPersonalProfileXmlGenerator(
|
||||||
|
item);
|
||||||
|
generator.generateXML(new PageState(page,
|
||||||
|
request,
|
||||||
|
response),
|
||||||
|
root,
|
||||||
|
"");
|
||||||
|
}
|
||||||
|
|
||||||
|
navItems.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -463,20 +520,20 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
|
||||||
|
|
||||||
page.setClassAttr("adminPage");
|
page.setClassAttr("adminPage");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
final BoxPanel box = new BoxPanel(BoxPanel.VERTICAL);
|
final BoxPanel box = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
final FormSection tableSection = new FormSection(box);
|
final FormSection tableSection = new FormSection(box);
|
||||||
|
|
||||||
final PublicPersonalProfileNavItemsTable table =
|
final PublicPersonalProfileNavItemsTable table =
|
||||||
new PublicPersonalProfileNavItemsTable();
|
new PublicPersonalProfileNavItemsTable();
|
||||||
|
|
||||||
|
|
||||||
box.add(table);
|
box.add(table);
|
||||||
form.add(tableSection);
|
form.add(tableSection);
|
||||||
|
|
||||||
box.add(new PublicPersonalProfileNavItemsAddForm());
|
box.add(new PublicPersonalProfileNavItemsAddForm());
|
||||||
|
|
||||||
page.add(form);
|
page.add(form);
|
||||||
page.lock();
|
page.lock();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue