Получение существующего ресурса

Для получения ресурса с сервера в первую очередь необходимо создать объект com.ibm.ram.client.RAMAsset. Этот объект представляет метаданные ресурса. Метод getContents() этого объекта возвращает ресурс в виде файла RAS.

Существует несколько способов получения ресурсов с сервера. Для прямого получения ресурса используется метод RAMSession.getAsset(AssetIdentification) (он возвращает ресурс по GUID и номеру версии). Поддерживается символ подстановки '*' для получения последней версии ресурса, соответствующей шаблону (см. Управление версиями ресурса).
                // Получение ресурса по GUID и версии (загрузка метаданных ресурса)
                RAMAsset asset = session.getAsset(new AssetIdentification("{AC0D54C1-E349-69EC-030F-E51CB557B0D7}", "7.1"));
Прим.: Отдельные GUID ресурсов содержат фигурные скобки (см. конкретный GUID ресурса).
После получения ресурса значения его свойств можно читать и изменять соответствующими методами get и set. Например:
                // Проверка метаданных ресурса
                assertEquals("RAM Client API Javadoc", asset.getName());
                assertEquals("Javadoc for the Rational Asset Manager Client API", asset.getDescription());
                assertEquals("Documentation", asset.getAssetType().getName());
                assertEquals("RAM Development", asset.getCommunity().getName());
                assertEquals("Kevin Jones", asset.getOwners()[0].getName());
Для загрузки ресурса в виде файла RAS используется метод getContents():
                // Загрузка содержимого ресурса в виде файла .ras
                ZipInputStream in = null;
                File file = null;
                FileOutputStream output = null;
                byte[] buffer = new byte[100000];
                try {
                        file = new File("D:\\temp\\newAsset.ras"); //$NON-NLS-1$
                        output = new FileOutputStream(file);
                        in = new ZipInputStream(asset.getContents());

                        int read;
                        int start = 0;
                        while ((read = in.read(buffer, start, buffer.length - start)) > -1) {
                                start += read;
                                if (start >= buffer.length) {
                                        output.write(buffer);
                                        start = 0;
                                }
                        }
                        if (start > 0)
                                output.write(buffer, 0, start);
                } finally {
                        try {
                                if (in != null)
                                        in.close();
                        } catch (IOException e) {
                        }
                        try {
                                if (output != null)
                                        output.close();
                        } catch (IOException e) {
                        }
                }

Комментарии