All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.avaje.ebeaninternal.server.cache.CachedBeanDataUpdate Maven / Gradle / Ivy

The newest version!
package com.avaje.ebeaninternal.server.cache;

import java.util.HashSet;
import java.util.Set;

import com.avaje.ebeaninternal.server.core.PersistRequestBean;
import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
import com.avaje.ebeaninternal.server.deploy.BeanProperty;

public class CachedBeanDataUpdate {

    public static CachedBeanData update(BeanDescriptor desc, CachedBeanData data, PersistRequestBean updateRequest){

    	
    	Set loadedProperties = data.getLoadedProperties();
    	Object[] copyOfData = data.copyData();
    	
    	Object updateBean = updateRequest.getBean();
    	Set updatedProperties = updateRequest.getUpdatedProperties();
    	
    	int naturalKeyUpdate = -1;
    	boolean mergeProperties = false;
    	BeanProperty[] props = desc.propertiesNonMany();
    	for (int i = 0; i < props.length; i++) {
	        if (updatedProperties.contains(props[i].getName())){
	        	if (props[i].isNaturalKey()){
	        		naturalKeyUpdate = i;
	        	}
	        	copyOfData[i] = props[i].getCacheDataValue(updateBean);
	        	if (loadedProperties != null && !mergeProperties && !loadedProperties.contains(props[i].getName())){
	        		mergeProperties = true;
	        	}
	        }
        }
    	
    	if (mergeProperties){
    		HashSet mergeProps = new HashSet();
    		mergeProps.addAll(loadedProperties);
    		mergeProps.addAll(updatedProperties);
    		loadedProperties = mergeProps;
    	}
    	
    	return new CachedBeanData(null, loadedProperties, copyOfData, naturalKeyUpdate);
        
    }
    
    

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy