All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.threatconnect.sdk.parser.service.writer.DocumentWriter Maven / Gradle / Ivy

There is a newer version: 2.9.0
Show newest version
package com.threatconnect.sdk.parser.service.writer;

import com.threatconnect.sdk.client.writer.DocumentWriterAdapter;
import com.threatconnect.sdk.client.writer.WriterAdapterFactory;
import com.threatconnect.sdk.conn.Connection;
import com.threatconnect.sdk.model.Document;
import com.threatconnect.sdk.parser.service.save.SaveItemFailedException;
import com.threatconnect.sdk.server.entity.Group.Type;
import com.threatconnect.sdk.server.response.entity.ApiEntitySingleResponse;
import com.threatconnect.sdk.util.UploadMethodType;
import org.apache.commons.io.FileUtils;

import java.io.IOException;

public class DocumentWriter extends GroupWriter
{
	public static final String SUCCESS = "Success";
	
	public DocumentWriter(Connection connection, Document source)
	{
		super(connection, source, com.threatconnect.sdk.server.entity.Document.class, Type.Document);
	}
	
	@Override
	public com.threatconnect.sdk.server.entity.Document saveGroup(final String ownerName, final boolean forceSaveGroup, final boolean saveAttributes,
		final boolean saveTags) throws SaveItemFailedException, IOException
	{
		// first, call the super class' save method
		com.threatconnect.sdk.server.entity.Document document = super.saveGroup(ownerName, forceSaveGroup, saveAttributes, saveTags);
		
		// check to see if there is a file
		if (null != groupSource.getFile() && groupSource.getFile().exists())
		{
			// create the document writer adapter and upload the file
			DocumentWriterAdapter documentWriterAdapter = createWriterAdapter();
			ApiEntitySingleResponse uploadResponse;
			
			logger.debug("Document \"{}\" Status: {}", document.getId(), document.getStatus());
			
			// check to see if this document's file is in a success state
			if (SUCCESS.equals(document.getStatus()))
			{
				// a file already exists and updating it requires PUT
				uploadResponse = documentWriterAdapter.uploadFile(getSavedGroupID(), groupSource.getFile(), ownerName,
					UploadMethodType.PUT);
			}
			else
			{
				// upload a new file using POST
				uploadResponse = documentWriterAdapter.uploadFile(getSavedGroupID(), groupSource.getFile(), ownerName,
					UploadMethodType.POST);
			}
			
			// check to see if this was not successful
			if (!uploadResponse.isSuccess())
			{
				logger.warn("Failed to upload file \"{}\" of size {} for group id: {}",
					groupSource.getFile().getAbsolutePath(),
					FileUtils.byteCountToDisplaySize(groupSource.getFile().length()), getSavedGroupID());
				logger.warn(uploadResponse.getMessage());
			}
		}
		
		return document;
	}
	
	@Override
	protected DocumentWriterAdapter createWriterAdapter()
	{
		return WriterAdapterFactory.createDocumentWriter(connection);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy