use of com.opentext.ia.sdk.server.configuration.yaml.YamlBasedApplicationConfigurer in project infoarchive-sip-sdk by Enterprise-Content-Management.
the class YamlSipIngester method run.
private void run(String rootPath) throws IOException {
System.out.printf("%nSample 3: Assemble SIP from %s and ingest into InfoArchive%n", rootPath);
// Load the configuration
YamlConfiguration configuration = new YamlConfiguration(new File(rootPath, "configuration.yml"));
// Tell InfoArchive where and how to archive the data
URI entityUri = URI.create(configuration.getPdiSchemaName());
String entityName = "animal";
PackagingInformation prototype = PackagingInformation.builder().dss().application(configuration.getApplicationName()).holding(configuration.getHoldingName()).producer("SIP-SDK").entity(entityName).schema(entityUri.toString()).end().build();
// Define a mapping from our domain object to the PDI XML
XmlPdiAssembler<File> pdiAssembler;
try (InputStream schema = new StringStream(configuration.getPdiSchema())) {
pdiAssembler = new XmlPdiAssembler<File>(entityUri, entityName, schema) {
@Override
protected void doAdd(File value, Map<String, ContentInfo> ignored) {
String name = value.getName();
getBuilder().element("animal_name", name.substring(0, name.lastIndexOf('.'))).element("file_path", relativePath(value, rootPath));
}
};
}
DigitalObjectsExtraction<File> contentAssembler = file -> Collections.singleton(DigitalObject.fromFile(relativePath(file, rootPath), file)).iterator();
// Assemble the SIP
SipAssembler<File> sipAssembler = SipAssembler.forPdiAndContent(prototype, pdiAssembler, contentAssembler);
FileGenerator<File> generator = new FileGenerator<>(sipAssembler, FileSupplier.fromTemporaryDirectory());
File f1 = new File(rootPath, "ape.dat");
File f2 = new File(rootPath, "bear.dat");
File f3 = new File(rootPath, "cobra.dat");
FileGenerationMetrics metrics = generator.generate(Arrays.asList(f1, f2, f3));
File assembledSip = metrics.getFile();
// Get an ArchiveClient instance to interact with InfoArchive.
// In this case, we start with a blank installation, and create a sample holding from scratch that will contain
// the SIP we've just assembled.
// Use ArchiveClients.usingAlreadyConfiguredServer() instead if you already configured the server with application,
// holding, etc.
ArchiveClient archiveClient = ArchiveClients.configuringApplicationUsing(new YamlBasedApplicationConfigurer(configuration), newArchiveConnection(rootPath));
// Ingest the SIP into InfoArchive
try (InputStream sip = Files.newInputStream(assembledSip.toPath(), StandardOpenOption.READ)) {
String aipId = archiveClient.ingestDirect(sip);
System.out.println(" SIP ingested as AIP " + aipId);
}
}
Aggregations