Package de.xima.fc.web.common.utils
Class BeanUtils
- java.lang.Object
-
- de.xima.fc.web.common.utils.BeanUtils
-
public final class BeanUtils extends Object
Hilfsklasse für das (generische) Setzen von Eigenschaften (speziell von Entitäten).- Author:
- XIMA MEDIA GmbH
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static ValueDescriptorcorrectlyTypedDescriptor(Object bean, String propName, Object propValue)static <E extends ITransferable>
Class<E>findModelClass(Object bean, String entityPropName)Liefert die konkrete Klasse, welche die gefunden getter-Methode als Rückgabewert hat.static ObjectgetCollectionObject(List<Object> entList, Class<?> cl)static ITransferableEntitygetEntity(UserContext uc, String entityName, String id)Generisches Auslesen der Entität anhand der ID und dem Namen der Entität.static Class<?>getGenericClassFromList(Object bean, String propName)static Class<?>getGenericTypeClass(Object bean, String propName)Diese Methode läd den generischen Typ eines Attributesstatic String[]getIncomingAttributes(Class<? extends ITransferable> entityClass)Diese Methode liefert nur die Attribute, welche mit der AnnotationTransferAttributeversehen sind und incoming auftrue(Defaultwert) gesetzt ist.static MatchergetMatcher(String key)Überprüft ob der Schlüssel auf .id oder .ids endetstatic ArrayList<BeanAttribute>getOutgoingAttributes(Class<? extends ITransferable> entityClass)Diese Methode liefert nur die Attribute, welche mit der AnnotationTransferAttributeversehen sindstatic Map<String,Object>getProp(Serializable bean, List<BeanAttribute> props)static booleanmatchesPropertyCollectionTypeParameter(Object value, Object bean, String propName, Class<?> targetType)Diese Methode prüft ob ein Klassenattribut eine Liste ist und ob der generische Type dieser Liste einem übergebenem Typen entsprichtstatic voidsetProp(UserContext uc, Object bean, String propName, Object propValue)Setzt folgendes voraus, wenn es sich bei den zu setzenden Properties um eine oder mehrere Entitäten-IDs handelt: ein passendes DAO mit dem Namen "[großgeschriebener Property- oder Collection-Parametertyp]_DAO" existiert als statisches Feld in DaoProviderpropNamemuss dem Muster "[Name einfache Eigenschaft].id" oder "[Name Collection-basierte Eigenschaft].ids" entsprechen, z.B.static ArrayList<ValueDescriptor>vdList(Serializable bean, String[] propNames)Baut eine Liste vonValueDescriptoren.
-
-
-
Field Detail
-
ATTR_IDS
public static final String ATTR_IDS
- See Also:
- Constant Field Values
-
-
Method Detail
-
setProp
public static void setProp(UserContext uc, Object bean, String propName, Object propValue) throws ValidationException, PropertyException
Setzt folgendes voraus, wenn es sich bei den zu setzenden Properties um eine oder mehrere Entitäten-IDs handelt:- ein passendes DAO mit dem Namen "[großgeschriebener Property- oder Collection-Parametertyp]_DAO" existiert als statisches Feld in DaoProvider
propNamemuss dem Muster "[Name einfache Eigenschaft].id" oder "[Name Collection-basierte Eigenschaft].ids" entsprechen, z.B. Benutzergruppen eines Benutzers: "benutzerGruppen_ids"propValuemuss die ID-Informationen enthalten (eine ID oder mehrere IDs, durch Komma getrennt)- ist die zu setzende Property Collection-basiert muss der Typ parametrisiert sein (
Set<BenutzerGruppe>stattSet)
- Parameters:
uc- TODObean- Zielobjekt (i.A. eine Entitäteninstanz)propName- Name der zu setzenden EigenschaftpropValue- neuer Wert der zu setzenden Eigenschaft- Throws:
ValidationException- on validation errorsPropertyException- on property errors
-
getMatcher
public static Matcher getMatcher(String key)
Überprüft ob der Schlüssel auf .id oder .ids endet- Parameters:
key- Schlüssel bzw. Eingenschaftsname der Bean- Returns:
- Match-Ergebnis
-
getProp
public static Map<String,Object> getProp(Serializable bean, List<BeanAttribute> props) throws PropertyException
- Throws:
PropertyException
-
vdList
public static ArrayList<ValueDescriptor> vdList(Serializable bean, String[] propNames) throws PropertyException
Baut eine Liste vonValueDescriptoren. Die Bean wird anhand der übergebenen Eigenschaftsnamen durchlaufen und als ValueDescriptor (enthält PropertyName, PropertyValue und Typ in diesem Fall nur String) der Liste hinzugefügt.- Parameters:
bean- die Instanziiert werden sollpropNames- String[] mit Property-Namen, die ausgewertet sollen werden- Returns:
- Liste von
ValueDescriptors. - Throws:
PropertyException- wenn ein Fehler in der Verarbeitung des Auslesens auftritt
-
findModelClass
public static <E extends ITransferable> Class<E> findModelClass(Object bean, String entityPropName) throws PropertyException
Liefert die konkrete Klasse, welche die gefunden getter-Methode als Rückgabewert hat.- Parameters:
bean- Objekt (Entität)entityPropName- Eingenschaft der Eintität- Returns:
- Rückgabetyp der getter-Methode aus der Bean
- Throws:
PropertyException- on property errors
-
getEntity
public static ITransferableEntity getEntity(UserContext uc, String entityName, String id)
Generisches Auslesen der Entität anhand der ID und dem Namen der Entität.- Parameters:
uc- Wrapper fürEntityManagerund andere ZusatzinformationenentityName- Name der Entitätid- ID- Returns:
- Entitätsobjekt anhand der übergebenen ID und des Entitätsnamen auslesen
-
getGenericClassFromList
public static Class<?> getGenericClassFromList(Object bean, String propName) throws PatternNotFoundException, ClassNotFoundException, SecurityException, NoSuchMethodException
-
getCollectionObject
public static Object getCollectionObject(List<Object> entList, Class<?> cl) throws IsNotAssignableException
- Throws:
IsNotAssignableException
-
getOutgoingAttributes
public static ArrayList<BeanAttribute> getOutgoingAttributes(Class<? extends ITransferable> entityClass)
Diese Methode liefert nur die Attribute, welche mit der AnnotationTransferAttributeversehen sind- Parameters:
entityClass- class of the entity- Returns:
- Liste von Attribut-Werten zu der aktuellen Entität
-
getIncomingAttributes
public static String[] getIncomingAttributes(Class<? extends ITransferable> entityClass)
Diese Methode liefert nur die Attribute, welche mit der AnnotationTransferAttributeversehen sind und incoming auftrue(Defaultwert) gesetzt ist. Das Annotation-Feld TransferAttribute#incoming() liefert hierbei den Wert ob dieses Feld vom Client empfangen werden soll. Felder vom TypITransferableEntityoderCollectionmit GenericTypITransferableEntitywerden hier gesondert behandelt, da hier die Notation "attr".id bzw "attr.ids" vorgeschrieben ist.- Parameters:
entityClass- class of the entity- Returns:
- Liste von Attribut-Werten zu der aktuellen Entität
-
matchesPropertyCollectionTypeParameter
public static boolean matchesPropertyCollectionTypeParameter(Object value, Object bean, String propName, Class<?> targetType)
Diese Methode prüft ob ein Klassenattribut eine Liste ist und ob der generische Type dieser Liste einem übergebenem Typen entspricht- Parameters:
value- Objekt das Klassenattribut, dessen Typ aufCollectiongeprüft wirdbean- die Klasseninstanz deren Attribut (value) geprüft werden sollpropName- Name des zu überprüfenden KlassenattributestargetType- der Zieltyp auf den geprüft werden soll ob die Collection von diesem generischen Typ ist- Returns:
truewenn das Attribut eine Collection ist und vom entsprechenden Zieltyp, ansonstenfalse
-
getGenericTypeClass
public static Class<?> getGenericTypeClass(Object bean, String propName)
Diese Methode läd den generischen Typ eines Attributes- Parameters:
bean- Objekt mit einem Attribut von dem der generische Typ ermittelt werden soll.propName- der Attributname der das Attribtut beschreibt dessen generischer Typ ermittelt werden soll- Returns:
- Klasse die den generischen Typ beschreibt oder
nullwenn kein Typ ermittelt werden konnte
-
correctlyTypedDescriptor
public static ValueDescriptor correctlyTypedDescriptor(Object bean, String propName, Object propValue) throws PropertyException, ValidationException
- Throws:
PropertyExceptionValidationException
-
-