Example usage for org.apache.commons.lang3.reflect FieldUtils getAllFieldsList

List of usage examples for org.apache.commons.lang3.reflect FieldUtils getAllFieldsList

Introduction

In this page you can find the example usage for org.apache.commons.lang3.reflect FieldUtils getAllFieldsList.

Prototype

public static List<Field> getAllFieldsList(final Class<?> cls) 

Source Link

Document

Gets all fields of the given class and its parents (if any).

Usage

From source file:org.objectpocket.viewer.Viewer.java

private void updateTable() {
    String selectedType = ((DefaultMutableTreeNode) classTree.getSelectionPath().getLastPathComponent())
            .toString();//from  w w w .  j  av a2 s  .c o m
    String selectedObjectPocket = ((DefaultMutableTreeNode) classTree.getSelectionPath()
            .getPathComponent(classTree.getSelectionPath().getPathCount() - 2)).toString();
    ObjectPocketImpl objectPocket = null;
    for (ObjectPocketImpl objectPocketImpl : objectPocketList) {
        if (objectPocketImpl.getSource().equals(selectedObjectPocket)) {
            objectPocket = objectPocketImpl;
        }
    }
    if (objectPocket != null) {
        Map<String, Object> objectMap = objectPocket.getMapForType(selectedType);

        try {

            Class<?> clazz = Class.forName(selectedType);
            List<Field> allFields = FieldUtils.getAllFieldsList(clazz);
            List<Field> fields = new ArrayList<>();
            // filter fields
            for (Field field : allFields) {
                if (!Modifier.isTransient(field.getModifiers()) && !field.getName().equals("id")) {
                    fields.add(field);
                }
            }
            String[] columnNames = new String[fields.size() + 2];
            columnNames[0] = "";
            columnNames[1] = "id";
            int index = 2;
            for (Field f : fields) {
                columnNames[index] = f.getName() + "(" + f.getType().getSimpleName() + ")";
                index++;
            }

            // filter objects
            Map<String, Object> filteredObjects = filterObjects(objectMap, fields);

            String[][] rowData = new String[filteredObjects.size()][columnNames.length];
            index = 0;
            statusLabel.setText("object count: " + filteredObjects.size());
            for (String key : filteredObjects.keySet()) {
                rowData[index][0] = "" + (index + 1);
                rowData[index][1] = key;
                for (int i = 0; i < fields.size(); i++) {
                    Field f = fields.get(i);
                    f.setAccessible(true);
                    try {
                        Object object = f.get(filteredObjects.get(key));
                        if (object != null) {
                            rowData[index][2 + i] = object.toString();
                        } else {
                            rowData[index][2 + i] = "null";
                        }
                    } catch (IllegalArgumentException | IllegalAccessException e) {
                        e.printStackTrace();
                    }
                }
                index++;
            }
            DefaultTableModel tableModel = new DefaultTableModel(rowData, columnNames);
            objectTable.setModel(tableModel);
            viewerFrame.revalidate();

        } catch (ClassNotFoundException e) {
            Logger.getAnonymousLogger().warning("Could not load class for type. " + selectedType);
            e.printStackTrace();

            // --- fallback
            String[] columnNames = { "", "id", "data" };
            String[][] rowData = new String[objectMap.size()][3];
            int index = 0;
            for (String key : objectMap.keySet()) {
                rowData[index][0] = "" + (index + 1);
                rowData[index][1] = key;
                rowData[index][2] = objectMap.get(key).toString();
                index++;
            }
            DefaultTableModel tableModel = new DefaultTableModel(rowData, columnNames);
            objectTable.setModel(tableModel);
            viewerFrame.revalidate();
        }
    }
    for (int i = 0; i < objectTable.getColumnModel().getColumnCount(); i++) {
        if (i == 0) {
            objectTable.getColumnModel().getColumn(i).setPreferredWidth(50);
        } else {
            objectTable.getColumnModel().getColumn(i).setPreferredWidth(200);
        }
    }
}