package eu.dnetlib.enabling.datastructures;

import java.io.IOException;

import org.apache.commons.io.IOUtils;
import org.springframework.core.io.Resource;

import eu.dnetlib.enabling.annotations.DnetResource;
import eu.dnetlib.rmi.objects.is.DnetDataStructure;
import eu.dnetlib.rmi.soap.exceptions.InformationServiceException;

public class AbstractTextResource implements BaseResource {

	private Resource resource;

	public AbstractTextResource(final Resource resource) {
		this.resource = resource;
	}

	@Override
	public DnetDataStructure asDnetDataStructure() throws InformationServiceException {
		try {
			if (getClass().isAnnotationPresent(DnetResource.class)) {
				final String code = resource.getFilename();
				final DnetDataStructure ds = new DnetDataStructure();
				ds.setCode(code);
				ds.setType(getClass().getAnnotation(DnetResource.class).type());
				ds.setValid(true);
				ds.setName(code);
				ds.setDescription("");
				ds.setContent(IOUtils.toString(resource.getInputStream()));
				return ds;
			} else {
				throw new InformationServiceException("Missing DnetResource annotation in class " + getClass());
			}
		} catch (IOException e) {
			throw new InformationServiceException("Error reading resource " + resource.getFilename());
		}
	}

}
