Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Hier ist ein Paradebeispiel aus dem Kern für nur allzu schlechte Programmierung. Unabhängig davon, dass zweimal derselbe Code vorhanden ist, haben wir hier ein völlig unwartbaren Code, durch den keiner mehr durchblickt und sehr fehlerträchtig ist.

PS: Wie man es richtig macht, kann man hier sehen: 

 

private void setFieldInitial(CollectableField clctfValue) {
 CollectableField cf = clctfValue;
 if (getValueListProvider() != null && cf != null) {
  CollectableFieldsProvider vlp = getValueListProvider();
  if (vlp instanceof CachingCollectableFieldsProvider) {
  vlp = ((CachingCollectableFieldsProvider)vlp).getDelegate();
  }
  if (vlp instanceof DatasourceBasedCollectableFieldsProvider) {
  try {
  if (getValueListProvider() instanceof CachingCollectableFieldsProvider) {
  cf = CollectionUtils.getSingleIfExist(((CachingCollectableFieldsProvider)getValueListProvider())
  .getCollectableFields(Collections.singletonList(IdUtils.unsafeToId(clctfValue.getValueId()))));
  } else {
  cf = CollectionUtils.getSingleIfExist(((DatasourceBasedCollectableFieldsProvider)vlp)
  .getCollectableFields(Collections.singletonList(IdUtils.unsafeToId(clctfValue.getValueId()))));
  }
  if (cf == null)
  cf = clctfValue;
  } catch (IllegalArgumentException e) {
  // ignore here. VLP has no id or value column set.
  } catch (Exception e) {
  throw new NuclosFatalException(e);
  }
}
}

 getModel().setFieldInitial(cf);
}

@Override
public void setField(CollectableField clctfValue) {
 CollectableField cf = clctfValue;
 if (getValueListProvider() != null && cf != null) {
 CollectableFieldsProvider vlp = getValueListProvider();
 if (vlp instanceof CachingCollectableFieldsProvider) {
 vlp = ((CachingCollectableFieldsProvider)vlp).getDelegate();
 }
 if (vlp instanceof DatasourceBasedCollectableFieldsProvider) {
 try {
 if (getValueListProvider() instanceof CachingCollectableFieldsProvider) {
 cf = CollectionUtils.getSingleIfExist(((CachingCollectableFieldsProvider)getValueListProvider())
 .getCollectableFields(Collections.singletonList(IdUtils.unsafeToId(clctfValue.getValueId()))));
 } else {
 cf = CollectionUtils.getSingleIfExist(((DatasourceBasedCollectableFieldsProvider)vlp)
 .getCollectableFields(Collections.singletonList(IdUtils.unsafeToId(clctfValue.getValueId()))));
 }
 if (cf == null)
 cf = clctfValue;
 } catch (IllegalArgumentException e) {
 // ignore here. VLP has no id or value column set.
 } catch (Exception e) {
 throw new NuclosFatalException(e);
 }
}
}

 super.setField(cf);
}