protected void addDatabase( DatabaseMeta[] db ) { if ( db != null ) { for ( DatabaseMeta meta : db ) { addDatabase( meta ); } } } }
protected void validateLoadedMeta( List<String> attributes, Map<String, FieldLoadSaveValidator<?>> validatorMap, T metaSaved, T metaLoaded ) { super.validateLoadedMeta( attributes, validatorMap, metaSaved, metaLoaded ); boolean checkDatabases = false; for ( FieldLoadSaveValidator<?> validator : validatorMap.values() ) { if ( validator instanceof DatabaseMetaLoadSaveValidator ) { checkDatabases = true; } } if ( checkDatabases ) { try { validateJobEntryUsesDatabaseMeta( metaSaved ); } catch ( Exception e ) { throw new RuntimeException( e ); } } }
public LoadSaveBase( Class<T> clazz, List<String> commonAttributes, List<String> xmlAttributes, List<String> repoAttributes, Map<String, String> getterMap, Map<String, String> setterMap, Map<String, FieldLoadSaveValidator<?>> fieldLoadSaveValidatorAttributeMap, Map<String, FieldLoadSaveValidator<?>> fieldLoadSaveValidatorTypeMap, InitializerInterface<T> initializer ) { this.clazz = clazz; this.xmlAttributes = concat( commonAttributes, xmlAttributes ); this.repoAttributes = concat( commonAttributes, repoAttributes ); this.manipulator = new JavaBeanManipulator<T>( clazz, concat( this.xmlAttributes, repoAttributes ), getterMap, setterMap ); this.initializer = initializer; Map<Getter<?>, FieldLoadSaveValidator<?>> fieldLoadSaveValidatorMethodMap = new HashMap<Getter<?>, FieldLoadSaveValidator<?>>( fieldLoadSaveValidatorAttributeMap.size() ); for ( Map.Entry<String, FieldLoadSaveValidator<?>> entry : fieldLoadSaveValidatorAttributeMap.entrySet() ) { fieldLoadSaveValidatorMethodMap.put( manipulator.getGetter( entry.getKey() ), entry.getValue() ); } this.fieldLoadSaveValidatorFactory = new DefaultFieldLoadSaveValidatorFactory( fieldLoadSaveValidatorMethodMap, fieldLoadSaveValidatorTypeMap ); databases = new ArrayList<DatabaseMeta>(); }
@SuppressWarnings( { "unchecked" } ) protected Map<String, FieldLoadSaveValidator<?>> createValidatorMapAndInvokeSetters( List<String> attributes, T metaToSave ) { Map<String, FieldLoadSaveValidator<?>> validatorMap = new HashMap<String, FieldLoadSaveValidator<?>>(); databases.clear(); for ( String attribute : attributes ) { Getter<?> getter = manipulator.getGetter( attribute ); @SuppressWarnings( "rawtypes" ) Setter setter = manipulator.getSetter( attribute ); FieldLoadSaveValidator<?> validator = fieldLoadSaveValidatorFactory.createValidator( getter ); try { Object testValue = validator.getTestObject(); //no-inspection unchecked setter.set( metaToSave, testValue ); if ( testValue instanceof DatabaseMeta ) { addDatabase( (DatabaseMeta) testValue ); } else if ( testValue instanceof DatabaseMeta[] ) { addDatabase( (DatabaseMeta[]) testValue ); } } catch ( Exception e ) { throw new RuntimeException( "Unable to invoke setter for " + attribute, e ); } validatorMap.put( attribute, validator ); } return validatorMap; }