package er.extensions.migration; import com.webobjects.eoaccess.EOAdaptorChannel; import com.webobjects.eoaccess.EOModel; import com.webobjects.foundation.NSMutableDictionary; import er.extensions.foundation.ERXProperties; /** * This stub exists to make memory migrations work. * * @author mschrag */ public class ERXMemoryMigrationLock implements IERXMigrationLock { private NSMutableDictionary<String, Integer> _modelVersions; public ERXMemoryMigrationLock() { _modelVersions = new NSMutableDictionary<>(); } public void setVersionNumber(EOAdaptorChannel channel, EOModel model, int versionNumber) { _modelVersions.setObjectForKey(Integer.valueOf(versionNumber), model.name()); } public boolean tryLock(EOAdaptorChannel channel, EOModel model, String lockOwnerName) { return true; } public void unlock(EOAdaptorChannel channel, EOModel model) { } public int versionNumber(EOAdaptorChannel channel, EOModel model) { Integer versionInteger = _modelVersions.objectForKey(model.name()); int version; if (versionInteger == null) { version = initialVersionForModel(model); } else { version = Math.max(versionInteger.intValue(), initialVersionForModel(model)); } return version; } protected int initialVersionForModel(EOModel model) { String modelName = model.name(); int initialVersion = ERXProperties.intForKeyWithDefault(modelName + ".InitialMigrationVersion", -1); return initialVersion; } }