Messages.getInstance().getString(
"CommandLineProcessor.INFO_OPTION_METADATA_DOMAIN_ID_NAME" ), true, false );
WebResource resource = client.resource( metadataImportURL );
FormDataMultiPart part = new FormDataMultiPart();
final String name = RepositoryFilenameUtils.separatorsToRepository( metadataDatasourceFile.getName() );
final String ext = RepositoryFilenameUtils.getExtension( name );
try {
if ( ext.equals( ZIP_EXT ) ) {
ZipInputStream zipInputStream = new ZipInputStream( new FileInputStream( metadataDatasourceFile ) );
ZipEntry entry = zipInputStream.getNextEntry();
while ( entry != null ) {
final String entryName = RepositoryFilenameUtils.separatorsToRepository( entry.getName() );
final String extension = RepositoryFilenameUtils.getExtension( entryName );
File tempFile = null;
boolean isDir = entry.getSize() == 0;
if ( !isDir ) {
tempFile = File.createTempFile( "zip", null );
tempFile.deleteOnExit();
FileOutputStream fos = new FileOutputStream( tempFile );
IOUtils.copy( zipInputStream, fos );
fos.close();
}
if ( extension.equals( METADATA_DATASOURCE_EXT ) ) {
if ( metadataFileInZip == null ) {
metadataFileInZip = new File( entryName );
metadataFileInZipInputStream = new FileInputStream( metadataFileInZip );
}
}
zipInputStream.closeEntry();
entry = zipInputStream.getNextEntry();
}
zipInputStream.close();
part.field( "overwrite", "true".equals( overwrite ) ? "true" : "false", MediaType.MULTIPART_FORM_DATA_TYPE );
part.field( "domainId", domainId, MediaType.MULTIPART_FORM_DATA_TYPE ).field( "metadataFile",
metadataFileInZipInputStream, MediaType.MULTIPART_FORM_DATA_TYPE );
// If the import service needs the file name do the following.
part.getField( "metadataFile" ).setContentDisposition(
FormDataContentDisposition.name( "metadataFile" ).fileName( metadataFileInZip.getName() ).build() );
// Response response
ClientResponse response = resource.type( MediaType.MULTIPART_FORM_DATA ).post( ClientResponse.class, part );
if ( response != null ) {
String message = response.getEntity( String.class );
System.out.println( Messages.getInstance().getString( "CommandLineProcessor.INFO_REST_RESPONSE_RECEIVED",
message ) );
}
} else {
FileInputStream metadataDatasourceInputStream = new FileInputStream( metadataDatasourceFile );
part.field( "overwrite", "true".equals( overwrite ) ? "true" : "false", MediaType.MULTIPART_FORM_DATA_TYPE );
part.field( "domainId", domainId, MediaType.MULTIPART_FORM_DATA_TYPE ).field( "metadataFile",
metadataDatasourceInputStream, MediaType.MULTIPART_FORM_DATA_TYPE );
// If the import service needs the file name do the following.
part.getField( "metadataFile" ).setContentDisposition(
FormDataContentDisposition.name( "metadataFile" ).fileName( metadataDatasourceFile.getName() ).build() );
// Response response
ClientResponse response = resource.type( MediaType.MULTIPART_FORM_DATA ).post( ClientResponse.class, part );
if ( response != null ) {
String message = response.getEntity( String.class );
System.out.println( Messages.getInstance().getString( "CommandLineProcessor.INFO_REST_RESPONSE_RECEIVED",
message ) );
}
metadataDatasourceInputStream.close();
}
} finally {
metadataFileInZipInputStream.close();
part.cleanup();
}
}