/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package edu.harvard.iq.dataverse.harvest.server.xoai;
import com.lyncode.xoai.model.xoai.Element;
import com.lyncode.xoai.dataprovider.repository.SetRepository;
import com.lyncode.xoai.dataprovider.handlers.results.ListSetsResult;
import com.lyncode.xoai.dataprovider.model.Set;
import com.lyncode.xoai.model.xoai.XOAIMetadata;
import edu.harvard.iq.dataverse.harvest.server.OAISet;
import edu.harvard.iq.dataverse.harvest.server.OAISetServiceBean;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
/**
*
* @author Leonid Andreev
*/
public class XsetRepository implements SetRepository {
private static Logger logger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.server.xoai.XsetRepository");
private OAISetServiceBean setService;
public XsetRepository (OAISetServiceBean setService) {
super();
this.setService = setService;
}
public OAISetServiceBean getSetService() {
return setService;
}
public void setSetService(OAISetServiceBean setService) {
this.setService = setService;
}
@Override
public boolean supportSets() {
logger.fine("calling supportSets()");
List<OAISet> dataverseOAISets = setService.findAll();
if (dataverseOAISets == null || dataverseOAISets.isEmpty()) {
return false;
}
return true;
}
@Override
public ListSetsResult retrieveSets(int offset, int length) {
logger.fine("calling retrieveSets()");
List<OAISet> dataverseOAISets = setService.findAll();
List<Set> XOAISets = new ArrayList<Set>();
if (dataverseOAISets != null) {
for (int i = 0; i < dataverseOAISets.size(); i++) {
OAISet dataverseSet = dataverseOAISets.get(i);
Set xoaiSet = new Set(dataverseSet.getSpec());
xoaiSet.withName(dataverseSet.getName());
XOAIMetadata xMetadata = new XOAIMetadata();
Element element = new Element("description");
element.withField("description", dataverseSet.getDescription());
xMetadata.getElements().add(element);
xoaiSet.withDescription(xMetadata);
XOAISets.add(xoaiSet);
}
}
return new ListSetsResult(offset + length < XOAISets.size(), XOAISets.subList(offset, Math.min(offset + length, XOAISets.size())));
}
@Override
public boolean exists(String setSpec) {
//for (Set s : this.sets)
// if (s.getSpec().equals(setSpec))
// return true;
return false;
}
}