/* * Copyright (c) 2013 EMC Corporation * All Rights Reserved */ package com.emc.storageos.db.server.upgrade.util.callbacks; import com.emc.storageos.db.client.DbClient; import com.emc.storageos.db.client.URIUtil; import com.emc.storageos.db.server.upgrade.util.BaseTestCustomMigrationCallback; import com.emc.storageos.db.server.upgrade.util.models.updated.Resource3; import com.emc.storageos.db.server.upgrade.util.models.updated.Resource4; import java.net.URI; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.junit.Assert; /** * custom callback to initialize res4 field value on Resource 3 based on flags initialized in other callback */ public class Resource3Resource4RefInitializer extends BaseTestCustomMigrationCallback { List<URI> expected = new ArrayList<URI>(); @Override public void process() { DbClient dbClient = getDbClient(); List<URI> res3Keys = dbClient.queryByType(Resource3.class, false); Iterator<Resource3> res3Objs = dbClient.queryIterativeObjects(Resource3.class, res3Keys); while (res3Objs.hasNext()) { Resource3 res3 = res3Objs.next(); if (res3.getExtraFlags() > 0L) { Resource4 res4 = new Resource4(); res4.setId(URIUtil.createId(Resource4.class)); res4.setLabel("res4 for " + res3.getLabel()); dbClient.createObject(res4); res3.setRes4(res4.getId()); dbClient.persistObject(res3); expected.add(res4.getId()); } } } @Override public void verify() { DbClient dbClient = getDbClient(); List<URI> res3Keys = dbClient.queryByType(Resource3.class, false); Iterator<Resource3> res3Objs = dbClient.queryIterativeObjects(Resource3.class, res3Keys); Assert.assertTrue(res3Objs.hasNext()); while (res3Objs.hasNext()) { Resource3 res3 = res3Objs.next(); Assert.assertNotNull(res3.getRes4()); Resource4 res4 = dbClient.queryObject(Resource4.class, res3.getRes4()); Assert.assertNotNull(res4); Assert.assertTrue(expected.contains(res4.getId())); } } }