/** * Find parent entry. * * @param entries the entries * @param key the key * @return the step injection meta entry */ protected StepInjectionMetaEntry findParentEntry( List<StepInjectionMetaEntry> entries, String key) { for (StepInjectionMetaEntry look : entries) { if (look.getKey().equals(key)) return look; StepInjectionMetaEntry check = findParentEntry(look.getDetails(), key); if (check != null) return check; } return null; }
/** Describe the metadata attributes that can be injected into this step metadata object. */ public List<StepInjectionMetaEntry> getStepInjectionMetadataEntries(Class<?> PKG) { List<StepInjectionMetaEntry> entries = new ArrayList<StepInjectionMetaEntry>(); for (KettleAttributeInterface attr : attributes) { if (attr.getParent() == null) { entries.add(createEntry(attr, PKG)); } else { StepInjectionMetaEntry entry = createEntry(attr, PKG); StepInjectionMetaEntry parentEntry = findParentEntry(entries, attr.getParent().getKey()); if (parentEntry == null) { throw new RuntimeException( "An error was detected in the step attributes' definition: the parent was not found for attribute " + attr); } parentEntry.getDetails().add(entry); } } return entries; }