/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
/*
* MetaObjectRendererFactory.java
*
* Created on 24. Mai 2007, 15:14
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package de.cismet.cids.tools.metaobjectrenderer;
import Sirius.server.middleware.types.MetaObject;
import java.lang.reflect.Constructor;
import java.util.Collection;
import javax.swing.JComponent;
/**
* DOCUMENT ME!
*
* @author hell
* @version $Revision$, $Date$
*/
@Deprecated
public class MetaObjectRendererFactory {
//~ Static fields/initializers ---------------------------------------------
static MetaObjectRendererFactory instance = null;
//~ Instance fields --------------------------------------------------------
private final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass());
//~ Constructors -----------------------------------------------------------
/**
* Creates a new instance of MetaObjectRendererFactory.
*/
private MetaObjectRendererFactory() {
}
//~ Methods ----------------------------------------------------------------
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public static MetaObjectRendererFactory getInstance() {
if (instance == null) {
instance = new MetaObjectRendererFactory();
}
return instance;
}
/**
* DOCUMENT ME!
*
* @param mo DOCUMENT ME!
* @param title DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public JComponent getSingleRenderer(final MetaObject mo, final String title) {
String renderer = null;
try {
renderer = mo.getMetaClass().getRenderer();
} catch (Throwable e) {
log.warn("Error while assigning the renderer", e); // NOI18N
}
if (renderer != null) {
Class rendererClass = null;
try {
rendererClass = Class.forName(renderer);
final Constructor constructor = rendererClass.getConstructor();
final MetaObjectRenderer mor = (MetaObjectRenderer)constructor.newInstance();
final JComponent comp = mor.getSingleRenderer(mo, title);
comp.putClientProperty(MetaObjectRenderer.WIDTH_RATIO, mor.getWidthRatio());
return comp;
} catch (Throwable ex) {
log.error("Error in renderer " + renderer, ex); // NOI18N
}
}
try {
final DefaultMetaObjectRenderer mor = new DefaultMetaObjectRenderer();
final JComponent comp = mor.getSingleRenderer(mo, title);
comp.putClientProperty(MetaObjectRenderer.WIDTH_RATIO, mor.getWidthRatio());
return comp;
} catch (Throwable t) {
log.fatal("Error while exception handling ", t); // NOI18N
return null;
}
}
/**
* DOCUMENT ME!
*
* @param mc DOCUMENT ME!
* @param title DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public JComponent getAggregationRenderer(final Collection<MetaObject> mc, final String title) {
if (mc.size() == 1) {
return getSingleRenderer((MetaObject)mc.toArray()[0], title);
} else {
String renderer = null;
try {
renderer = ((MetaObject)mc.toArray()[0]).getMetaClass().getRenderer();
} catch (Throwable e) {
log.warn("Error while assigning the renderer", e); // NOI18N
}
if (renderer != null) {
Class rendererClass = null;
try {
rendererClass = Class.forName(renderer);
final Constructor constructor = rendererClass.getConstructor();
final MetaObjectRenderer mor = (MetaObjectRenderer)constructor.newInstance();
return mor.getAggregationRenderer(mc, title);
} catch (Throwable ex) {
log.error("Error in Renderer " + renderer, ex); // NOI18N
return null;
}
} else {
return null;
}
}
}
}