package com.db4o.samples;

import com.db4o.*;
import com.db4o.lib.Logger;
import java.lang.reflect.*;

public class S12_Activate
{
	public static void main(String[] args)
	{
		ObjectContainer db = Db4o.openFile("samples.yap");
		Logger.log("*** S12 Retrieving first Company, no members");

		
		Company company = (Company)db.get(new Company()).next();
		// To demonstrate activation, a "naked" company is retrieved.
		
		
		Logger.log(db, company);
		
		if(company.employees != null && company.employees[1] != null){ // just to make examples rerun safe
			Logger.log("Activation state of company.employees[0]:");
			Logger.log(db.isActive(company.employees[1]));
			// The principle of retrieving objects by QBE: 
			// - All simple members are set
			// - Persistent members are there, but "deactivated"
		
		
			db.activate(company.employees[1]);
			// Deactivated persistent objects can be activated.
		
		
			Logger.log("After activating company.employees[0]:");
			Logger.log(db,company);
			if(company.employees[1].addresses != null && company.employees[1].addresses[0] != null){ // just to make examples rerun safe
					
		
				db.activate(company.employees[1].addresses[0]);
				// Members of newly activated objects can be activated in turn.
				// With this method, the entire persistent graph can be traversed.

		
				Logger.log("After activating company.employees[0].addresses[0]:");
				Logger.log(db, company);
			}
		}
		db.close();
	}
}
