/*
* Copyright (c) 2013 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.server.upgrade.util.callbacks;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.net.URI;
import java.util.Iterator;
import java.util.List;
import org.junit.Assert;
import com.emc.storageos.db.client.DbClient;
import com.emc.storageos.db.server.upgrade.util.BaseTestCustomMigrationCallback;
import com.emc.storageos.db.server.upgrade.util.models.updated.Resource6;
import com.emc.storageos.db.server.upgrade.util.models.updated.Resource3;
/**
* initialize flags on Resource 3 and its subclasses
*/
public class Resource3FlagsInitializer extends BaseTestCustomMigrationCallback {
private static final Logger log = LoggerFactory.getLogger(Resource3FlagsInitializer.class);
public static final Long FLAG = 2L;
@Override
public void process() {
DbClient dbClient = getDbClient();
// Check Resource3
List<URI> res3Keys = dbClient.queryByType(Resource3.class, false);
Iterator<Resource3> res3Objs =
dbClient.queryIterativeObjects(Resource3.class, res3Keys);
while (res3Objs.hasNext()) {
Resource3 res3 = res3Objs.next();
log.info("Check Resource3 flag: " + res3.getId() + "," + res3.getExtraFlags());
if (res3.getExtraFlags() == null) {
res3.setExtraFlags(FLAG);
dbClient.persistObject(res3);
}
}
// Check Resource6
List<URI> res6Keys = dbClient.queryByType(Resource6.class, false);
Iterator<Resource6> res6Objs =
dbClient.queryIterativeObjects(Resource6.class, res6Keys);
while (res6Objs.hasNext()) {
Resource6 res6 = res6Objs.next();
log.info("Check Resource6 flag: " + res6.getId() + "," + res6.getExtraFlags());
if (res6.getExtraFlags() == null) {
res6.setExtraFlags(FLAG);
dbClient.persistObject(res6);
}
}
}
@Override
public void verify() {
DbClient dbClient = getDbClient();
// Check Resource3
List<URI> res3Keys = dbClient.queryByType(Resource3.class, false);
Iterator<Resource3> res3Objs =
dbClient.queryIterativeObjects(Resource3.class, res3Keys);
Assert.assertTrue(res3Objs.hasNext());
while (res3Objs.hasNext()) {
Assert.assertEquals(FLAG, res3Objs.next().getExtraFlags());
}
// Check Resource6
List<URI> res6Keys = dbClient.queryByType(Resource6.class, false);
Iterator<Resource6> res6Objs =
dbClient.queryIterativeObjects(Resource6.class, res6Keys);
Assert.assertTrue(res6Objs.hasNext());
while (res6Objs.hasNext()) {
Assert.assertEquals(FLAG, res6Objs.next().getExtraFlags());
}
}
}