package authoringtool.persistence.changelog.java; import authoringtool.common.helpers.ValidationHelper; import authoringtool.persistence.encryption.StringEncryptor; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import persistence.dao.EntityManagerHolder; import javax.persistence.EntityManager; import javax.persistence.Query; import java.lang.reflect.Field; import java.util.List; public class EncryptionHelper { private static final Log log = LogFactory.getLog(StringEncryptor.class); public static final String UUID = "uuid"; public static void executeEncryption(String selectQuery, String updateQuery, String tupleName) { try { EntityManager em = EntityManagerHolder.getCurrentEntityManager(); @SuppressWarnings("unchecked") List results = em.createNativeQuery(selectQuery, tupleName).getResultList(); Query update = em.createNativeQuery(updateQuery); if (!ValidationHelper.isNullOrEmpty(results)) { for (T t : results) { //Setting query params by reflexively-obtained tuple field values for (Field field : t.getClass().getDeclaredFields()) { field.setAccessible(true); String value = UUID.equals(field.getName()) ? (String) field.get(t) : StringEncryptor.getInstance().encrypt((String) field.get(t)); update.setParameter(field.getName(), value); } update.executeUpdate(); } } } catch (IllegalAccessException e) { log.error(e); e.printStackTrace(); } } }