package eu.dnetlib.enabling.utils;

import java.util.Date;

import org.apache.commons.lang.StringUtils;

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

public class DnetResourceFactory {

	public static DnetDataStructure createDatastructure(final String code, final String name, final Object contentObj) throws InformationServiceException {
		if (contentObj == null) {
			throw new InformationServiceException("contentObj is null");
		} else if (!contentObj.getClass().isAnnotationPresent(DnetResource.class)) {
			throw new InformationServiceException("Missing DnetResource annotation in class  " + contentObj.getClass());
		} else if (StringUtils.isBlank(code)) {
			throw new InformationServiceException("Code is empty for contentObj: " + contentObj);
		} else {
			final DnetDataStructure ds = new DnetDataStructure();
			ds.setCode(code);
			ds.setName(name);
			ds.setType(contentObj.getClass().getAnnotation(DnetResource.class).type());
			ds.setDate(new Date());
			ds.setContentFromObject(contentObj);
			return ds;
		}
	}
}
