Миграция в HRD - Как конвертировать строковые ключи в новое приложение - PullRequest
2 голосов
/ 18 марта 2012

Я начал мигрировать из нашего приложения M / S в HRD.Интересно, можете ли вы порекомендовать мне, как преобразовать старые строковые ключи в новые.

Я знаю, что строковые ключи содержат имя приложения, хотя я не уверен, есть ли другие детали, которые мне нужно принятьзабота о.Кроме того, я не смог найти ни одного сообщения на форуме, содержащего пример кода Java для преобразования «ключей со строковым кодированием», что выглядит довольно странно (об этом говорят только форумы по Python).

Буду признателен за любую помощь вэто дело.

Кстати, я подумал запустить следующее, хотя, боюсь, это не сработает или не охватит все аспекты:

    private static String convertKey(String encodedKey) {
    Key key = KeyFactory.stringToKey(encodedKey);       
    Key newKey = KeyFactory.createKey(key.getKind(), key.getId());      
    return KeyFactory.keyToString(newKey);
}

Спасибо!Uri

Ответы [ 3 ]

1 голос
/ 13 апреля 2012

С помощью следующей рекурсивной функции generateKey (Key key) можно охватить все случаи (также каскадные родители) для преобразования закодированных строковых ключей. Две другие функции являются обертками для односторонних преобразований коллекции ключей. http://www.geotrack24.com

private Key generateKey(Key key) {  
    Key parentKey = key.getParent();
    if(parentKey == null){
        return KeyFactory.createKey(key.getKind(), key.getId());  
    }else{          
        Key _newParentKey = generateKey(parentKey);         
        return KeyFactory.createKey(_newParentKey, key.getKind(), key.getId());  
    }  
}

private String convertKey(String encodedKey) {
    Key key = KeyFactory.stringToKey(encodedKey);      
    return KeyFactory.keyToString(generateKey(key));
}   

private Set<String> convertKeys(Set<String> keys){
    Set<String> newkeys = new HashSet<String>();
    for(String key: keys){
        newkeys.add(convertKey(key));
    }
    return newkeys;
}
0 голосов
/ 21 марта 2012

Приведенный выше код будет работать до тех пор, пока сущность является родительской сущностью без других родителей. Если у вас есть дочерний объект, вам также придется перенести родительский ключ.

Например:

Key parentKey = key.getParent(); 
Key newParentKey = KeyFactory.createKey(parentKey.getKind(), parentKey.getId());

Только тогда вы можете использовать этот код

Key newKey = KeyFactory.createKey(newParentKey,childKey.getKind(), childKey.getId());      

Этот пример применим только для одного родителя, если у вас несколько родителей, вам придется использовать этот код несколько раз.

0 голосов
/ 19 марта 2012

Почему вы думаете, что вам нужно конвертировать ключи?Инструмент миграции скопирует все ваши данные и в процессе заново создаст ключи, чтобы они правильно ссылались на новое приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...