Returns all field names (sorted) provided so far by #getFieldOrder @param force set if results are required immediately @return null if not yet able to provide fields, and force is false. @throws Error if force is true and field order data not yet specified
(boolean force)
| 1125 | and can't be generated automatically. |
| 1126 | **/ |
| 1127 | protected List<Field> getFields(boolean force) { |
| 1128 | List<Field> flist = new ArrayList<>(getFieldList()); |
| 1129 | Set<String> names = new HashSet<>(); |
| 1130 | for (Field f : flist) { |
| 1131 | names.add(f.getName()); |
| 1132 | } |
| 1133 | |
| 1134 | List<String> fieldOrder = fieldOrder(); |
| 1135 | if (fieldOrder.size() != flist.size() && flist.size() > 1) { |
| 1136 | if (force) { |
| 1137 | throw new Error("Structure.getFieldOrder() on " + getClass() |
| 1138 | + (fieldOrder.size() < flist.size() |
| 1139 | ? " does not provide enough" |
| 1140 | : " provides too many") |
| 1141 | + " names [" + fieldOrder.size() |
| 1142 | + "] (" |
| 1143 | + sort(fieldOrder) |
| 1144 | + ") to match declared fields [" + flist.size() |
| 1145 | + "] (" |
| 1146 | + sort(names) |
| 1147 | + ")"); |
| 1148 | } |
| 1149 | return null; |
| 1150 | } |
| 1151 | |
| 1152 | Set<String> orderedNames = new HashSet<>(fieldOrder); |
| 1153 | if (!orderedNames.equals(names)) { |
| 1154 | throw new Error("Structure.getFieldOrder() on " + getClass() |
| 1155 | + " returns names (" |
| 1156 | + sort(fieldOrder) |
| 1157 | + ") which do not match declared field names (" |
| 1158 | + sort(names) + ")"); |
| 1159 | } |
| 1160 | |
| 1161 | sortFields(flist, fieldOrder); |
| 1162 | return flist; |
| 1163 | } |
| 1164 | |
| 1165 | /** Calculate the amount of native memory required for this structure. |
| 1166 | * May return {@link #CALCULATE_SIZE} if the size can not yet be |
no test coverage detected