IRelatedMetadataDetails
の実装を渡すサンプル・コード
コンシューマは、oracle.integration.console.metadata.model.share.IRelatedMetadataDetailsの実装を渡す必要があります。
IRelatedMetadataDetails
の実装には、リポジトリからリソース・バンドルをロードするためのコードおよびユーザーがルール・アプリケーションに対する変更をコミットするときにバンドル・ファイルを保存するためのコードが含まれます。
コンシューマは、dictionaryName + "Translations_" + locale.toString() + ".xml"
規則を使用して、リソース・バンドル・ファイルの名前を構築する必要があります。
public class MyRelatedMetadataDetails implements IRelatedMetadataDetails { private static final Locale[] LOCALES = { Locale.US, Locale.FRENCH }; private static final String RESOURCE_PATH = "file:///C:/scratch/sumit/system/rules/"; private static final String RESOURCE_BASE = "SimpleRule"; public MyRelatedMetadataDetails() { super(); } public String getDocument(IRelatedMetadataPath relatedPath) { String resourceSuffix = relatedPath.getValue(); try { return loadResource(resourceSuffix); } catch (IOException e) { return ""; } } private static String loadResource(String resourceSuffix) throws IOException { FileInputStream fis = null; FileChannel fc = null; try { URL url = new URL(RESOURCE_PATH + RESOURCE_BASE + resourceSuffix); fis = new FileInputStream(url.getFile()); fc = fis.getChannel(); ByteBuffer bb = ByteBuffer.allocate((int)fc.size()); fc.read(bb); bb.rewind(); return Charset.defaultCharset().decode(bb).toString(); } finally { if (fis != null) { fis.close(); } if (fc != null) { fc.close(); } } } public void createDocument(IRelatedMetadataPath relatedPath, String document) { try { storeResource(relatedPath.getValue(), document); } catch (IOException e) { e.printStackTrace(); } } public void saveDocument(IRelatedMetadataPath path, String document) { try { storeResource(path.getValue(), document); } catch (IOException e) { e.printStackTrace(); } } private static void storeResource(String resourceSuffix, String document) throws IOException { FileOutputStream fos = null; FileChannel fc = null; try { URL url = new URL(RESOURCE_PATH + RESOURCE_BASE + resourceSuffix); fos = new FileOutputStream(url.getFile()); fc = fos.getChannel(); ByteBuffer bb = ByteBuffer.allocateDirect(1024); bb.clear(); bb.put(Charset.defaultCharset().encode(document)); bb.flip(); while (bb.hasRemaining()) { fc.write(bb); } } finally { if (fos != null) { fos.close(); } if (fc != null) { fc.close(); } } } public IRelatedMetadataPathFinderFactory getFinderFactory() { return new RelatedMetadataPathFinderFactory(); } public List<IRelatedMetadataPath> getExisting(IRelatedMetadataPathFinder finder) { List<IRelatedMetadataPath> paths = new ArrayList<IRelatedMetadataPath>(); for (Locale locale : LOCALES) { paths.add(RelatedResourceMetadataPath.buildFromLocale(locale)); } return paths; } public class RelatedMetadataPathFinderFactory implements IRelated`MetadataPathFinderFactory { public IRelatedMetadataPathFinder getResourceFinder() { return new RelatedMetadataPathFinder(); } } public class RelatedMetadataPathFinder implements IRelatedMetadataPathFinder { public String getType() { return null; } public IRelatedMetadataPath matches(oracle.integration.console.metadata.model.share.MetadataPath srcPath, oracle.integration.console.metadata.model.share.MetadataPath matchPath) { return null; } } }