package com.example.myproject;

import com.google.appengine.api.blobstore.BlobKey;
import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.EntityNotFoundException;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;

public class BlobMigrationRecord {
	
	/* ==============================
	 * Python get_new_blob_key() メソッド の Java版
	 * Python get_new_blob_key() method for Java
	 * 
	 * <<補足>>
	 *   [Google App Engine]でBlobを利用していると、
	 *   [M/S]から[HRD]へDatastore移行した際にBlobkeyが変更される
	 *   この関数では旧Blobkeyから新Blobkeyへ変換を行う
	 * 
	 * <Input>  oldBlobKey  旧Blobkey
	 * <Output>             新Blobkey
	 * ============================== */
	public static String getNewBlobKey(String oldBlobKey) {
		String newBlobKey = "";
		try {
			DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
			Key key = KeyFactory.createKey("__BlobMigration__", oldBlobKey);
			Entity blobkey = datastore.get(key);
			BlobKey blobKey = (BlobKey) blobkey.getProperty("new_blob_key");
			newBlobKey = blobKey.getKeyString();
		} catch (EntityNotFoundException e) {
			newBlobKey = oldBlobKey;
		}
		return newBlobKey;
	}

}