Infos zu Attribute in einer Klasse speichern

beta20

Top Contributor
Hallo zusammen,

ich möchte gerne für jedes Attribut in meiner Klasse weitere Infos speichern, sodass ich später darauf basierend Listen erstellen kann, die ich dann in der WebGUI verwenden kann. (z.B. alle Felder von der Klasse Kunde, inkl. Business Namen)

Das wären Infos wie:
  • fieldName; -> "CUSTOMER_NUMBER"
  • languageName -> "Kundennummer" (kommt später von einer message.property)
  • uniqueFieldName; -> "CUSTOMER_CUSTOMER_NUMBER"
  • ruleRelevant; -> true
  • List<EnumOpertor> operatorList; -> "NOT_EQUAL, CONTAINS"
  • String valueType; -> "TEXT"
Nun aber die Frage, wie mache ich das am Besten?
Ich habe nun in meiner Klasse "Customer" ein Enum angelegt:

Java:
public class Customer {

.....

public enum EntityField {

ACADEMIC_TITLE("ACADEMIC_TITLE", "Akademischer Titel", "ACADEMIC_TITLE", ValueType.TEXT, true), //

       private String fieldName;
        private Object fieldValue;
        private String languageName;

 
/////////////////////////

         private String uniqueFieldName;
        private boolean ruleRelevant;
        private List<String> operatorList;
        private String valueType;

        private EntityField(String fieldName, Object fieldValue, String languageName, String uniqueFieldName, String valueType,
               boolean ruleRelevant, List<String> operatorList) {
            this.fieldName = fieldName;
            this.fieldValue = fieldValue;
            this.languageName = languageName;
            this.uniqueFieldName = uniqueFieldName;
            this.ruleRelevant = ruleRelevant;
            this.operatorList = operatorList;
            this.valueType = valueType;
        }
}
}

Die Frage ist auch, wie erstelle ich in einer Zeile eine String-Liste und hänge dann mehrere Strings ein?

Ist das mit dem Enum so korrekt?
Ich frage auch in anderen Klassen direkt diese Felder ab:
if(Customer.EntityField.CUSTOMER_NAME.equals(....)

_____________
Prinzipiell möchte ich ebenfalls eine Lösung finden, mit welcher ich folgende (derzeit aufwändigen) Abfragen pro Feld vereinfachen kann.

1) Prüfen, ob die Bedingung stimmt.
-> Hier prüfen ich, ob der Wert von ObjectForCheck und dem Wert von RuleConditionComponent stimmt.
-> ObjectForCheck enthält eine Referenz auf Customer, welches hier geprüft wird.
-> RuleConditionComponent enthält ein Feld: value (oder auch valueDate, wenn es ein Date ist)
-> Prinzipiell möchte ich nicht dauernd die gleiche Abfrage für jedes Feld haben, sondern bestmöglich eine Schleife, in der ich dann eben die Felder prüfe.
- Die Idee ist, eine Schleife über die Enum Liste zu machen.
- Der Getter des jeweiligen Felds müsste ich dann aber entsprechend bekommen (bspw.: objectForCheck.getCustomer().getAcademicTitle())

Java:
    public static boolean customerCondition(ObjectForCheck objectForCheck, RuleConditionComponent ruleConditionComponent) {

        LOGGER.info("START customerCondition");

        if (objectForCheck.getCustomer() == null)
            return false;

        ///////////////////
        // ACADEMIC_TITLE
        ///////////////////
        if (ruleConditionComponent.getFieldName()
                .equals(Customer.ENTITY_NAME_SPACE + Customer.EntityField.ACADEMIC_TITLE.getFieldName())) {

            if (objectForCheck.getCustomer().getAcademicTitle() == null)
                return false;

            if (ruleConditionComponent.getState().equals(RuleConditionComponent.ConditionState.EQUAL.toString())) {
                if (objectForCheck.getCustomer().getAcademicTitle()
                        .equalsIgnoreCase(ruleConditionComponent.getValue())) {
                    return true;
                }
            }

            if (ruleConditionComponent.getState().equals(RuleConditionComponent.ConditionState.NOT_EQUAL.toString())) {
                if (!objectForCheck.getCustomer().getAcademicTitle()
                        .equalsIgnoreCase(ruleConditionComponent.getValue())) {
                    return true;
                }
            }

            if (ruleConditionComponent.getState().equals(RuleConditionComponent.ConditionState.CONTAINS.toString())) {
                if (objectForCheck.getCustomer().getAcademicTitle().toLowerCase()
                        .contains(ruleConditionComponent.getValue().toLowerCase())) {
                    return true;
                }
            }

            if (!ruleConditionComponent.getState()
                    .equals(RuleConditionComponent.ConditionState.NOT_CONTAINS.toString())) {
                if (!objectForCheck.getCustomer().getAcademicTitle().toLowerCase()
                        .contains(ruleConditionComponent.getValue().toLowerCase())) {
                    return true;
                }
            }
        }


Die nächste Methode, die ich derzeit für jedes Feld abfrage, liest mir den DatenTyp des Felds hinzu und gibt dann ein RuleConditionComponent Objekt zurück. Auch diese Abfrage lässt sich vereinfachen, indem ich eine Schleife über das ENUM mache und dann eben den ValueType dem RuleConditionComponent hinzufüge?

Java:
/**
     * CUSTOMER
     */
    public static Object createCustomerRuleCondition(Object object) {

        LOGGER.info("START createCustomerRuleCondition");
      
        RuleConditionComponent ruleConditionComponent = null;
        String fieldName = null;

        if (object instanceof RuleConditionComponent) {
            ruleConditionComponent = (RuleConditionComponent) object;
            if (ruleConditionComponent.getFieldName() == null)
                return null;
            else
                fieldName = ruleConditionComponent.getFieldName();
        }

        ///////////////////
        // ACADEMIC_TITLE
        ///////////////////
        if (fieldName.equals(Customer.ENTITY_NAME_SPACE + Customer.EntityField.ACADEMIC_TITLE.getFieldName())) {

            if (object instanceof RuleConditionComponent) {
                ruleConditionComponent.setValueType(RuleConditionComponent.ValueType.TEXT.toString());
                ruleConditionComponent.setValueDate(null);
                ruleConditionComponent.setValue(null);

                return ruleConditionComponent;
            }

        }

Die letzte Methode ist das Hinzufügen des Operators (Contains, Equals...).
Auch hier wäre das Auslesen aus dem Enum die einfachste Möglichkeit...?

Java:
/**
     * CUSTOMER
     */
    public static List<ObjectForSearchList> createCustomerOperator(Object object, String languageCode) {

        List<ObjectForSearchList> list = new ArrayList<ObjectForSearchList>();

        if (object == null)
            return null;

        RuleConditionComponent ruleConditionComponent = null;
        String fieldName = null;

        if (object instanceof RuleConditionComponent) {
            ruleConditionComponent = (RuleConditionComponent) object;
            if (ruleConditionComponent.getFieldName() == null)
                return null;
            else
                fieldName = ruleConditionComponent.getFieldName();
        }

        ///////////////////
        // ACADEMIC_TITLE
        ///////////////////
        if (fieldName.equals(Customer.ENTITY_NAME_SPACE + Customer.EntityField.ACADEMIC_TITLE.getFieldName())) {

            if (object instanceof RuleConditionComponent) {
                list.add(new ObjectForSearchList("Enthält", RuleConditionComponent.ConditionState.CONTAINS.toString()));
                list.add(new ObjectForSearchList("Enthält nicht",
                        RuleConditionComponent.ConditionState.NOT_CONTAINS.toString()));

                list.add(new ObjectForSearchList("Gleich", RuleConditionComponent.ConditionState.EQUAL.toString()));
                list.add(new ObjectForSearchList("Ist nicht gleich",
                        RuleConditionComponent.ConditionState.NOT_EQUAL.toString()));
                return list;
            }
        }


Am Ende soll sowas herauskommen:
-> Sobald man ein Feld wählt, wird die Liste von Operatoren aktualisiert, ebenfalls den Feldwert.
-> Feldwert ist i.d.R. NULL, kann aber zB bei einer Auswahl des Geschlechts vorbelegt sein (HERR, FRAU)
2019-08-13 09_44_40-testing123 – Agent.png

Hat jemand Tipps? Sorry, falls es zu viel Text ist :)
Danke für die Hilfe
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
Ich bin mir ehrlich gesagt noch nicht sicher, was du vor hast...


ich möchte gerne für jedes Attribut in meiner Klasse weitere Infos speichern, sodass ich später darauf basierend Listen erstellen kann, die ich dann in der WebGUI verwenden kann. (z.B. alle Felder von der Klasse Kunde, inkl. Business Namen)

Das wären Infos wie:
  • fieldName; -> "CUSTOMER_NUMBER"
  • languageName -> "Kundennummer" (kommt später von einer message.property)
  • uniqueFieldName; -> "CUSTOMER_CUSTOMER_NUMBER"
  • ruleRelevant; -> true
  • List<EnumOpertor> operatorList; -> "NOT_EQUAL, CONTAINS"
  • String valueType; -> "TEXT"
Das klingt tendenziell (solange es statisch erst) erstmal nach einfach nur Annotierten Attributen.
Wobei sich sowas wie fieldName und uniqueFieldName aus dem Namen des Felds und der Klasse ergibt, das ist auch ohne extra Annotation umsetzbar.
Ich habe nun in meiner Klasse "Customer" ein Enum angelegt:

Die Frage ist auch, wie erstelle ich in einer Zeile eine String-Liste und hänge dann mehrere Strings ein?

Ist das mit dem Enum so korrekt?

Ob der Enum korrekt ist, hängt davon ab, was er machen soll. Die Felder solltest du aber alle final machen, um auf Nummer sicher zu gehen.

Liste direkt erstellen ginge zB mit List.of oder varargs.

Prinzipiell möchte ich ebenfalls eine Lösung finden, mit welcher ich folgende (derzeit aufwändigen) Abfragen pro Feld vereinfachen kann.
Dazu gab's doch schon einen Thread mit Lösungsansätzen, oder meint das jetzt was völlig anderes?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Liste von Infos von einer eigenen Annotation in Liste speichern Java Basics - Anfänger-Themen 0
W Geodaten API mit vielen zusätzlichen Infos Java Basics - Anfänger-Themen 4
K GPU infos Java Basics - Anfänger-Themen 3
S Infos aus mehreren JVMS verbinden Java Basics - Anfänger-Themen 3
N Suche Infos zu Maps - Collections Java Basics - Anfänger-Themen 4
E Infos für alle Klassen eines Projekts Java Basics - Anfänger-Themen 5
J Datei-Details /-Infos wie Kommentare, Autor lesen/schreiben Java Basics - Anfänger-Themen 2
G Byte-Array Infos speichern Java Basics - Anfänger-Themen 14
L Gezielte Infos aus Datei holen - Suche nach Position/Wort Java Basics - Anfänger-Themen 22
T Standardkonstruktor, Attribute initialisieren Java Basics - Anfänger-Themen 5
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
S Attribute zurücksetzen? Java Basics - Anfänger-Themen 2
K Sichtbarkeit protected: Attribute trotzdem aufrufbar. Java Basics - Anfänger-Themen 4
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
X Wie erreiche ich, dass ein Robot weitere Attribute hat, die nicht materialisiert sind, sondern nur über get/ set-Methoden simuliert sind? Java Basics - Anfänger-Themen 1
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
B Static Attribute in einer Klasse, wie geht das? :O Java Basics - Anfänger-Themen 19
O Attribute die Methoden zählen Java Basics - Anfänger-Themen 5
L Attribute aus Klasse in berechnungs Methode übergeben Java Basics - Anfänger-Themen 1
Gaudimagspam Attribute einfügen private Java Basics - Anfänger-Themen 3
J final attribute erben Java Basics - Anfänger-Themen 2
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
S Objekt-Attribute "variabel" gestalten Java Basics - Anfänger-Themen 10
R Attribute mehrerer Objekte ausgeben Java Basics - Anfänger-Themen 3
D Abstrakte Klasse, Konstruktorkette, Attribute setzen Java Basics - Anfänger-Themen 12
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
F Attribute bei Objektorientierter Programmierung Java Basics - Anfänger-Themen 11
C unverständlicher Code Attribute ohne Datentyp, wie geht das? Java Basics - Anfänger-Themen 8
R Zwei Attribute gleichzeitig ausgeben Java Basics - Anfänger-Themen 12
Q Zugriff auf Attribute Java Basics - Anfänger-Themen 3
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
I Abstrakte Klasse - static Attribute deklarieren Java Basics - Anfänger-Themen 14
S Zufallszahl (Statische Attribute und Methoden) Java Basics - Anfänger-Themen 10
K Public Attribute oder getter - funktioniert leider beides hier nicht Java Basics - Anfänger-Themen 5
X XML-Eintrag an Attribute erkennen Java Basics - Anfänger-Themen 2
W Erste Schritte füllen Attribute java Klasse in for Schleife und Array Java Basics - Anfänger-Themen 16
B Alle Attribute von Klasse bekommen und ändern Java Basics - Anfänger-Themen 12
R Objekt erstellen - Attribute mit mehreren Werten Java Basics - Anfänger-Themen 1
T Kann erbende Klasse Attribute der vererbenden Klasse anpassen (int -> float)? Java Basics - Anfänger-Themen 9
dat_vin OOP Hashmap und Attribute Java Basics - Anfänger-Themen 7
C OOP Array Objektverweise und Attribute Java Basics - Anfänger-Themen 5
S Klassen Zugriff auf Attribute einer zweiten Klasse, welche durch dritte gesettet wurden? Java Basics - Anfänger-Themen 2
O Unterschiedliche Attribute in Objekklasse? Java Basics - Anfänger-Themen 5
E Attribute von einem Objekt einer anderen Klasse ändern Java Basics - Anfänger-Themen 4
K Durch alle Attribute eines Objektes iterieren Java Basics - Anfänger-Themen 6
F Attribute von Feldinhalten erkennen Java Basics - Anfänger-Themen 6
A Variablen Attribute Java Basics - Anfänger-Themen 8
F konstante/variable Attribute? Java Basics - Anfänger-Themen 3
J Threads Zugriff auf Attribute Java Basics - Anfänger-Themen 16
M Wann statische Methoden/Attribute? Java Basics - Anfänger-Themen 2
ElfterDoktor Einen Objekt Attribute/Parameter geben & Auslesen Java Basics - Anfänger-Themen 4
R Zeigerfehler für Attribute Java Basics - Anfänger-Themen 11
L Vererbung Attributen der Oberklasse Attribute hinzufügen? Java Basics - Anfänger-Themen 3
S Ermitteln und Setzen der Attribute eines Objektes Java Basics - Anfänger-Themen 6
F Im Konstruktor mit Settern auf private Attribute zugreifen - oder nicht? Java Basics - Anfänger-Themen 18
P Zugriff auf Attribute einer Klasse, zu der keine Verbindung besteht Java Basics - Anfänger-Themen 11
V OOP Statische Klassen-Attribute vererben Java Basics - Anfänger-Themen 4
T Attribute eines anderen Objektes überprüfen und danach handeln Java Basics - Anfänger-Themen 7
M static Attribute und Vererbung Java Basics - Anfänger-Themen 11
S Warum sind Attribute der Klasse java.awt.Point public? Java Basics - Anfänger-Themen 3
K OOP Attribute von Klasse in die public class übertragen? Java Basics - Anfänger-Themen 7
E Fehler bei Klassenübergreifende Attribute / Konsturktoren Java Basics - Anfänger-Themen 2
P Attribute von Objekten in Vectoren überprüfen Java Basics - Anfänger-Themen 4
S Attribute darf nur Werte vom Intervall annehmen Java Basics - Anfänger-Themen 5
M Attribute Java Basics - Anfänger-Themen 8
M Attribute und Konstruktor Java Basics - Anfänger-Themen 5
V JNDI / LDAP Attribute eines Benutzers auslesen Java Basics - Anfänger-Themen 1
J Attribute not settable warum ? Java Basics - Anfänger-Themen 6
N finale Attribute in abstrakten Basisklassen Java Basics - Anfänger-Themen 6
O Wie kann man das einfach lösen? (dynamisch viele Attribute) Java Basics - Anfänger-Themen 6
Q Zugriff auf Attribute einer Unterklasse Java Basics - Anfänger-Themen 7
S OOP Attribute Java Basics - Anfänger-Themen 2
T OOP StringTokenizer, Zuweisung der einzelnen Attribute Java Basics - Anfänger-Themen 21
K Klassen Attribute sortieren Java Basics - Anfänger-Themen 10
S Ausgabe bestimmter Attribute Java Basics - Anfänger-Themen 5
B die einzelnen Attribute einzeln vergleichen Java Basics - Anfänger-Themen 10
L E-Mail Attribute IMAP ändern Java Basics - Anfänger-Themen 4
K Attribute überschreiben! Java Basics - Anfänger-Themen 2
A Stilfrage: statische Methoden und Attribute auf jeden Fall verhindern? Java Basics - Anfänger-Themen 5
dataframe Attribute aus anderen Methoden übernehmen? Java Basics - Anfänger-Themen 14
M Zugriff auf Attribute über Methoden Java Basics - Anfänger-Themen 6
A statische Attribute: Vererbung und Zugriff darauf Java Basics - Anfänger-Themen 15
H Attribute auf Einzigartigkeit prüfen Java Basics - Anfänger-Themen 6
T Was sind Attribute? Java Basics - Anfänger-Themen 9
G Methode um Attribute auszulesen Java Basics - Anfänger-Themen 5
H attribute die zusammengehören Java Basics - Anfänger-Themen 9
G Wie kann ich auf die Attribute einer anderen Klasse zugreife Java Basics - Anfänger-Themen 5
J Auslesen aller Attribute mit JDOM Java Basics - Anfänger-Themen 15
N Unterschied statische Attribute u. Methoden <-> objekt Java Basics - Anfänger-Themen 4
M Attribute werden mit den Startwerten überschrieben. Warum? Java Basics - Anfänger-Themen 12
T Failed to load Main-Class manifest attribute from U.U.jar Java Basics - Anfänger-Themen 3
P Attribute Vererben Java Basics - Anfänger-Themen 2
Z Zugriff auf Attribute nach Zuweisung einer Referenz Java Basics - Anfänger-Themen 8
D Session Attribute in JSP ausgeben???? Java Basics - Anfänger-Themen 3
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
ixChronos Letzten 4 Ziffern einer großen Zahl ausgeben Java Basics - Anfänger-Themen 3
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben