/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
/*
* MetaObjectRenderer.java
*
* Created on 24. Mai 2007, 15:22
*
* 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.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Vector;
import javax.management.Attribute;
import javax.swing.JComponent;
import javax.swing.JPanel;
/**
* DOCUMENT ME!
*
* @author hell
* @version $Revision$, $Date$
*/
public abstract class MetaObjectRenderer extends JPanel {
//~ Static fields/initializers ---------------------------------------------
public static final String WIDTH_RATIO = "WIDTH_RATIO"; // NOI18N
//~ Constructors -----------------------------------------------------------
/**
* Creates a new instance of MetaObjectRenderer.
*/
public MetaObjectRenderer() {
}
//~ Methods ----------------------------------------------------------------
/**
* DOCUMENT ME!
*
* @param mo DOCUMENT ME!
* @param title DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public abstract JComponent getSingleRenderer(MetaObject mo, String title);
/**
* DOCUMENT ME!
*
* @param cm DOCUMENT ME!
* @param title DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public abstract JComponent getAggregationRenderer(Collection<MetaObject> cm, String title);
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public abstract double getWidthRatio();
/**
* TODO es wird noch ein besserer Platz gesucht.
*
* @param arrayLink DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public static Vector<MetaObject> getAllMetaObjectsOfAnArray(final Attribute arrayLink) {
// Sammeln der richtigen MetaObjects in einem Vector<MetaObject>
final Vector<MetaObject> arrayObjects = new Vector<MetaObject>();
final MetaObject artificialObject = (MetaObject)arrayLink.getValue();
final HashMap artificialAttributes = artificialObject.getAttributes();
final Iterator artificialKeySetIterator = artificialAttributes.keySet().iterator();
while (artificialKeySetIterator.hasNext()) {
final Attribute a = (Attribute)artificialAttributes.get(artificialKeySetIterator.next());
final MetaObject referenceMetaObject = (MetaObject)a.getValue();
// Es gibt nur ein Attribut in diesem Objekt das ein MetaObject ist
final Attribute aa = (Attribute)referenceMetaObject.getAttributesByType(MetaObject.class).toArray()[0];
arrayObjects.add((MetaObject)aa.getValue());
}
return arrayObjects;
}
}