2016-02-17 7 views
1

Моя цель - программно перемещать активы. Я обнаружил, что AssetManager имеет метод moveAsset. Однако у меня возникают проблемы с инициализацией объекта AssetManager в моем оригинальном скрипте. Ниже приведен код, с которым я работаю. Как инициализировать ненулевой объект AssetManager?Инициализация AssetManager в Groovy Console

import javax.jcr.query.* 
import com.day.cq.dam.api.* 

def query = createSQL2Query("/content/dam/3d-renders/application-notes/wcc-migration") //CHANGE THIS 
def result = query.execute() 
def rows = result.rows 

rows.each { row -> 
    Resource res = resourceResolver.getResource(null,row.path) 
    AssetManager am = res.adaptTo(AssetManager.class) 
    am.getAsset('/content/dam/3d-renders/application-notes/wcc-migration/Q60_ILL000347_iAPP.psd') 
    println res.path + ' ' + am 
    //am.moveAsset('/content/dam/3d-renders/application-notes/wcc-migration/2015/Q3X-Color-Mark-Sensing.psd','/content/dam/3d-renders/test-folder/Q3X-Color-Mark-Sensing.psd') 

} 

def createSQL2Query(startPage) { 
    def queryManager = session.workspace.queryManager 
    def statement = "select * from [nt:base] as p where (isdescendantnode (p, '$startPage')) and p.[jcr:primaryType] = 'dam:Asset'" 
    def query = queryManager.createQuery(statement, Query.JCR_SQL2) 
    query 
} 
+0

Как насчет 'AssetManager am = resourceResolver.adaptTo (AssetManager.class)'? 'ResourceResolver' реализует' Adaptable', в котором используется метод 'adaptTo (Class)'. См. Https://docs.adobe.com/docs/en/cq/5-6-1/javadoc/com/adobe/granite/asset/api/AssetManager.html –

+0

Это сработало, однако, если я это сделаю. assetExists ('/ content/dam/3d-renders/application-notes/wcc-migration/Q60_ILL000347_iAPP.psd') ', он выдает сообщение об ошибке« Нет сигнатуры метода ». Есть предположения? – Blaris

+0

Я не вижу метод 'AssetManager.assetsExists()' в API. 'getAsset()' возвращает null, если ресурс не существует, поэтому вы должны его использовать. И Groovy предоставляет ярлык; ex: 'if (am.getAsset ('blah')) {/ * актив найден * /}'. Хотя, честно говоря, я не знаю, о чём я говорю. Я просто нашел API онлайн и сделал вывод оттуда. –

ответ

0

Попробуйте получить ваш менеджер активов, как это:

AssetManager am = resourceResolver.adaptTo(AssetManager.class) 

ResourceResolver реализует Adaptable, интерфейс, на котором определен метод adaptTo(Class).

Смежные вопросы