package org.iri_research.renkan.rest;


import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

import javax.ws.rs.Path;

import org.iri_research.renkan.Constants;
import org.iri_research.renkan.models.Space;
import org.iri_research.renkan.repositories.IRenkanRepository;
import org.iri_research.renkan.repositories.SpacesRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.sun.jersey.spi.resource.Singleton;

@Singleton
@Path("spaces")
@Component
public class SpacesResource extends RenkanResource<Space, String> {
	
	@SuppressWarnings("unused")
	private Logger logger = LoggerFactory.getLogger(SpacesResource.class);
	
	private String[] spaceObjectListFieldList = {"created_by","bin_config","image"};
	
	@Autowired
	private SpacesRepository spacesRepository;
		
	@Override
	protected IRenkanRepository<Space, String> getRepository() {		
		return spacesRepository;
	}


	@Override
	protected String getNewId() {
		return Constants.UUID_GENERATOR.generate().toString();
	}


	@Override
	protected void prepareObject(Space obj) {
		if(obj.getCreated() == null) {
			obj.setCreated(new Date());
		}
	}


	@Override
	protected List<String> getObjectListFieldList() {
		ArrayList<String> fieldList = new ArrayList<>(this.baseObjectListFieldList.length + this.spaceObjectListFieldList.length);
		fieldList.addAll(Arrays.asList(this.baseObjectListFieldList));
		fieldList.addAll(Arrays.asList(this.spaceObjectListFieldList));
		return fieldList;
	}


}
