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 ValueDescriptor
correctlyTypedDescriptor(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 Object
getCollectionObject(List<Object> entList, Class<?> cl)
static ITransferableEntity
getEntity(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 AnnotationTransferAttribute
versehen sind und incoming auftrue
(Defaultwert) gesetzt ist.static Matcher
getMatcher(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 AnnotationTransferAttribute
versehen sindstatic Map<String,Object>
getProp(Serializable bean, List<BeanAttribute> props)
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 entsprichtstatic void
setProp(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 DaoProviderpropName
muss 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 vonValueDescriptor
en.
-
-
-
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
propName
muss dem Muster "[Name einfache Eigenschaft].id" oder "[Name Collection-basierte Eigenschaft].ids" entsprechen, z.B. Benutzergruppen eines Benutzers: "benutzerGruppen_ids"propValue
muss 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 vonValueDescriptor
en. 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
ValueDescriptor
s. - 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ürEntityManager
und 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 AnnotationTransferAttribute
versehen 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 AnnotationTransferAttribute
versehen 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 TypITransferableEntity
oderCollection
mit GenericTypITransferableEntity
werden 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 aufCollection
geprü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:
true
wenn 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
null
wenn kein Typ ermittelt werden konnte
-
correctlyTypedDescriptor
public static ValueDescriptor correctlyTypedDescriptor(Object bean, String propName, Object propValue) throws PropertyException, ValidationException
- Throws:
PropertyException
ValidationException
-
-