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; } }